• 前言:

公司在2015年5月立项做一款硬件类产品,使用SOC(CPU+DSP)芯片方案做一款高清会议室终端,除了会议功能之外,需要具备多路无线投屏功能。项目从5月份立项、历经搭建团队、研发、生产、测试,至2016年1月完成一期功能和试产,期间经历很多困难和曲折,现分一个系列做下回顾,本篇讲下Miracast。

  • Miracast:

关于Miracast的基础知识,大家可以baidu自行搜索,作为入门进行学习。如果进入开发阶段,则需要学习三篇白皮书:Wi-Fi_Display_Specification_v1.1、WiFi_P2P_Technical_Specification_v1.2及HDCP Interface Independent Adaptation Specification Rev2_2_FINAL。

我们的产品需求是在SOC芯片上(Linux)实现同时支持多路的Miracast Sink功能。

整个Miracast的过程包括无线链路的建立、呼叫建立、媒体接受、解码、呈现等。本篇范围只包括无线链路建立和呼叫建立过程。

  • 开发过程:

整体开发过程大致如下:

  • 2015/6-2015/7月,学习及X86平台下的技术验证

在这个阶段,前期主要是学习和熟悉Miracast。网上查找资料,采购几款支持Miracast的盒子和dongle,感受使用下Miracast,并通过wireshark,抓包学习下信令流程和媒体信息。

中期主要选型开源代码及无线网卡。开源代码暂时只发现1个(https://github.com/albfan/miraclecast),此项目代码可读性较差、BUG较多、适配性也有问题,但作为学习及技术验证,是不可多得的开源项目。无线网卡的选型较为不顺利,支持P2P的无线网卡较少,且我们还需要要求具备驱动源代码(后续能够移植到SOC芯片上),最后我们拆解了几款dongle,找到了一家不错的供应商,使用了RTL8188进行学习和技术验证。

后期主要完成技术验证。使用RTL8188和miraclecast项目,成功的将三星Note3的画面通过Miracast投屏到X86/Ubuntu的桌面上。由于我们对无线和P2P没有积累,在驱动的编译、无线模块的使用等方面遇到了不少问题,在这里要感谢下瑞昱的FAE。

  • 2015/7-2015/8月,SOC平台的移植,单路解码输出

这个阶段较为顺利,但代码工作量较大。主要工作就是SOC平台移植,包括驱动移植及miraclecast移植,及和主模块的联调。

由于在前期的使用上,对miraclecast已经有了一个大致的判断,所以在这个阶段,对miraclecast做了一个较大幅度的裁剪和重构

最后成功的和主模块完成信令和媒体的联调,在我们的SOC开发板上完成三星Note3画面的输出

  • 2015/8-2015/9月,SOC平台的多路支持,完成基本功能开发

对于多路的支持,国内外暂时还没有看到有成熟或非成熟的方案,也就是说我们是第一个在这方面做研发的公司,是否可行仍然是未知数。

技术验证仍然是在X86/Ubuntu上完成,然后把相关的流程在我们的SOC上通过代码实现。

最后我们同时完成了4款Android手机在我们SOC开发板上的投屏。

这个阶段的代码量不是很大,但技术含量较高,也遇到了不少问题,甚至还产生过是否可行的讨论,瑞昱的FAE表示他们没做过类似项目,再无外界的帮助下,我们靠自身的摸索,完成了这个功能。

  • 2015/9-2015/11月,无线芯片选型及优化

在前期的使用上,我们发现投屏的时候,音视频质量不是很稳定,尤其是在同时多路,且在播放动态画面的时候,卡顿及花屏现象非常严重。通过了解,无线环境对此影响比较大,主要3个方面:网卡本身的性能、无线频段及天线。在此,我们启动了无线芯片选型工作,并找到了6款无线模块做对比测试(瑞昱2款、高通2款、博通2款),并在性能、稳定性、兼容性、价格、供货周期、供应商支持等方面,综合考虑,最后保留了2款备选芯片。

在这里,需要说明的是,没有完美的选择。主要需要考虑我们最看重哪方面。比如说wifi 5G频段的干扰较少,音视频效果比较好,但很多Android低端机并不支持5G。比如高通的无线模块兼容性不错,但FAE支持不给力。等等

  • 2015/10月-至今,手机兼容性适配,稳定性优化等

这方面的工作,在基本功能开发完成之后,就已经开始。这工作是个较长期,没有终点的工作。

兼容性主要在3个方面:P2P、RTSP信令协商、音视频流。很多手机都有自己的实现,小米、魅族、华为等手机都遇到过兼容性问题;同一个品牌,不同的手机型号,也会遇到兼容性问题。如华为MATE8没做适配就以支持,但老款的MATE7、荣耀6就存在兼容性问题。

  • 经验教训:
  • Miracast开发难度主要在2块:P2P及HDCP(暂未支持),后续的难度主要在Android手机兼容及P2P的音视频质量优化
  • 研发过程很痛苦,尤其是未知的前提下,但不要放弃任何一点希望

     技术交流有兴趣请加:

     音视频技术交流群:308601278

     无线投屏技术交流群:582349005

     

     我司有成熟的无线投屏盒子销售,也可做音视频及无线投屏相关产品和技术的定制化开发

     可访问我司官网了解详细情况 必捷网络无线投屏SDK

     商务合作可发邮件marketing@bijienetworks.com

Miracast开发相关推荐

  1. Miracast开发4——-应用层rtsp协议

    Mircacast协议介绍---------应用层rtsp协议 前面说到 Miracast协议框架,以及重点讲了发现的过程,物理层链接链接的过程,IP分配的过程,如果获取对端IP等等.下面我们来讲讲, ...

  2. java知识体系介绍

    国内最牛七星级团队马士兵.高淇等11位十年开发经验专家录制 目 录 百战程序员Java1573题 2百战程序员介绍 3JavaSE编程基础 9第一章 初识Java 9阶段项目课程1 11第二章 数据类 ...

  3. Android中开发DLNA,Miracast对比

    Android中开发DLNA,Miracast对比 需求是在android 9.0上实现投屏,手机,高通平台. 主流的投屏技术:Miracast,DLNA,AirPlay. Google主推的goog ...

  4. dlna和miracast可以共存吗_AirPlay、DLNA、Miracast三大无线技术介绍

    在昨天的小米盒子发布会上,小米官方称小米盒子的米联功能可以将小米手机或iPhone.iPad上的图片.音乐.视频等精彩内容投射到电视上,让你感受大屏的刺激.而小米盒子能实现这一技术主要依靠的是Airp ...

  5. W3C近期要闻:与Mozilla MDN合作联合开发Web平台文档

    作者 | W3C中国 「OpenWeb开发者」依托于BOW(Brillant Open Web)团队,是一个专门的 Web 技术建设小组,致力于推动 Open Web 技术的发展,将不定期为读者同步W ...

  6. 在android系统中开发DLNA

     内容目录 Part 1. 前言:DLNA简介 Part 2. 主体:DLNA在android中的开发流程 Part 2. 关于DLNA的其他知识 Part 1. 前言:DLNA简介 DLNA,D ...

  7. dlna和miracast可以共存吗_Airplay、Miracast、DLNA传输原理的底层搭建

    Airplay.Miracast.DLNA传输原理的底层搭建 上一篇小编在<手机无线投屏的技术干货>一文中,跟大家介绍了Airplay.Miracast.DLNA.这三种传输效果和应用上的 ...

  8. Android Wi-Fi Display(Miracast)介绍

    Android Wi-Fi Display(Miracast)介绍 2012年11月中旬,Google发布了Android 4.2.虽然它和Android 4.1同属Jelly Bean系列,但却添加 ...

  9. DLNA(媒体共享)、Airplay(IOS系统的镜像以及共享)、Miracast(屏幕镜像)

    DLNA:DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟),由索尼.英特尔.微软等发起成立.旨在解决个人电脑,消费电器,移动设备在内的无线网络和有线网络的互联互通.如 ...

最新文章

  1. ogre3d环境配置与简单程序示例
  2. 也谈架构:百万pv项目与虚拟化
  3. Linux设备驱动中的ioctl
  4. hdu4416 Good Article Good sentence (后缀数组)
  5. SQL Server pivot行列转换案例分析
  6. Qt学习笔记之样式表
  7. PAT (Basic Level) 1035 插入与归并(模拟)
  8. android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...
  9. 中兴、深度、中国电子打造 UOS 统一操作系统:开源、支持龙芯和海思等国产处理器
  10. 谷歌云TPU上可以用Julia啦!0.23秒跑100张图片,Jeff Dean点赞推荐
  11. 关于JS特效的兼容问题。
  12. python机器学习库xgboost使用调参
  13. FRABA绝对值编码器OCD-EX1007-250612
  14. 手机QQ2009(塞班第三版)聊天记录提取完全代码
  15. Android设备给Android设备刷固件
  16. dell笔记本指示灯闪烁_了解戴尔笔记本电脑上的报警音
  17. 9月程序员新书:每一本拿出来都堪称经典,如:图灵奖获得者经典书
  18. 资源暂时不可用错误(Out of memery)完美解决方案
  19. 前端网络请求的错误处理
  20. 计算机显卡怎样安装方法,电脑装机小知识,新手如何正确安装好独立显卡

热门文章

  1. 二分查找,查指定值、小于或等于k的最大值,大于或等于k的最大值
  2. 通过PS神还原“宫崎骏”式的动漫真人效果
  3. 美云智数——推动人才供应链重要战略部署
  4. 测试角色管理--测试经理岗
  5. 压铸模具计算机台吨位公式,如何根据产品计算压铸机吨位
  6. java(若依)防止表单重复提交
  7. win10主题更换_Win10又双叒叕更新!7个新功能我一眼就爱上了。
  8. java毕业设计远程教育系统Mybatis+系统+数据库+调试部署
  9. SaleaeLogic 16 逻辑分析仪的安装及使用【对 I2C、SPI、串口的信号进行测量】
  10. Java 合并PDF文件