原文地址::https://blog.csdn.net/wirelessdisplay/article/details/53463719
相关文章
1、ios开发——AirPlay的琢磨经历----https://blog.csdn.net/zzzzzdddddxxxxx/article/details/51721809
2、iOS下AirPlay投屏功能实现----https://www.jianshu.com/p/99bd1487a8ff
3、AirPlay使用详解----https://www.jianshu.com/p/f8d4c6e4ce6d
4、airplay协议源码及详细协议资料----https://download.csdn.net/download/yc118108824/9863525
前言:
公司在2015年5月立项做一款硬件类产品,使用SOC(CPU+DSP)芯片方案做一款高清会议室终端,除了会议功能之外,需要具备多路无线投屏功能。项目从5月份立项、历经搭建团队、研发、生产、测试,至2016年1月完成一期功能和试产,期间经历很多困难和曲折,现分一个系列做下回顾,本篇讲下Airplay。
Airplay:
关于Airplay的基础知识,大家可以baidu自行搜索,作为入门进行学习。苹果没有开发Airplay具体协议,国外这个网站(http://nto.github.io/AirPlay.html)做了一些破解分析,不是很全面,但可以作为整理了解学习。
Airplay主要有4个部分:图片(iOS9之后采用镜像方式)、视频、音乐、镜像;其中音乐部分,苹果可以通过授权进行合作,其余部分苹果都没有开放。也就是说,现有支持的方式只能是通过破解和学习iPhone-Apple TV之间的信令流程进行仿制开放。这样就会存在问题,每次iOS升级之后,都需要做一些适配工作;由于协议了解的不全面,还未导致一些不常用的功能缺失。现在市面上的大多数支持Airplay协议的智能电视机或机顶盒,或多或少都存在一些问题。
我们公司的产品,作为全球首家支持多路Airplay Server端产品,又是最先支持iOS9的厂家之一(2015/11月份就已支持),在这方面投入了重金和重兵进行了开发,现把开发过程梳理如下
开发过程:
2015/6-2015/7月,学习
这个阶段就是学习,学习,学习。从对Airplay的一窍不通,到知道需要破解,到知道没有任何开源代码支持,到之后可以有部分开源代码+部分破解+部分自研开发,最后形成了完整的解决方案以及第三方合作方案
这个过程中,通过调研,发现破解解密库部分的工作量比较大,且我们的团队中没有类似的人才(需要使用汇编),最后决定和第三方合作进行开发。第三方合作寻找的较为顺利,找了一些公司、也找了一些独立的研发团队,最后在综合考虑之后,和某个独立团队进行了合作。
2015/7-2015/9月,SOC平台的移植,镜像开发
基于这个开源代码(https://github.com/juhovh/shairplay),进行开发,还需要移植一些依赖库。在这个基础上,再开发镜像功能和多路功能。
2015/10-2015/12月,iOS9开发
iOS9和之前的流程差别比较大。解密库部分做了很大的变化,复杂了很多。流程也有了一些变化,图片走了镜像的流程;画面静止后,不会发流等修改;
2016/1月-至今,手机兼容性适配,稳定性优化,iOS10适配等
这方面的工作,在基本功能开发完成之后,就已经开始。
稳定性方面问题还比较多,主要存在在图片、视频、音乐、镜像之间的频繁切换;各个音乐视频播放器的兼容性方面
iOS10的改动并不是很大, 主要在于抓包对比
经验教训:
Airplay开发难度主要在解密库部分,这部分需要破解苹果TV的库,反汇编并修改进行,此部分未节省工作量,我们采用了和第三方合作开发
如果是基于Android平台开发,则视频部分直接调用Android播放器接口即可,省去了很多文件格式、音视频编码的工作量
如果基于Linux平台开发,则播放器部分需要从零开始开发,工作量还是比较大,周期也会比较长。我们当前支持了iOS比较常见的MOV和MP4格式
由于各个音乐播放器也会实现音乐功能,所以还存在了一定量的兼容适配性工作,以我们暂时的观察来看,QQ音乐、网易音乐等实现都不太一样
对技术感兴趣的可以加QQ群讨论:582349005
对我司产品有兴趣的可以访问我司官网
必捷网络无线投屏SDK
————————————————
版权声明:本文为CSDN博主「wirelessdisplay」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wirelessdisplay/article/details/53463719