Miracast投屏协议深入剖析
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投屏协议深入剖析相关推荐
- 投屏协议以及投屏的测试点
无线投屏: 可以将会议内容.多媒体文件.游戏画面.电影.视频画面投放到另一面屏幕上呈现,进行互动而不需要各种连线,摆脱束缚享受更快捷.更自由的投屏体验.无线投屏技术已经与我们的生活息息相关,为工作和娱 ...
- [转] Android Miracast投屏入门
原文:https://www.codetd.com/article/12138544 哇,打开新世界了. SOS--遇到问题查看资料,中英文该看的都不落下. 官配1. AOSP源码: Miracast ...
- 镜像miracast投屏软件_什么是Miracast投屏,Miracast是怎么投屏的?
原标题:什么是Miracast投屏,Miracast是怎么投屏的? 什么是Miracast投屏,Miracast是怎么投屏的? 我经常说手机.电脑.电视利用Miracast投屏,那么有人了解Mirac ...
- Miracast投屏反控原理
Miracast投屏反控 一. Miracast介绍 Miracast是对支持Wi-Fi Display功能设备的认证名称,也就是通过Miracast认证的设备应该都支持Wi-Fi Display功能 ...
- 镜像miracast投屏软件_创维电视上没有Miracast功能,怎么解决投屏问题?
创维电视上没有Miracast功能,怎么解决投屏问题? 当下主流的投屏协议就是Miracast和Airplay屏幕镜像以及DLNA.而大多数的电视机投屏都是利用自带的Miracast功能. Mirac ...
- Android Miracast投屏入门
哇,打开新世界了. SOS--遇到问题查看资料,中英文该看的都不落下. 官配1. AOSP源码: Miracast Sink端源码最早出现在Android 4.2.2上,通过googlesource可 ...
- Android Miracast 投屏
从事Connectivity模块几年时间了,Team负责集成包括WiFi/Bluetooth(A2DP Source/Sink,HID[key/Audio],OPP,SPP)投屏类[Miracast, ...
- 投屏协议与rtsp协议
投屏协议 以实时性来说,需要用到rtsp协议,实时性较高,各方面是比较符合抓取后投送到大屏上的,无论大屏用的dlna还是miracast,rtsp协议是少不了的,那么,做一个rtspserver 就是 ...
- 星宸科技SSD202D芯片+无线投屏协议在摩托车智能仪表,电动车智能仪表批量出货。
星宸科技股份有限公司(前身MStar)的嵌入式CPU芯片SSD202D,SSC8826Q等在摩托车仪表.电动车智能仪表产品大批量出货,支持无线蓝牙.WIFI无线投屏,行车记录仪等功能.产品得到摩托车爱 ...
最新文章
- Android应用如何开机自启动、自启动失败原因
- docker php composer 使用_宿主机nginx与docker的PHP搭配使用
- TypeError: 'module' object is not callable 原因分析(python模块导入注意事项)
- 细说Vue作用域插槽,匹配应用场景。
- Inspector a ProgressBar(定制属性面板)
- 使用SAP云平台Android SDK创建Mobile应用
- IPv6应用普及,任重而道远
- learning java AWT 布局管理器CardLayout
- C/C++——求数组长度及反序
- 数据库 SQL 学习(入门篇)
- 小程序定位并获取城市编码
- 微信小程序之模板的使用
- 网络空间测绘技术在网络安全中的应用
- 人艰不拆,一句话毁掉小清新!
- linux pipe命令,Linux入门教程:Linux下的pipe命令
- 应届生面试技巧心得及选择工作走向的分析
- 行列式用计算机怎么算,行列式计算机方法
- Mac模拟器进行远程调试
- C++中的数学函数汇总
- 10G整数中寻找中位数