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服务)相关推荐

  1. airplay协议开发第2部(介绍接口、视频、音频的操作)

    1 AirplayLibrary项目提供的接口 AirplayLibrary项目编译出Airplay.dll动态库,对外提供的接口函数如下: //=========================== ...

  2. AirPlay协议结构record

    AirPlay协议非官方文档 参考博文 关于airplay协议实现镜像功能研究 They are based on well-known standard networking protocols s ...

  3. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...

  4. 《OpenHarmony 3GPP协议开发深度剖析》之--搜网流程之PLMN选择

    协议开发最大的法宝就是反复阅读3GPP协议标准,然后结合标准梳理信令流程,同时比对modem日志或者ap侧日志,阅读modem侧源码或者ap侧源码.本系列主题在操作系统OpenHarmony 侧即ap ...

  5. wireshark编译基于openflow1.3协议开发

    基于wireshark的openflow1.3二次开发(协议拓展) 一.编译 1.1编译前言 本来按照一个中文博客的过程走的,过程本没有错误,只是是多年以前的流程,所需要的软件已经不一样了,,,各种软 ...

  6. AIRPLAY 协议研究

       AirPlay协议针对苹果设备实现软件层的传输.显示信息交付组的一套私有协议.该技术支持自动地互相发现,互相传输音乐.图片及视频等信息资源文件.此外,AirPlay支持实时传输视频流.音频流功能 ...

  7. 关于airplay协议实现镜像功能研究

    工作中需要研究airplay以实现IOS的镜像服务端,将了解到的内容记录下来. Airplay可以实现将设备中音频.视频.图像通过本地无线网络发送远端设备:Airplay功能实现利用了很多标准协议,包 ...

  8. OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL

    (以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 本文转载自:https://harmonyos.51cto.com/posts/10608 夏德旺 软通动力信息技术( ...

  9. 【ios开发/Xcode】实现登录注册

    [ios开发/Xcode]实现登录注册 实现效果 源代码 实现效果 首先进入初始界面,输入账号Linchuantao,密码Linchuantao,显示登录失败(如下左图),因此需要进行注册,点击左下角 ...

最新文章

  1. AntiXSS - 支持Html同时防止XSS攻击
  2. VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
  3. 使用Git将我的最后一个X提交一起压缩
  4. win7 右键增加打开 powershell选项
  5. 用Java测试多线程代码
  6. 机器学习算法总结--SVM
  7. 产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
  8. [华为机试真题][2014]63.等式变换
  9. 元素可视区client系列(附实例)
  10. 遗传算法c语言代码实验报告,遗传算法的c语言程序
  11. vagrant设置磁盘大小
  12. 渲染101渲染农场完美支持火凤凰插件Phoenix FD
  13. qt 访问共享文件夹_怎样用IP访问局域网共享文件
  14. 全球与中国iNOS 抗体市场深度研究分析报告
  15. 用Python判断手机号码的运营商
  16. 显示器接口_显示器USB接口的作用是什么?为什么会没有反应?
  17. vm virtualbox识别U盘并挂载
  18. Docker竟然还能这么玩?商业级4G代理搭建实战!
  19. 2018年了,希望所有的程序员都能逃过这些梗……
  20. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

热门文章

  1. zxing源码分析——QR码部分
  2. 【 优秀的视频播放和格式转换工具】Leawo Prof. Media for Mac
  3. 2021年复旦大学计算机科学与技术/电子信息/软件工程机试题解
  4. 【堡垒机小知识】堡垒机是硬件还是软件?
  5. 中层干部计算机培训学校,点亮生命之灯——纬二教育集团“中层干部领导力提升”专题培训...
  6. SQL SERVER无法启动 SQL SERVER 代理(已禁用代理XP)事件日志:拒绝访问 ID:324
  7. composer phpword
  8. Git命令:本地项目上传到git码云,新建分支 删除分支 合并分支
  9. switchOmega配置
  10. ps2020/Photoshop软件下载与功能介绍