RTP/RTCP协议解析

268 阅读1分钟

前言

本文将介绍RTP、RTCP协议,并结合WebRTC中的使用作进一步说明。

RTP协议

RTP(Real-time Transport Protocol)是一种通过IP网络传输音频和视频的网络协议。RTP用于设计流媒体的通信和娱乐系统。RTP通过在UDP上运行,和RTCP(RTP Control Protocol)结合使用。RTCP用于监控传输统计和服务质量(Qos),并帮助多个流的同步。

image.png

  • Version: (2 bits) 表示协议的版本,当前版本为2
  • P (Padding) : (1 bit) 用于指示RTP数据包末尾是否有额外的填充字节
  • X (Extension) : (1 bit) 表示标头和有效负载之间存在扩展标头
  • CC (CSRC count) : (4 bits) CSRC标识符的数量
  • M (Marker) : (1 bit)以特定配置文件的方式在应用级别使用的信令。例如视频帧分包后的最后一个包标志。
  • PT (Payload type) : (7 bits)表示有效负载的格式
  • Sequence number: (16 bits) RTP包的序列号
  • Timestamp: (32 bits) RTP包的时间戳
  • SSRC: (32 bits)同步源标识符
  • CSRC: (32 bits each, the number of entries is indicated by the CSRC count field) 贡献源标识符
  • Header extension: (optional, presence indicated by Extension field) 头扩展

RTCP协议

image.png

  • Version: (2 bits) 标识RTCP中的版本,本规范定义的版本是2
  • P (Padding) : (1 bits) 指示RTCP数据包末尾是否有额外的填充字节
  • RC (Reception report count) : (5 bits) 此数据包中包含的接收报告块的数量
  • PT (Packet type) : (8 bits) 用于识别RTCP数据包类型的常量
  • Length: (16 bits) 表示此RTCP数据包的长度(包括头本身),数值为(N-1)个4字节
  • SSRC: (32 bits) 同步源标识符