RTP协议
RFC3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的基础协议,该协议详细说明在互联网上传输音视频的标准数据包格式。RTP本身只保证实时数据的传输,并不能提供可靠传输、流量控制和拥塞控制等服务质量保证,这需要RTCP协议提供这些服务。 IETF的RFC3550定义RTP/RTCP协议的基本内容,包括报文格式、传输规则等。除此之外,IETF还定义一系列扩展协议,包括RTP档次扩展,RTCP报文类型扩展等。
RTP固定头部
V :RTP协议的版本号,占2位,当前协议版本号为2。
P :填充标志,占1位,若P=1则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分,表示报文对齐。
X :扩展标志,占1位,若X=1,则在RTP报头后跟有一个扩展头。
CC:CSRC计数器,占4位,指示CSRC 标识符的个数。
M :标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
PT :有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
序列号:16位,发送RTP报文的序列号,每发送一个报文序列号增1。接收者用序列号来检测报文丢失,排序报文,恢复数据。
时间戳:32位,反映该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
SSRC:32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
CSRC:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。在共流源标识并且没有拓展头部(X=0)的情况下,RTP头部为12个字节。
RTP拓展头部
RTP提供拓展机制以允许实现个性化,某些与常规负载格式功能要求相独立的附加信息在RTP 拓展头的定义中实现。
若 RTP 固定头中的扩展标志位 X 置 1,则一个长度可变的扩展头部分被加到 RTP 固定头之后。扩展包含 16 比特的长度域,指示扩展项中 32 比特字的个数,不包括 4 个字节扩展头(因此零是有效值)。RTP 固定头之后只允许有一头个头扩展。为了使拓展头具有特定的含义,扩展头的前 16 比特用来作为特定含义的识别标识符或参数。这 16 比特的格式由具体实现的上层协议定义。基本