多屏互动,AirPlay,无线投屏,AirPlay投屏 Airplay的镜像的发现过程

使用Bonjour,可以参考mDNSResponderjmdns,注册两个服务:airtunesairplayAirplayTxt以及RaopTxt照着demo填写就可以了,也可以根据自己的要求修改其中的值,

需要注意的如下:

airtunes:   “12345@wirelessdisplay” , ”_raop._tcp.”airplay:    “wirelessdisplay” , ”_airplay._tcp.”

参数中”_airplay._tcp.”和’’_raop._tcp.”不可修改。

发布了服务之后,ios设备中应该就可以搜索到Server端了

中油合作案例

协商过程

c-s: pair-setup

s-c: xxx

c-s: pair-verify

s-c: xxx

c-s: fp-setup

s-c: xxx

c-s: fp-setup

s-c: xxx

setup

setup response

setup

setup respnose

pair-setup,pair-verify配对验证,Server端根据收到的信息进行回复,格式类似RTSP

fp-setup(第一次和第二次)Fairplay相关。

第一次setup阶段会收到一大串数据,是按照plist格式生成的,用相应的方法进行解析可以得到ekeyeiv等信息,用于后续的解密。

第二次setup阶段获得type,通过type来判断视频数据或音频数据,通知接收端建立传输通道准备进行音视频数据的发送,加密过的屏幕镜像数据通过指定的端口(一般为7100)发送到接收端。

接收端收到发送过来的数据后进行解密,解密后的数据就可以进行播放了。

中间也可能会有GET_PARAMETERSET_PARAMETER来调整音量等信息。

解密部分目前主要有两种方法:

1.从apptvmacOS获取。

2.从市面上已有的可投屏产品中获取。

AIRPLAY镜像投屏过程中,音视频数据都是加密过的,对于接收端来说,需要正确解密后才能对音视频数据进行处理,音频和视频的解密过程还不一样。音频相对简单一点,视频会复杂一些。这一块的解密过程是没有公开的,是苹果自身的Fairplay DRM协议部分。现在市面上的第三方Airplay接收端无非都是通过逆向过程破解了相关部分。

本文针对音频的处理做一个介绍,音频部分的处理相对简单一点。