airplay协议开发第3部(mdnsd注册airplay服务)
1 服务注册
Airplay通过mdnsd对外发布2个服务,在发布服务的时候,说明自己支持的功能。例如,在发布 raop服务的时候,会说明传输音频是使用UDP还是TCP。
那么,手机在发现raop服务之后,获取到这些信息,就可以根据设备提供的属性接口,决定以怎么样的操作与设备进行通信。
例如,设备的raop服务定义了使用UDP传输音频数据,那么,手机把音频推送给设备的时候,就使用UDP进行传输。
1.1 配置airplay支持的功能
Airplay程序通过mdnsd服务对外发布roap和airplay这样的2个服务。其中,在发布airplay服务的时候,配置了如下的信息:
name: Apple TV
type: _airplay._tcp
port: 7000
txt:
deviceid=58:55:CA:1A:E2:88
features=0x39f7
model=AppleTV2,1
srcvers=130.14
其中 port 是当前airplay服务监听的端口号。features就是当前airplay所支持的特性。features属性的定义如下:
我们深入分析这些属性,有:
(1) 第7个字节,指定了mirroring的支持,所以,如果不设置这个属性,那么,在手机端的airplay镜像中,搜索不到设备。
设置了这个属性之后,手机端的airplay镜像扫描功能,就可以扫描到设备。
screen rotation supported --- 支持屏幕旋转
slideshow supported --- 幻灯片支持
1.2 支持镜像
mirror镜像的工作流程如下:
(1) 设备通过mdnsd对外发布服务的时候,发布了airplay服务,其中,名称指出“自己是否支持mirror投屏”。如果自己配置为“不支持mirror投屏”,那么,当手机发现设备的时候,指定设备部支持mirror投屏,那么,手机在扫描投屏设备的界面,是不会发现设备的出现。
(2) 如果设备配置自己“支持投屏”,那么,手机在扫描投屏设备的时候,扫描到该设备,就在投屏UI界面显示该设备名称。
在 airplay服务发布的时候,features属性的第7位定义是否支持投屏。有:
(1) 设置为0,表示不支持投屏;
(2) 设置为1,表示支持投屏;
1.3 支持推送
所谓的“推送”功能,就如同DNLA一样,手机通过airplay通信协议,把需要播放的视频URL地址提交给设备,设备得到需要播放的URL之后,就调用系统的FFplayer播放器来播放URL。
推送功能的工作流程如下:
(1) 手机通过mirror投屏到设备;
(2) 手机打开视频APP,此时,视频APP的通过airplay协议知道设备支持“推送”功能,那么,就与airplay服务进行通信,把需要播放的URL地址通过 POST /play命令发送给设备,同时,在raop服务中,关闭停止mirror投屏的播放。
在进行推送 POST /play之前,如果手机是进行投屏,而且有音频输出。此时,设备的mirror服务和raop中启动的音频服务都启动,那么,就需要关闭给mirror服务和raop在音频服务的数据流播放。
关闭之后,POST /play推送播放的URL视频地址。
那么,设备是否支持“推送”功能,是由设备在发布airplay服务的时候,配置设备是否支持推送功能。
在发布airplay服务的features属性中,第0个字节指定“video supported”,这个属性定义了是否支持推送功能,有:
(1) 设置为0,表示不支持推送功能;
(2) 设置为1,表示支持推送功能;
更多讨论,可以加QQ 1523520001
airplay协议开发第3部(mdnsd注册airplay服务)相关推荐
- airplay协议开发第2部(介绍接口、视频、音频的操作)
1 AirplayLibrary项目提供的接口 AirplayLibrary项目编译出Airplay.dll动态库,对外提供的接口函数如下: //=========================== ...
- AirPlay协议结构record
AirPlay协议非官方文档 参考博文 关于airplay协议实现镜像功能研究 They are based on well-known standard networking protocols s ...
- 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...
- 《OpenHarmony 3GPP协议开发深度剖析》之--搜网流程之PLMN选择
协议开发最大的法宝就是反复阅读3GPP协议标准,然后结合标准梳理信令流程,同时比对modem日志或者ap侧日志,阅读modem侧源码或者ap侧源码.本系列主题在操作系统OpenHarmony 侧即ap ...
- wireshark编译基于openflow1.3协议开发
基于wireshark的openflow1.3二次开发(协议拓展) 一.编译 1.1编译前言 本来按照一个中文博客的过程走的,过程本没有错误,只是是多年以前的流程,所需要的软件已经不一样了,,,各种软 ...
- AIRPLAY 协议研究
AirPlay协议针对苹果设备实现软件层的传输.显示信息交付组的一套私有协议.该技术支持自动地互相发现,互相传输音乐.图片及视频等信息资源文件.此外,AirPlay支持实时传输视频流.音频流功能 ...
- 关于airplay协议实现镜像功能研究
工作中需要研究airplay以实现IOS的镜像服务端,将了解到的内容记录下来. Airplay可以实现将设备中音频.视频.图像通过本地无线网络发送远端设备:Airplay功能实现利用了很多标准协议,包 ...
- OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 本文转载自:https://harmonyos.51cto.com/posts/10608 夏德旺 软通动力信息技术( ...
- 【ios开发/Xcode】实现登录注册
[ios开发/Xcode]实现登录注册 实现效果 源代码 实现效果 首先进入初始界面,输入账号Linchuantao,密码Linchuantao,显示登录失败(如下左图),因此需要进行注册,点击左下角 ...
最新文章
- AntiXSS - 支持Html同时防止XSS攻击
- VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
- 使用Git将我的最后一个X提交一起压缩
- win7 右键增加打开 powershell选项
- 用Java测试多线程代码
- 机器学习算法总结--SVM
- 产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
- [华为机试真题][2014]63.等式变换
- 元素可视区client系列(附实例)
- 遗传算法c语言代码实验报告,遗传算法的c语言程序
- vagrant设置磁盘大小
- 渲染101渲染农场完美支持火凤凰插件Phoenix FD
- qt 访问共享文件夹_怎样用IP访问局域网共享文件
- 全球与中国iNOS 抗体市场深度研究分析报告
- 用Python判断手机号码的运营商
- 显示器接口_显示器USB接口的作用是什么?为什么会没有反应?
- vm virtualbox识别U盘并挂载
- Docker竟然还能这么玩?商业级4G代理搭建实战!
- 2018年了,希望所有的程序员都能逃过这些梗……
- Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)
热门文章
- zxing源码分析——QR码部分
- 【 优秀的视频播放和格式转换工具】Leawo Prof. Media for Mac
- 2021年复旦大学计算机科学与技术/电子信息/软件工程机试题解
- 【堡垒机小知识】堡垒机是硬件还是软件?
- 中层干部计算机培训学校,点亮生命之灯——纬二教育集团“中层干部领导力提升”专题培训...
- SQL SERVER无法启动 SQL SERVER 代理(已禁用代理XP)事件日志:拒绝访问 ID:324
- composer phpword
- Git命令:本地项目上传到git码云,新建分支 删除分支 合并分支
- switchOmega配置
- ps2020/Photoshop软件下载与功能介绍