1. 程式人生 > >流媒體傳輸協議---RTP--基礎

流媒體傳輸協議---RTP--基礎

1、RTP協議的概念及地位

1.1 概念

RTP全名是Real-time Transport Protocol(實時傳輸協議),RTP 是一個應用型的傳輸層協議,它並不提供任何傳輸可靠性的保證和流量的擁塞控制機制。RTP 位於UDP(User Datagram Protocol) 之上。UDP 雖然沒有TCP 那麼可靠,並且無法保證實時業務的服務質量,需要RTCP 實時監控資料傳輸和服務質量。

1.2 地位

 

2、RTP協議頭部分析

1)        V:RTP協議的版本號,佔2位。

2)        P:填充標誌,佔1位,如果P=1,則在該報文的尾部填充一個或多個額外的八位組,它們不是有效載荷的一部分。

3)        X:擴充套件標誌,佔1位,如果X=1,則在RTP報頭後跟有一個擴充套件報頭

4)        CC:CSRC計數器,佔4位,指示CSRC 識別符號的個數(作用信源CSRC計數器)

5)        M: 標記,佔1位,不同的有效載荷有不同的含義,對於視訊,標記一幀的結束;對於音訊,標記會話的開始。(對於分組中的重要事件可用該位標識)

6)        PT: 有效荷載型別,佔7位,用於說明RTP報文中有效載荷的型別,如GSM音訊、JPEM影象等,在流媒體中大部分是用來區分音訊流和視訊流的,這樣便於客戶端進行解析。

7)        序列號:佔16位,用於標識傳送者所傳送的RTP報文的序列號,每傳送一個報文,序列號增1。這個欄位當下層的承載協議用UDP的時候,網路狀況不好的時候可以用來檢查丟包。同時出現網路抖動的情況可以用來對資料進行重新排序,序列號的初始值是隨機的,同時音訊包和視訊包的sequence是分別記數的。

8)        時戳(Timestamp):佔32位,必須使用90 kHz 時鐘頻率。時戳反映了該RTP報文的第一個八位組的取樣時刻。接收者使用時戳來計算延遲和延遲抖動,並進行同步控制。

9)        同步信源(SSRC)識別符號:佔32位,用於標識同步信源。該識別符號是隨機選擇的,參加同一視訊會議的兩個同步信源不能有相同的SSRC。

10)    特約信源(CSRC)識別符號:每個CSRC識別符號佔32位,可以有0~15個。每個CSRC標識了包含在該RTP報文有效載荷中的所有特約信源。

SSRC與CSRC

轉自:https://blog.csdn.net/zhushentian/article/details/79804742

 

同步信源(SSRC)識別符號:佔32位,用於標識同步信源。該識別符號是隨機選擇的,參加同一視訊會議的兩個同步信源不能有相同的SSRC。

·特約信源(CSRC)識別符號:每個CSRC識別符號佔32位,可以有0~15個。每個CSRC標識了包含在該RTP報文有效載荷中的所有特約信源。

這裡的同步信源是指產生媒體流的信源,例如麥克風、攝像機、RTP混合器等;它通過RTP報頭中的一個32位數字SSRC識別符號來標識,而不依賴於網路地址,接收者將根據SSRC識別符號來區分不同的信源,進行RTP報文的分組。

特約信源是指當混合器接收到一個或多個同步信源的RTP報文後,經過混合處理產生一個新的組合RTP報文,並把混合器作為組合RTP報文的 SSRC而將原來所有的SSRC都作為CSRC傳送給接收者,使接收者知道組成組合報文的各個SSRC

若一個RTP包流的源,對由RTP混頻器生成的組合流起了作用,則它就是一個作用源。對特定包的生成起作用的源,其SSRC識別符號組成的列表,被混頻器插入到包的RTP報頭中。這個列表叫做CSRC表。

用圖表示大概是這樣:

 

例如,有三個訊號源各發出一路rtp流,RTP1攜帶的SSRC是SSRC1,RTP2攜帶的SSRC是SSRC2,RTP3攜帶SSRC3,這三路RTP流到達混合器時,混合器會將這三路流混合成一路流發出去,它會把這三路流的SSRC記錄下來,形成一個列表,叫CSRC表,在傳送的混合RTP流中,SSRC域填充的欄位是混合器本身的SSRC4,而CSRC欄位則會根據該包的負載的源來填入。

例如當前的RTP包的負載是來自SSRC1的,那麼在當前RTP包的CSRC欄位填入SSRC1。

這樣接收者就可以根據CSRC來區分不同的信源;

一般的,混合的RTP流中,每隔一段時間,就會有一個RTP報文包含了完整的CSRC表。例如在傳送混合流時的第一個RTP包,它的CSRC域把CSRC表都填入,此時該包的負載可能是無意義或者並不是媒體流;此後的RTP報文中則根據負載的來源來填入CSRC域。