Miracast由WiFi联盟制定,以WiFi-Direct、IEEE802.11为无线传输标准,允许手机向电视或其他接收设备进行无线投送视频、图片。和Miracast类似的投屏协议,还有Airplay、DLNA、chromecast等,现在主要对今天主角Miracast协议展开分析。

目录

一、Miracast通信架构

二、设备发现

1、WiFi-P2P

2、TDLS

3、Infrastructure

三、音视频支持格式

1、音频支持格式

2、视频支持格式

四、会话流程分析

1、会话流程

2、会话管理

3、媒体协商

4、音视频传输链路

五、时钟同步

六、数据包格式

1、WFD数据格式

2、TS打包流程

3、数据包层级关系

七、切换传输协议

1、UDP切换TCP

2、SET_PARAMETER应答码

八、RTSP方法与示例

1、双端支持的RTSP方法

2、RTSP数据包示例


一、Miracast通信架构

Miracast基于WiFi P2P,或TDLS,或Infrastructure进行设备发现,位于OSI模型的数据链路层。而媒体传输控制使用RTSP协议,还有远程I2C数据读写、UIBC用户输入反向信道、HDCP高带宽内容保护等,位于OSI模型的TCP/IP传输控制层与网络层。其中,由音视频数据封装成PES包,经过HDCP内容保护,再封装成TS包,接着封装成RTP包,使用RTSP协议发送。如下图所示:

二、设备发现

Miracast支持三种设备发现形式:WiFi-P2P、TDLS、Infrastructure。

1、WiFi-P2P

P2P是点对点连接,基于WiFi-Direct实现WiFi直连,不需要经过无线热点。如下图所示:

2、TDLS

TDLS,全称Tunneled Direct Link Setup,隧道直连建立,通过AP(Access Point)或者GO(Group Owner)连接。如下图所示:

3、Infrastructure

Infrastructure经过AP无线热点,通过组播实现设备发现服务。如下图所示:

三、音视频支持格式

1、音频支持格式

音频支持的格式包括: LPCM、AAC-LC、AC-3、E-AC-3、Dolby TrueHD、AC-4、MPEG-4 AAC、MPEG-H 3D Audio等。其中,采样率、采样位数、声道数有所限制。如下图所示:

2、视频支持格式

视频支持格式包括:H264、HEVC。其中,H264的profile支持CBP(Constraint Baseline Profile)和RHP(Restrict High Profile)两种。对比CBP和RHP可以看出,CBP只支持I帧P帧、CAVLC、YUV420P等。如下图所示:

四、会话流程分析

会话是WFD Source与WFD Sink双端交互,这里主要讲解会话流程、会话管理、媒体协商、音视频传输链路。

1、会话流程

会话流程包括:服务发现、建立连接、媒体协商、设置参数、媒体流传输、RTSP控制命令。具体如下图所示:

2、会话管理

设备发现、服务发现、建立连接这三步运行在MAC层。用户输入反向信道、媒体协商、码流控制、内容保护这四步运行在LLC层。如下图所示:

3、媒体协商

媒体协商是Source和Sink双端发送OPTIONS、SET_PARAMETER进行媒体能力交换。如下图所示:

4、音视频传输链路

音视频发送端链路自底向上:WiFi PHY->WiFi MAC->LLC,经过音视频编码、加密、打包,最后使用TCP/IP网络传输。接收端链路:接收数据包后,经过拆包、解密、解码,最后渲染。如下图所示:

五、时钟同步

发送端在音视频编码时,加入PCR时钟,然后音视频流打包时加入主时钟,经过无线传输。接收端收到数据后进行拆包,加入从时钟用于时钟同步,得到音视频流再解码渲染。如下图所示:

六、数据包格式

1、WFD数据格式

WFD数据包由IP头、UDP头、RTP头、TS媒体包组成,共1356字节。其中,单个TS包为188字节。如下图所示:

2、TS打包流程

TS打包流程:音视频数据->PES打包->HDCP内容加密->形成TS,即Transport Stream传输流。如下图所示:

3、数据包层级关系

RTP包的payload是TS包,而TS包的payload是PES包,层级关系如下图:

七、切换传输协议

1、UDP切换TCP

媒体流传输过程中,允许实时切换传输协议。UDP切换TCP,首先发送SET_PARAMETER请求:wfd2_transport_switch: RTP/AVP/TCP,然后发送SETUP请求交换端口,如下示意图:

2、SET_PARAMETER应答码

在SET_PARAMETER应答时,相关应答码如下表:

应答码 描述
400 RTSP语法错误
401 RTP端口不可用
404 无效参数(不在媒体协商中)
415 不支持的格式
451 未知参数
453 超出码率
457 不支持的profile或level
458 无法更新参数
465 未知原因
552 不接受修改分辨率
553 不接受修改帧率

八、RTSP方法与示例

1、双端支持的RTSP方法

WFD Source和Sink双端支持的RTSP方法如下。其中,Source发送支持OPTIONS、org.wfa.wfd1.0、SET_PARAMETER、GET_PARAMETER,而Sink发送端在Source端基础上,还支持SETUP、PLAY、PAUSE、TEARDOWN。具体如下表:

2、RTSP数据包示例

RTSP数据包从M1到M7类型,还有M16类型,示例如下:

Miracast投屏协议深入剖析相关推荐

  1. 投屏协议以及投屏的测试点

    无线投屏: 可以将会议内容.多媒体文件.游戏画面.电影.视频画面投放到另一面屏幕上呈现,进行互动而不需要各种连线,摆脱束缚享受更快捷.更自由的投屏体验.无线投屏技术已经与我们的生活息息相关,为工作和娱 ...

  2. [转] Android Miracast投屏入门

    原文:https://www.codetd.com/article/12138544 哇,打开新世界了. SOS--遇到问题查看资料,中英文该看的都不落下. 官配1. AOSP源码: Miracast ...

  3. 镜像miracast投屏软件_什么是Miracast投屏,Miracast是怎么投屏的?

    原标题:什么是Miracast投屏,Miracast是怎么投屏的? 什么是Miracast投屏,Miracast是怎么投屏的? 我经常说手机.电脑.电视利用Miracast投屏,那么有人了解Mirac ...

  4. Miracast投屏反控原理

    Miracast投屏反控 一. Miracast介绍 Miracast是对支持Wi-Fi Display功能设备的认证名称,也就是通过Miracast认证的设备应该都支持Wi-Fi Display功能 ...

  5. 镜像miracast投屏软件_创维电视上没有Miracast功能,怎么解决投屏问题?

    创维电视上没有Miracast功能,怎么解决投屏问题? 当下主流的投屏协议就是Miracast和Airplay屏幕镜像以及DLNA.而大多数的电视机投屏都是利用自带的Miracast功能. Mirac ...

  6. Android Miracast投屏入门

    哇,打开新世界了. SOS--遇到问题查看资料,中英文该看的都不落下. 官配1. AOSP源码: Miracast Sink端源码最早出现在Android 4.2.2上,通过googlesource可 ...

  7. Android Miracast 投屏

    从事Connectivity模块几年时间了,Team负责集成包括WiFi/Bluetooth(A2DP Source/Sink,HID[key/Audio],OPP,SPP)投屏类[Miracast, ...

  8. 投屏协议与rtsp协议

    投屏协议 以实时性来说,需要用到rtsp协议,实时性较高,各方面是比较符合抓取后投送到大屏上的,无论大屏用的dlna还是miracast,rtsp协议是少不了的,那么,做一个rtspserver 就是 ...

  9. 星宸科技SSD202D芯片+无线投屏协议在摩托车智能仪表,电动车智能仪表批量出货。

    星宸科技股份有限公司(前身MStar)的嵌入式CPU芯片SSD202D,SSC8826Q等在摩托车仪表.电动车智能仪表产品大批量出货,支持无线蓝牙.WIFI无线投屏,行车记录仪等功能.产品得到摩托车爱 ...

最新文章

  1. Android应用如何开机自启动、自启动失败原因
  2. docker php composer 使用_宿主机nginx与docker的PHP搭配使用
  3. TypeError: 'module' object is not callable 原因分析(python模块导入注意事项)
  4. 细说Vue作用域插槽,匹配应用场景。
  5. Inspector a ProgressBar(定制属性面板)
  6. 使用SAP云平台Android SDK创建Mobile应用
  7. IPv6应用普及,任重而道远
  8. learning java AWT 布局管理器CardLayout
  9. C/C++——求数组长度及反序
  10. 数据库 SQL 学习(入门篇)
  11. 小程序定位并获取城市编码
  12. 微信小程序之模板的使用
  13. 网络空间测绘技术在网络安全中的应用
  14. 人艰不拆,一句话毁掉小清新!
  15. linux pipe命令,Linux入门教程:Linux下的pipe命令
  16. 应届生面试技巧心得及选择工作走向的分析
  17. 行列式用计算机怎么算,行列式计算机方法
  18. Mac模拟器进行远程调试
  19. C++中的数学函数汇总
  20. 10G整数中寻找中位数

热门文章

  1. Go史诗级选手之函数
  2. 表格自动保存怎么设置在什么地方
  3. 男生有打耳洞,会影响考行政编吗?
  4. 按不同vlan下发dhcp_为多个VLAN配置DHCP实例
  5. PAT 乙 1069 微博转发抽奖
  6. DoraemonKit,一款功能齐全的客户端 (iOS、Android) 研发助手,你值得拥有。
  7. 如何PHP给人生日祝福,简短12字 最打动人的生日祝福语
  8. 得到iPhone用户的首选语言
  9. Django来敲门~第一部分【6.2 HTML视图模板】
  10. ios与android指纹识别,iOS指纹识别功能实践