一、简介
RTP全名是Real-time Transport Protocol(实时传输协议)。该协议为具有实时特性的数据(如交互式音频和视频)提供端到端的传输服务。这些服务包括载荷类型标识、序列号、时间戳和传输监控。应用程序通常将RTP运行于UDP之上,以利用UDP多路复用和校验和功能。RTP本身不保证服务质量,通常和RTCP协议一起使用,由RTCP提供服务质量保障。虽然RTP协议是为了满足多参与者的多媒体会议设计的,但它不局限于特定的应用。连续数据的存储、交互式分布式仿真等也适用于RTP协议。
二、RTP 包格式
RTP报文由两部分组成:报头和有效载荷。RTP报文格式如下图所示:
每个字段的含义如下:
V:RTP协议的版本号,占2位,当前协议版本号为2。
P:填充标志,占1位,如果P=1,则在该报文的尾部将填充一个或多个额外的八位组,它们不是有效载荷的一部分。
X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
CC:CSRC计数器,占 4位,指示CSRC 标识符的个数,因此CSRC数量最多为15。主要用于多流组合传播。
M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。
时戳 (Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源,当数量超过15时,仅识别15个。
扩展头(Extension Header):可选。
载荷(PayLoad):真正要传输的数据,比如音频或者视频数据。