Miracast投屏协议深入剖析

2023-05-16

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应答时,相关应答码如下表:

应答码描述
400RTSP语法错误
401RTP端口不可用
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类型,示例如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Miracast投屏协议深入剖析 的相关文章

随机推荐

  • Critical error detected c0000374

    最近发现一个新奇的情况导致这个问题出现 版本不一致 简单来说 xff0c 就是有一个类A xff0c 调用类B xff1b 但是这个类B有两个版本B1 xff0c B2 大小不一致 xff1b 类B包含两个类C D 在调用类B时 xff0c
  • 串口通信协议

    概念 串口通信 xff08 Serial Communications xff09 的概念非常简单 xff0c 串口按位 xff08 bit xff09 发送和接收字节 尽管比按字节 xff08 byte xff09 的并行通信慢 xff0
  • [二] Nuttx移植-星瞳pyboard开发板

    目录 一 Nuttx配置文件二 构建自己的配置文件1 include board h文件构建2 kernel amp amp scripts 构建3 nsh defconfig 构建4 src 构建5 Kconfig 构建 三 修改 nut
  • Parrot Bebop2 与ROS

    第二章 无人机平台与开发环境搭建 本章主要介绍无人机平台及相关开发环境的搭建 包括介绍Parrot Bebop2的相关规格与使用说明 xff0c 以及ROS的操作系统的简介 发展历程 安装流程 xff0c 还有ROS的数据通信方式和ROS的
  • python2与python3解析数据

    蓝牙模块接收到监测设备传输来的数据 xff0c 封装格式为十六进制的数据帧 xff0c 蓝牙模块将数据通过串口发送给wrtnode 2p xff0c wrtnode通过ser2net服务将数据转为网络数据 xff0c 可以通过监听192 1
  • 上传本地项目到github远程仓库

    前提已经注册github账号并在本地电脑安装git客户端 1 为Github账户设置SSH key 进入git bash xff0c 通过如下命令生成 ssh keygen t rsa C 34 github所绑定的邮箱 34 一路回车 x
  • 卫星导航定位技术二:由星历参数求解卫星时空位置

    卫星星历是描述卫星运动轨道的信息 也可以说卫星星历就是一组对应某一时刻的轨道参数及其变率 有了卫星星历就可以计算出任意时刻的卫星位置及其速度 GPS卫星星历分为预报星历和后处理星历 预报星历又称广播星历 GPS广播星历参数共有16个 xff
  • 模式识别:最小错误率贝叶斯决策分类

    一 引言 1 用贝叶斯决策理论分类要事先知道两个条件及要求 xff1a 各类的先验概率 xff1a 及特征向量的条件概率密度 xff1a 或后验概率 xff1a 决策分类的类别一定 2 解决的问题 xff1a 已知一定数目的样本 xff0c
  • 模式识别:BP神经网络算法

    1 BP神经网络分类器 1 1 BP算法基本原理 神经网络结构大概如下图1 1 xff1a 图1 1 包括输入层 xff0c 隐层和输出层 包含一层隐层的神经网络称为浅层神经网络 xff0c 即SNN 包含多层隐层的神经网络称为深度神经网络
  • 模式识别:C-means(K-means)聚类算法与分级聚类(层次聚类)算法

    C均值聚类算法与分级聚类算法的聚类分析 一 实验目的 理解聚类的整体思想 xff0c 了解聚类的一般方法 xff1b 掌握 C means与分级聚类算法算法思想及原理 xff0c 并能够熟练运用这些算法进行聚类分析 xff1b 能够分析二者
  • ROS 配置多网口通讯

    列出当前所有的网络设备 ifconfig a 结果如下 xff1a enp1s0 Link encap Ethernet HWaddr 00 2f 5c 68 06 ad inet addr 192 168 1 101 Bcast 192
  • qt creator开启openMP加速方法

    环境 Qt creator4 11 for msvc2017 内置openmp库 启用方法 1 在pro文件加上QMAKE CXXFLAGS 43 61 openmp 2 添加头文件omp h
  • c++中::的用法

    是运算符中等级最高的 xff0c 它分为三种 1 global scope 全局作用域符 xff09 xff0c 用法 xff08 name 2 class scope 类作用域符 xff09 xff0c 用法 class name 3 n
  • 【ubuntu】——gflags&glog卸载与安装

    gflags glog 通过apt安装的glog xff0c gflags没有config cmake xff0c 所以在一些情况下需要手动编译 1 卸载gflags amp glog 只适用于通过apt安装的方式 span class t
  • 【算法】A* 寻路 可视化

    如下图 寻路图A 使用A 算法 xff0c 需要将地图抽象成一个个方块 xff0c 蓝色代表不可以动 墙 xff0c 黄色为起始点 xff0c 红色为目标点 其地图的二维坐标如图所示 xff0c 每一个单位为1米 A 的基本公式为 F n
  • 实验室新生成长指南[2.2.1] · 连接器

    欢迎进入 实验室新生成长指南 第二章 xff1a 硬件 本篇是 实验室新生成长指南 第二章第二节第一篇 xff1a 连接器 整个2 2节将帮助新手快速建立设计电路系统的一些基本知识储备 更多关于 实验室新生成长指南 的介绍 xff0c 请前
  • 走进音视频的世界——音视频的基本概念

    音视频通用的基本概念有码率 时长 xff0c 而不同音视频有不同的封装格式 编码协议 其中视频关键参数有分辨率 帧率 画质 旋转角度 像素格式 xff0c 而音频关键参数有采样率 声道数 声道布局 音质 采样数 采样位数 帧时长 接下来与大
  • 走进音视频的世界——新一代开源编解码器AV1

    AOMedia Video 1 xff08 AV1 xff09 是一种开源 免版税的编解码器 xff0c 最初设计用于Internet上的视频传输 它是由开放媒体联盟 xff08 AOMedia xff09 于VP9的继任者开发的 xff0
  • FFmpeg源码分析:avformat_find_stream_info分析码流信息

    FFmpeg在调用avformat open input 之后 xff0c 可能码流信息不够完整 xff0c 可以使用avformat find stream info 获取更多的码流信息 比如获取视频帧率 视频宽高 xff0c 重新计算最
  • Miracast投屏协议深入剖析

    Miracast由WiFi联盟制定 xff0c 以WiFi Direct IEEE802 11为无线传输标准 xff0c 允许手机向电视或其他接收设备进行无线投送视频 图片 和Miracast类似的投屏协议 xff0c 还有Airplay