协议标准:RFC 3550
RTP与RTCP是两个不同协议,是两个不同服务,支持多播与单播,一般两者端口相邻,均使用UDP。其中RTP用于数据传输,RTCP用于提供会话状态与质量
RTP
-
由RTP包头与负载数据组成,大小要求小于1500字节,RTP包头12个字节+CSRC*4
-
RTP头
- V:版本
- p:填充,若设置,说明末端有的填充数据,目的固定长度,为了加密或固定长度传输
- X:扩展,若设置,说明固定头后面跟随一个头扩展
- CC:CSRC计数
- M:标志,标记重要的事件
- PT:负载类型
- SSRC:同步源,数据的发送源,如NVR
- CSRC:贡献源,数据的采集源,比如麦克风,摄像头等
RTCP
- 用途:提供发送的信息包数目、丢失的信息包数目和信息包的抖动等情况
- 五种信息包
类型 | 缩写表示 | 用途 |
---|---|---|
200 | SR(Sender Report) | 主要信息:RTP时间戳,发送数据量,同步源标识,丢包率,到达间隔抖动,上次发送时间 |
201 | RR(Receiver Report) | 包类型域为201和没有发送者信息外,其它与SR包相同 |
202 | SDES(Source Description Items) | 源点描述 |
203 | BYE | 结束传输 |
204 | APP | 特定应用 |
SR包结构
SR 包头
- 采用网络字节序,黄色为必须,绿色由RC确定,蓝色由P确定。
- V:版本,与RTP包中的相同
- P:填充比特 表示末端包含一些附加填充比特
- RC:发送者报告数量
- PT:包类型,SR=200
- Length:长度,RTCP包的长度减1。其单位是32比特字
发送者信息
-
SSRC:发送者的同步源标识符
-
NTP时间戳:报告发送时的背景时钟,可以为零
-
RTP时间戳:RTP时间刻度上对应的时间戳
-
发送报文数:该发送者发送的RTP数据包总数
-
发送字节数:该发送者发送的RTP数据包字节总数(不包括头和填充)
其他发送源信息
- 块数等于从上一个报告以来该发送者侦听到的其它源(不包括自身)的数目
- SSRC_n:同步源标识符
- 丢包率:上次报告至今的丢包比例,以定点小数的形式表示
- 累计包丢失数:从开始到现在,源SSRC_nRTP数据包的丢包总数
- 扩展的最高序列号:低16bit - 从源SSRC_n来的最高接收序列号,高16bit - 序列号周期计数器
- 到达间隔抖动:RTP数据包到达时刻统计方差的估计值
- LSR:上一SR报文时间戳,源SSRC_n的最新的SR的NTP时间戳的中间32位
- DLSR:自上一SR的延时,本包的NTP时间戳-LSR
RR包结构
RR包中各部分除了包类型域为201和没有发送者信息外,其它与SR包相同
的延时,本包的NTP时间戳-LSR
RR包结构
RR包中各部分除了包类型域为201和没有发送者信息外,其它与SR包相同