WebRTC中RTP协议详解

WebRTC中RTP协议详解


WebRTC专题开嗨鸭 !!!

一、 WebRTC 线程模型

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

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

二、 WebRTC媒体协商

三、 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协议详解

九、 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的扩展头

在这里插入图片描述

        /* Struct for RTP header. */
		//  0                   1                   2                   3
		//  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		// |V=2|P|X|  CC   |M|     PT      |       sequence number         |
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		// |                           timestamp                           |
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		// |           synchronization source (SSRC) identifier            |
		// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
		// |            Contributing source (CSRC) identifiers             |
		// |                             ....                              |
		// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
		// |  header eXtension profile id  |       length in 32bits        |
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		// |                          Extensions                           |
		// |                             ....                              |
		// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
		// |                           Payload                             |
		// |             ....              :  padding...                   |
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		// |               padding         | Padding size  |
		// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
①、 扩展头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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值