WebRTC中RTP协议详解

视频质量(Qos)、RTCP/RTP

Posted by chensong on 2022-05-29 22::45::01

WebRTC中RTP协议详解

@TOC

</font>

<hr style=” border:solid; width:100px; height:1px;” color=#000000 size=1”>

WebRTC专题开嗨鸭 !!!

一、 WebRTC 线程模型

1、WebRTC中线程模型和常见线程模型介绍

2、WebRTC网络PhysicalSocketServer之WSAEventselect模型使用

二、 WebRTC媒体协商

1、WebRTC媒体协商之SDP中JsepSessionDescription类结构分析

三、 WebRTC 音频数据采集

1、WebRTC源码之音频设备播放流程源码分析

2、WebRTC源码之音频设备的录制流程源码分析

四、 WebRTC 音频引擎(编解码和3A算法)

五、 WebRTC 视频数据采集

六、 WebRTC 视频引擎( 编解码)

七、 WebRTC 网络传输

1、WebRTC的ICE之STUN协议

2、WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解

八、 WebRTC服务质量(Qos)

1、WebRTC中RTCP协议详解

2、WebRTC中RTP协议详解

3、WebRTC之NACK、RTX 在什么时机判断丢包发送NACK请求和RTX丢包重传

4、WebRTC源码之视频质量统计数据的数据结构分析

九、 NetEQ

十、 Simulcast与SVC

前言

RTP协议 在流媒体中是传输媒体数据的载体

一、RTP/RTCP在协议栈中的位置

在这里插入图片描述

1、 RTP传输流程图

在这里插入图片描述

二、RTP Header 的结构图

在这里插入图片描述

1、RTP Header 协议字段解析

v : 版本 P : 填充数据 1:代表有填充数据 0: 没有补充数据 X : 是否有扩展头,1: 有扩展头 0:没有扩展头

CC : 这个源那些人产生的 csrc的个数 几个贡献者

M :代表视频帧的最后一个帧 1:是视频帧的最后一帧, 0:不是最后一帧视频帧 PT : 代表payloadType, 数据负载类型 例如: 音频:ops:101, 视频:127 Sequence Number: 数据有序 timestamp: 产生时间戳 ssrc:源(多路视频流ssrc判断) csrc:数据有几个贡献者

2、 视频帧分包

在这里插入图片描述

序号1~3:为一个完整视频帧(I、P、B)

s:的意思是视频一帧分包 开始位置 e是结束一帧标志位

3、 RTP的扩展头

在这里插入图片描述

①、 扩展头Profile 分为两种类型

profile:占用两个字节

两种类型分别是下载

  1. profile值为0XBE、0XDE、扩展项的ID和len占一个字节
  2. profile值为0X10、0X0X,扩展项的ID和len占两个字节
②、扩展头length

表示后面跟着的扩展头有几个字节 扩展头长度以4字节为单位

如length为3,说明扩展头长度占12字节

1. 一个字节扩展头如图所示

在这里插入图片描述

2.

2. 两个字节的扩展头例子

在这里插入图片描述

三、WebRTC用到的扩展头

在这里插入图片描述

1. WebRTC 中扩展头详细信息对应代码与声明

src/api/rtp_paramerters.h 中的RtpExtension结构 src/api/rtp_parameters.cc 中实现 src/modules/rtp_rtcp/source/rtp_header_extensions.cc 格式详细

四、 完整的RTP头

在这里插入图片描述

总结:

WebRTC源码分析地址:https://github.com/chensongpoixs/cwebrtc