Miracast/音视频处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wirelessdisplay/article/details/54708215

· 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的过程包括无线链路的建立、呼叫建立、媒体接受、解码、呈现等。本篇只针对Miracasr相关的音视频处理做一些介绍。

     在RTSP流程中,有几个步骤是协商音视频参数的,具体的看前几篇文章和spec。媒体数据最终通过ts over rtp传输。其中视频为H264编码,音频可支持LPCM,AAC,AK3。其实针对TS流的接收,demux,解码,音频播放和视频呈现应该说已经很成熟了,也不存在技术难点,这是纯粹的多媒体处理的内容,本文再此不做详细阐述,只做简要介绍注意需要实现过程中需要注意的一些点。

SINK接收RTP数据

      TS Over RTP的接收以及demux各位同学在很多开源解决方案中都能找到答案,FFMPEG,VLC,Live555等都有实现,可参考实现,再此也不说了。

  在Mira中,媒体数据是通过无线传输过来的,无线较容易受环境等干扰,容易引入传输的抖动。针对抖动处理,其实也都有比较成熟的解决方案。基本的思路都是引入Jitterbuffer来消除抖动,使播放过程能够平滑,各大开源解决方案中都有类似的处理,各位看官可以参考并根据自身的情况进行优化。

  另外无线传输受环境等影响,会有丢包的情况出现。针对丢包的处理,视频可进行I帧请求来快速恢复视频画面,可参考spec中针对wfd-idr-request的描述。

  

音频处理

  可选音频编码格式如下表所示

  其中LPCM是一个基本项,必须要支持,其中WIN10使用WIDI投屏仅支持LPCM。

  在我司的产品中尽可能的协商为AAC 2channels。但在实际的开发过程中发现少数终端也会出现协商不一致的情况,如小米某几款终端协商为AAC 2channels,但实际上行的TS流为6声道的。建议尽可能从TS流中的媒体元信息中去判断声道数。

 

视频处理

  H264视频数据的解码和呈现再此也不详述了,可以在使用X264,FFMPEG等解码和处理,Android系统使用MediaCodec+surface,其它如海思等解决方案中都有相关SDK进行支持。

  视频数据如果出现丢包等情况,可以使用I帧请求快速恢复画面。在上文中已经提到


 

     技术交流有兴趣请加:
     音视频技术交流群:308601278
     无线投屏技术交流群:582349005
     
     我司有成熟的视频会议/视频监控/视频调度/无线投屏盒子销售,也可做音视频相关产品和技术的定制化开发
     有需要可发邮件[email protected]



 

     

     技术交流有兴趣请加:
     音视频技术交流群:308601278
     无线投屏技术交流群:582349005
     
     我司有成熟的视频会议/视频监控/视频调度/无线投屏盒子销售,也可做音视频相关产品和技术的定制化开发
     有需要可发邮件[email protected]


猜你喜欢

转载自blog.csdn.net/wirelessdisplay/article/details/54708215