0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

iOS Airplay Screen Mirroring 同屏技术详解

LiveVideoStack 来源:未知 作者:邓佳佳 2018-03-20 15:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

投屏技术已经被大量用在身边的产品,比如电视投屏,投影仪,视频会议产品中。 在iOS平台外的其他平台中都已经有非常成熟的标准和实现。但在封闭的苹果iOS和Mac系统中,苹果使用私有的Airplay协议进行多屏互动,只开放给自己生态中的产品。对此相关技术限制比较严格,甚至在iOS9中加上了更严格的加密算法,直接导致很多投屏的产品不可用。

iOS中的投屏方案

1.ReplayKit

iOS9中引入了ReplayKit, 让开发者有了一定的获取屏幕数据的能力. 并在iOS10和iOS11中继续扩展了ReplayKit的能力. 但还是有很大的限制, 比如在使用ReplayKit的api时只能录制当前应用的应用, 无法在应用进入后台之后继续录屏. 如果使用系统级别的屏幕录制,又无法获得每一帧的数据,只能获得最后录取的单个视频. 这样对第三方的开发有了非常大的限制.

2.Airplay

Airplay是苹果提供的一种多屏互动技术, 可以将音频照片,视频, 屏幕从iOS设备或者Mac电脑上投射到支持airplay接受的设备上,如Apple TV。这样可以将小屏映射到大屏,可以无线音乐,可以图片分享等等. 但是Airplay属于苹果私有协议方案,设备间的协商与传输过程都进行了加密处理,并不能用于其他平台中。我们已经完整的逆向了Airplay的全部协议栈,并破解了其加密方案,可以提供跨平台Airplay接收方案。这样可以方便实现跨平台的多屏共享。

同时,通过研究,我们也可以通过Airplay Mirroring技术,做到在iPhone上把自己的屏幕的内容投送给当前iPhone,在某些情况下这种airplay的破解却非常有用处,比如手游直播。这中投屏方案使用了iOS原生的投屏能力,并且是完全的软件方案,非常方便进行集成和使用。

Airplay Mirroring实现原理

下面将介绍Airplay Mirroring接收端的实现原理,并揭示相关协议交互过程。

Airplay Mirroring客户端的同屏交互过程,分为三个主要步骤:

设备广播与发现

信息交互与能力协商

音视频数据接收与解扰

设备广播与发现

Airplay设备间的广播与发现通过Bonjour协议进行。Bonjour也被称为ZeroConf, mDNS等,可以用来在局域网内进行数据记录广播与发现。该协议比较成熟,网上可以找到诸多介绍。对于实现的Airplay(包括Mirroring)接收端而言,首先需要注册两类服务,即airtunes和airplay。 Airtunes服务主要用来处理广播视音频接收能力协商,是最为重要的服务内容,对应Bonjour记录名称为'_raop._tcp',注册服务端口不限,一般为了避免冲突,建议采用较高的端口数;Airplay服务主要用来兼容传统的streaming等服务,对应记录名称为'_airplay._tcp',注册端口一般为7000。

具体的服务广播内容,可以进行局域网抓包,找到对应记录内容。

当接收端通过Bonjour广播器服务能力后,发送端(如iPhone等各类iOS设备)就可以发现该接收端。

信息交互与能力协商

当发送端发现接收端后,可以开始信息交互与能力协商过程。该部分协议协议格式类似rtsp协议格式。主要分为两个阶段,设备匹配与和能力协商。

当发送端链接服务端后,设备匹配过程即开始。通信双方会进行fairplay加密协议进行信息交换,当完成信息交换后,客户端后续必须使用这部分信息来处理加密过的密钥,才能获得进一步视音频解密密钥。在iOS9之后,在fairplay过程之前,增加一个设备匹配过程,即pair-setup、pair-verify过程,其主要算法是较为标准的非对称公钥交换算法。

当两端成功匹配后,开始进行能力协商与信息交换,这些信息包括,设备名称、代号,音视频接收相关端口配置,视频接收能力以及加密密钥等,相关信息使用binary plist格式进行封装。

可以参考https://github.com/espes/Slave-in-the-Magic-Mirror找到相关协议交互的一些细节。

音视频数据接收与解密

双方协商成功后,发送端开始向接收端发送视音频数据,mirroring数据是通过TCP进行发送,为h.264 ES流格式。音频是通过RTP协议进行发送,根据内容的不同音频编码为ALAC或者AAC-ELD。

音视频流都是通过AES进行了加密处理,密钥需要通过上面一步的进过信息交互后的fairplay模组对setup过程中接收到的加密密钥进行解密,获得的AES解密需要的IV和KEY,然后经过AES解扰,即可以获得最终的视音频清流。

其他需要注意的地方

Airplay没过Session传送过来的视频h264码流,只有开头一个关键帧. 因此这种情况并不适合直播这种需要固定GOP的场景. 还需要做进一步的转码的工作,或者直接在压缩域进行处理,获得合理的GOP结构。

我们对Airplay相关协议的逆向工程已经封装成了跨平台的类库和框架, 支持windows/Mac/Android/iOS/linux, 在自己内部产品中使用已经非常稳定, 如果有需要可以联系我们. 也欢迎各类技术与应用场景讨论。我的邮箱leeoxiang#http://gmail.com

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3400

    浏览量

    155191

原文标题:iOS Airplay Screen Mirroring 同屏技术详解

文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    解析液晶模块的技术架构和关键作用

    在现代电子设备中,液晶(lcd screen)作为信息呈现的载体,其性能表现直接影响用户体验。然而,真正决定显示效果和可靠性的核心技术是LCM(LCD Module),即液晶模块。本文将深入探讨LCM的
    的头像 发表于 12-05 17:08 917次阅读
    解析液晶模块的<b class='flag-5'>技术</b>架构和关键作用

    生成式AI赋能虚拟调试——fe.screen-sim的架构价值

    生成式AI赋能虚拟调试——fe.screen-sim的架构价值
    的头像 发表于 12-04 14:59 581次阅读
    生成式AI赋能虚拟调试——fe.<b class='flag-5'>screen</b>-sim的架构价值

    成渝芯,共振 | 普迪飞与您共聚ICCAD-Expo 2025

    2025年11月20日-21日将在成都举办“成渝集成电路2025年度产业发展论坛暨第三十一届集成电路设计业展览会(ICCAD-Expo2025)”。本届大会以“成渝芯,共振”为主题,将深入探讨
    的头像 发表于 11-14 17:29 2954次阅读
    成渝<b class='flag-5'>同</b>芯,<b class='flag-5'>同</b><b class='flag-5'>屏</b>共振 | 普迪飞与您共聚ICCAD-Expo 2025

    大彩讲堂:VisualHMI-LUA教程-on_screen_change回调函数使用指南

    on_screen_change回调函数使用指南
    的头像 发表于 08-31 16:32 593次阅读
    大彩讲堂:VisualHMI-LUA教程-on_<b class='flag-5'>screen</b>_change回调函数使用指南

    多接口扩展坞加充电宝方案

    AirPlay、miracast、DLNA等无线功能。 5.支持苹果手机和部分安卓手机安卓平板有线(通过type-c内USB2.0或
    的头像 发表于 08-28 11:35 536次阅读
    多接口扩展坞加充电宝方案

    fe.screen-sim 助力汽车转向系统测试设备的高效交付

    在汽车智能制造领域,虚拟调试正逐步从“辅助工具”转变为“流程核心”。德国科罗世(KlotzGmbH)公司通过fe.screen-sim平台,将虚拟调试深度融入设备交付流程,实现了约90%的项目在线
    的头像 发表于 08-15 14:32 691次阅读
    fe.<b class='flag-5'>screen</b>-sim 助力汽车转向系统测试设备的高效交付

    盟通科技与德国F.EE集团达成战略合作,推广fe.screen-sim虚拟调试软件

    近日,盟通科技正式宣布与德国F.EE集团达成战略合作关系,并成为其fe.screen-sim虚拟调试软件的授权推广及技术服务合作伙伴。此举标志着双方将携手推动高性能工业仿真平台在制造业中的应用落地
    的头像 发表于 08-01 16:48 1007次阅读
    盟通科技与德国F.EE集团达成战略合作,推广fe.<b class='flag-5'>screen</b>-sim虚拟调试软件

    佛瑞亚集团旗下品牌Appning与4screen达成合作

    4screen是全球首个实现驾驶员与周边环境无缝连接的平台,使品牌能够通过车载显示,实时触达在途的驾驶员。此次合作旨在为驾乘者提供个性化、情境感知的推荐服务,同时确保汽车制造商能够始终掌控用户界面。
    的头像 发表于 07-16 17:55 813次阅读

    媒体查询详解

    。 round-screen屏幕类型,圆形屏幕为true,非圆形屏幕为false。 dark-mode系统为深色模式时为true,否则为false。场景示例 下例中使用媒体查询,实现屏幕横竖切换
    发表于 06-25 08:26

    从矢量降噪到双向传,时空壶 W4Pro 如何重构 AI 技术标准?

    在AI技术领域竞争日趋白热化的当下,时空壶W4Pro凭借其一系列开创性技术,尤其是矢量降噪与双向技术,犹如一颗璀璨的明星,在众多同类
    的头像 发表于 06-05 10:29 703次阅读
    从矢量降噪到双向<b class='flag-5'>同</b>传,时空壶 W4Pro 如何重构 AI <b class='flag-5'>同</b>传<b class='flag-5'>技术</b>标准?

    CY7C65215使用IOS中的USB CDC UART类驱动程序是否可以与IOS一起工作?

    我知道 CY7C65215 没有适用于 IOS 的驱动程序。但是,使用 IOS 中的 USB CDC UART 类驱动程序是否可以与 IOS 一起工作? 我们正在考虑在我们的设备中安装 CY7C65215 而不是 FTDI US
    发表于 04-30 07:57

    DLPDLCR230NPEVM如何更改splash screen

    做项目需要投影仪投影几张固定的图片,查阅了论坛中有人有相似的问题,他的是2000evm。咨询了他,他寻求了技术支持重新生成了固件,用SPI烧写器更换固件就可以改变内置的splash screen
    发表于 02-21 15:31

    如何通过IIC对DLPDLCR2000 evm评估板中修改splash screen

    预实现功能:控制投影仪输出4中不同大小的1:1图像。 实现方案:查阅了相关资料,了解DLPDLCR可以存储4张splash screen,准备通过IIC修改splash screen图像,然后通过
    发表于 02-21 07:02

    连接上DLP4710 EVM之后,想要更改GUI的splash screen出现报错怎么解决?

    现在连接上DLP4710的EVM之后,想要更改GUI的splash screen,但是最终报警:Validate selected splash image Files error! 请问我的步骤
    发表于 02-19 07:07

    为什么 Chromecast、Airplay 和蓝牙不能和睦相处?

    的 DigiKey 博客] ,就会知道我是向后兼容的支持者,也是格式战的批评者。不过我也明白,关于生态系统的工程讨论往往归结为预算、技术、硬件、物流、编程、知识产权和规划。以 Chromecast、Airplay、蓝牙和 Wi-Fi 为代表的无线通信就是很好的例子。 兼容
    的头像 发表于 01-25 16:53 911次阅读
    为什么 Chromecast、<b class='flag-5'>Airplay</b> 和蓝牙不能和睦相处?