rtp协议格式:
rtp报文由两部分组成:报头和有效载荷。rtp报头格式如图6.7所示,其中:
1.v:rtp协议的版本号,占2位,当前协议版本号为2。
2. p:填充标志,占1位,如果p=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
3. x:扩展标志,占1位,如果x=1,则在rtp报头后跟有一个扩展报头。
4. cc:csrc计数器,占4位,指示csrc 标识符的个数。
5. m: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
6. pt: 有效载荷类型,占7位,用于说明rtp报文中有效载荷的类型,如gsm音频、jpem图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。
7. 序列号:占16位,用于标识发送者所发送的rtp报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用udp的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,在helix服务器中这个字段是从0开始的,同时音频包和视频包的sequence是分别记数的。
8. 时戳(timestamp):占32位,时戳反映了该rtp报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
9. 同步信源(ssrc)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的ssrc。
10. 特约信源(csrc)标识符:每个csrc标识符占32位,可以有0~15个。每个csrc标识了包含在该rtp报文有效载荷中的所有特约信源。
如果扩展标志被置位则说明紧跟在报头后面是一个头扩展,其格式如下:
rtp协议的用途:
rtp协议的使用:

RTP的使用实例之一如上图:
上面是某省iptv2.0早期的一个数据包的情况。从包中可以看出rtp是怎么和rtsp配合一起使用的。从包402到411为rtsp的协商过程,rtsp在player命令后数据包就到来。紧跟其后412包就是一个mpeg 的pes包,它是有由rtp来承载的ts来形成。从在420包中就可以更加清析的看出这个rtp流的情况。其pt即payload type为mpeg2 transport streams 也就是ts流,其ssrc为:0x65737d6c,其seq号为15764,从中也可以看出对于一个rtp流其seq号可以开始于一个随机的数值,但是肯定是逐包递增的。下图为420包的展开图:
从中可以看出承载rtp的为udp的数据流这个包中有x标志位为1则说明其有 header extensions.其header extensions为最下面。extension 的 profile为23128,长度为:2内容如上图最后两部分