天天看點

RTP 協定

概述:

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協定的使用:

<a href="http://images.cnblogs.com/cnblogs_com/qingquan/201107/201107282259116288.jpg"></a>

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包的展開圖:

<a href="http://images.cnblogs.com/cnblogs_com/qingquan/201107/20110728225922738.jpg"></a>

從中可以看出承載RTP的為UDP的資料流這個包中有x标志位為1則說明其有 header extensions.其header extensions為最下面。extension 的 profile為23128,長度為:2内容如上圖最後兩部分。

繼續閱讀