Airplay属于局域网内异构设备之间分享多媒体数据的一种通讯协议。Airplay设备有客户端和服务器之分,通常将小屏IOS设备实现为Airplay客户端,大屏幕设备实现为Airplay服务器。即iPhone, iPad, iPod通常为Airplay客户端,iTV, Macbook设计为Airplay服务器,在小屏和大屏之间分享视频、照片和音乐。Airplay属于私有协议,版权Apple公司全部。linux
IOS设备的保有量很是大,若是Android机顶盒可以支持IOS设备的Airplay协议,实现为Airplay服务器,可以接收和处理来自IOS设备的多媒体数据(视频、照片和音乐),将能提升Android机顶盒的竞争力。windows
技术点分析:Airplay服务器端包含3个服务:DNS服务发现服务;基于HTTP协议的Airplay服务和基于UDP的Airtunes服务。DNS服务发现服务,在linux系统中有开源的AVAHI库,其余两个服务须要基于Airplay协议去实现。
Airplay客户端:iPhone, iPad, iPod等IOS设备app
Airplay服务器:iTV, Macbook, AndriodTVBoxgoogle
网络:Wifi无线局域网 .net
Airplay服务端包含的协议:DNS服务发现协议、HTTP协议、TCP/UDP协议、Airplay协议设
Airplay服务端包含的服务:DNS服务发现服务、Airplay服务和Airtunes服务code
Servers Name Description Open
AirServer The best app for turning your Mac into an AirPlay screen -
Reflection Turn your Mac or PC into an AirPlay screen -
Banana TV Another app to turn your Mac into and AirPlay screen -
Casual Share Mac AirPlay receiever R
AirMac Turns you Macintosh into an Airplay receiver (Objective C) R
Airstream Media Player C# based AirPlay screen for windows and AirPlay server source code R
Play2Wifi An AirPlay server written in Python R
简要说明一下:实现Airplay,最重要的有两步,第一步是:Airplay服务发布,让IOS设备能发现你;第二步:实现Airplay协议应答, 让IOS设备能和你交互。
Airplay发布服务,Linux系统中原生的Zeroconf协议,用于发布网络服务。Android平台上并不支持Zeroconf协议。因此须要安装Linux版本的Avahi,Avahi是Zeroconf协议的Linux实现。Avahi服务发布管理系统,支持跨进程发布,其中跨进程的数据交互是经过DBUS-Service的。DBUS服务,Android原生系统就自带。
上面介绍了一下系统库的依赖关系,下面介绍一下如何实现吧。
修改DUBS-Service(Andriod)服务的权限,默认是蓝牙才能访问,设置为系统级程序均可以访问。
编写一个新的服务——零配置网络发布服务ZeroconfAvahiService,其中简单封装一下Avahi服务和Avahi-client。并在Android配置文件中,让该服务自启动。
AirplayServer程序中,建立Avahi-client,发布Airplay服务。若是IOS设备能发现您的Android设备,恭喜服务发布成功。
实现AirplayServer实现Airplay协议,完成与IOS设备的图像、视频数据的交互。Coding, Debugging, 总会成功的。
学会了Android平台Airplay的实现方法,屌丝设备能和高富帅设备交互,仍是有一丝惊艳的。不过Airplay不是惟一技术,DLNA,WifiDisplay也有相似功能。
联系客服