天天看點

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

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 協定

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