音视频协议-RTCP协议介绍

音视频协议-RTCP协议介绍

  • 1 协议简介
  • 2 协议格式介绍
    • 2.1 RTCP公共头
    • 2.2 SR协议
    • 2.3 RR协议
    • 2.4 SDES协议
    • 2.5 BYE协议
    • 2.6 APP协议
  • 3 RTCP协议限制

1 协议简介

RTCP和RTP协议是配合使用的音视频协议-RTP协议,为RTP提供信道外的传输控制,RTCP不参与数据传输,主要用于监控媒体传输的质量和传递参与者的信息。由于音视频实时传输环境一般采用UDP传输,RTCP对于音视频传输质量起到至关重要的作用,可以说没有RTCP音视频实时通信在弱网下基本没办法生存。协议内容见RFC3550

2 协议格式介绍

2.1 RTCP公共头

rtcp公共头部占16字节:不同类型有所差别,但是长度是一致的。
音视频协议-RTCP协议介绍_第1张图片
版本号(2bit):版本号为2;
填充(1bit):填充标志,同RTP的填充标志;
接收报告数量(5bit):这是SR包的定义,接收报告块数量
荷载类型(8bit):荷载类型SR、RR、SDES、BYE、APP;本文档只介绍了5种,后续介绍QOS策略还会介绍其他的协议类型;
长度(16bit):32位的数量,长度代表整个数据包的大小(协议头+荷载+填充)
同步源(32bit):发送端源
RTCP 报文类型:
音视频协议-RTCP协议介绍_第2张图片

2.2 SR协议

发送者报告包括三个部分:公共头;发送者信息;接受者信息。协议ID:200。
音视频协议-RTCP协议介绍_第3张图片
发送者信息:
NTP时间(64bit):NTP时间包括两部分组成,高位32bit表示秒钟:从1970开始计算;低位表示剩余时间精度,一般按照1代表232皮秒来计算。
RTP时间戳(32bit):与RTP时间戳计算方式一致,是根据采样率进行递增,由于与RTP时间戳一致同时又知道当前的NTP时间,因此可以用于音视频时间同步使用。
发送包数量(32bit):计算已经发送的包的数量
发送字节数(32bit):计算已经发送的字节数量
接收者信息:
接收者信息更多的是反馈信息,可以有多块接收端反馈信息块小于等于15。
接收端的源(32bit):接收端的源
丢包率(8bit):丢包率需要转换为0-255的占比;如20%丢包=20%*255=51
累计丢包数(24bit):从开始计算,丢包的数量统计,当重传后需要从丢包数中移除;
期望序列号(32bit):期望接收的最大序列号,低16位存储期望最大序列号;高16为翻转次数统计;
到达时间抖动(32bit):到达时间间隔的统计方差;
最后一次发送SR时间(32bit):LSR最后一次发送SR的时间;
最后一次接收SR到发送的时延(32bit):DLSR最后一次收到SR包后到发送中间的时延;
下图利用LSR和DLSR计算往返延迟:
音视频协议-RTCP协议介绍_第4张图片

2.3 RR协议

RR协议和SR协议内容基本一致,就是少了发送者信息部分,协议ID:201。注意空的RR报文(RC=0)需要放在符合RTCP报文的头部。
音视频协议-RTCP协议介绍_第5张图片

2.4 SDES协议

资源描述协议,最常用的就是传递CNAME名称,用于标识会话,当SSRC发生变化也能很好的匹配会话。协议ID:202。
音视频协议-RTCP协议介绍_第6张图片
SDES分为两个部分一部分:头信息和chunk信息。
源计数(5bit):用于计数后面的chunk数;
chunk分为两部分
源(32bit):源ID;
SDSE报告块
item一般是32bit的整数倍,包含一个源字段和表项数据;
表项数据包括三部分:类型字段(8bit)、长度字段(8bit)、字符串不超过255字节。
CNAME元素:

  • cname在所有参与者中是唯一的;
    音视频协议-RTCP协议介绍_第7张图片
    SDES 类型:
    音视频协议-RTCP协议介绍_第8张图片

2.5 BYE协议

BYE指示一个或者多个源退出会话。协议ID:203。
音视频协议-RTCP协议介绍_第9张图片
源数量(5bit):指示SSRC/CSRC的总数量,在头后面接的源的个数。
长度(8bit):后面字符串长度;
原因(<255):原因小于255字节。

2.6 APP协议

APP报文用于新应用程序或者新特性开发的实验使用,无需数据包类型值注册。协议ID:204。
音视频协议-RTCP协议介绍_第10张图片
子协议(5bit):自定义协议。
名字(32bit):ascii
应用数据(n*32bit):必须为32bit的整数倍。

3 RTCP协议限制

RTCP 占用带宽所增加的会话带宽部分固定在 5%,1/4 的 RTCP 带宽分给发送数据的参与者,这样在有很多接收者却只有很少的发送者的会话中,新加进来的参与者就可以更快的接收到 CNAME。当发送者的比例超过 1/4 时,发送者会按他们的比例得到 RTCP 带宽。
RTCP 报文间隔在[0.5, 1.5]是随机取值的乘以计算的间隔来避免冲突。第一个 RTCP 报文也被延迟一个随机值,这个值是在半个最小 RTCP 间隔内取值。

你可能感兴趣的:(音视频开发,音视频,网络,rtcp,udp)