airplay协议开发第3部(mdnsd注册airplay服务)
发布日期:2021-07-01 04:36:36 浏览次数:2 分类:技术文章

本文共 1549 字,大约阅读时间需要 5 分钟。

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

转载地址:https://mylinux.blog.csdn.net/article/details/88977909 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:内存中数据存储的格式
下一篇:airplay协议开发第2部(介绍接口、视频、音频的操作)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月20日 02时32分33秒