协议之RTCP介绍

📅 2026/7/4 9:53:06
协议之RTCP介绍
RTCPRTP Control ProtocolRTP 控制协议和 RTP 成对使用主要职责为媒体同步通过 NTP 时间戳实现音视频同步质量反馈报告丢包率、抖动等统计信息成员管理追踪会话参与者的加入/离开带宽管理动态调整发送速率一 RTCP包类型RFC3550定义类型名称用途200SRSender Report发送者报告包含发送统计和时间戳201RRReceiver Report接收者报告包含接收统计202SDESSource Description源描述包含 CNAME、NAME 等信息203BYE离开通知204APP应用自定义数据二、RTCP公共头结构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 -------------------------------- |V2|P| RC | PTSR200 | length | --------------------------------字段位说明VVersion0-1版本号固定为 2PPadding2是否有填充用于加密对齐RCReport Count3-7报告块数量SR/RR或子类型APPPTPayload Type8-15包类型200SR, 201RR, 202SDES, 203BYE, 204APPlength16-31包长度单位32位字不包含头部三、RTCP包类型详解3.1 SRSender Report- 发送者报告 PT200SR 由主动发送 RTP 数据的端点发送包含发送统计和 NTP/RTP 时间戳映射。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 -------------------------------- |V2|P| RC | PTSR200 | length | -------------------------------- | SSRC of sender | | NTP timestamp, most significant word | -------------------------------- | NTP timestamp, least significant word | -------------------------------- | RTP timestamp | -------------------------------- | senders packet count | -------------------------------- | senders octet count | | report block 1 (if RC 0) | -------------------------------- | report block 2 (if RC 1) | -------------------------------- | . | | . |字段长度说明SSRC of sendern发送端媒体流 SSRCNTP Timestamp MSW32位NTP 时间戳高32位1900年起的秒数。绝对墙上时钟国际标准时间NTP Timestamp LSW32位NTP 时间戳低32位秒的小数部分核心作用和下方 RTP 时间戳做映射接收端计算音视频同步偏移。RTP Timestamp32位与 NTP 时间对应的 RTP 时间戳发送该 SR 包瞬间对应的媒体流 RTP 时间戳 结合 NTP把相对媒体时间戳换算成真实绝对时间实现唇同步。Packet Count32位发送的 RTP 包总数 发送至今总 RTP 包数量Octet Count32位发送的字节总数发送至今总媒体字节数不含 RTP 头3.2 RRReceiver Report- 接收者报告 PT201RR 由接收端发送报告对各发送源的接收统计。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 -------------------------------- |V2|P| RC | PTRR201 | length | -------------------------------- | SSRC of sender | | report block 1 (if RC 0) | -------------------------------- | . | | . |报告块结构每个 24 字节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 -------------------------------- | SSRC_1 (source being reported) | -------------------------------- | fraction lost | cumulative number of packets lost | -------------------------------- | extended highest sequence number received | -------------------------------- | interarrival jitter | -------------------------------- | LSR (last SR) | -------------------------------- | DLSR (delay since last SR) | --------------------------------字段长度说明SSRC_n32位被报告源的 SSRCFraction Lost8位最近报告周期内的丢包率0-255对应 0~100%Cumulative Lost24位累计丢包数有符号Extended Highest Seq32位最高扩展序列号收到的最大序列号扩展 32 位解决 16 位循环溢出Jitter32位抖动值RTP时间戳单位网络抖动单位媒体时钟 tickLSR32位上次收到的 SR 时间戳DLSR32位自上次 SR 以来的延迟收到远端 SR 到当前发送 RR 的间隔单位 1/65536 秒 接收端用 LSRDLSR 计算往返时延 RTT3.3 SDESSource Description- 源描述PT202SDES 包含参与者的文本描述信息。SDES通用4字节头 -------------------------------- | SSRC | -------------------------------- | Item Type | Length | 文本内容... | 0(结束标记) -------------------------------- 所处位置 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 -------------------------------- |V2|P| SC | PTSDES202 | length | -------------------------------- | SSRC/CSRC_1 | -------------------------------- | SDES items | | . | | . | | SSRC/CSRC_2 | -------------------------------- | SDES items | | . |SDES 项类型类型名称用途0END项列表结束标记1CNAME规范名称强制2NAME用户名称3EMAIL电子邮件4PHONE电话号码5LOC地理位置6TOOL工具名称7NOTE备注8PRIV私有扩展3.4 BYE-离开通知 PT203BYE 用于通知其他参与者某源将离开会话。通用 4 字节头 N 个 SSRC每个 4 字节RC 个 可选退出原因文本1 字节长度 字符串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 -------------------------------- |V2|P| SC | PTBYE203 | length | 通用4字节 -------------------------------- | SSRC/CSRC_1 | -------------------------------- | SSRC/CSRC_2 | -------------------------------- | . | | . | | (optional) length of reason | reason for leaving... | --------------------------------3.5 APP-自定义扩展块PT204厂商私有扩展用于传输自定义 QoS、硬件状态、业务信令 结构 通用 4 字节头 32bit 应用标识4 个 ASCII 字符 剩余自定义二进制数据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 -------------------------------- |V2|P| subtype | PTAPP204 | length | -------------------------------- | SSRC/CSRC | -------------------------------- | name (4 bytes) | -------------------------------- | application-dependent data | | . |name 头applicantion-dependent data 扩展数据内容四、RTCP复合包RTCP 支持复合包Compound Packet即多个 RTCP 子包组合在一个 UDP 包中SR 子包 | RR 子包 | SDES 子包 | BYE 子包 | APP 子包复合包规则第一个子包必须是 SR 或 RRSDES 必须包含且仅包含一个 CNAME 项BYE 应放在复合包末尾