RTP學習筆記


一、定義

實時傳輸協議(Real- time Transport Protocol,RTP)是在Internet上處理多媒體數據流的一種網絡協議,利用它能夠在一對一(unicast,單播)或者一對多 (multicast,多播)的網絡環境中實現傳流媒體數據的實時傳輸。

RTP通常使用UDP來進行多媒體數據的傳輸,但如果需要的話可以使用TCP或者ATM等其它協議。

二、協議格式

    0               1               2               3              4
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |V=2|P|X|  CC   |M|     PT      |       sequence number         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           timestamp                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                synchronization source (SSRC)                  |   
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| contributing source (CSRC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

三、字段解析

 1 V:RTP協議的版本號,占2位,當前協議版本號為2。
 2 
 3 P:填充標志,占1位,如果P=1,則在該報文的尾部填充一個或多個額外的八位組,它們不是有效載荷的一部分。
 4 
 5 X:擴展標志,占1位,如果X=1,則在RTP報頭后跟有一個擴展報頭。
 6 
 7 CC:CSRC計數器,占4位,指示CSRC 標識符的個數。
 8 
 9 M: 標記,占1位,不同的有效載荷有不同的含義,對於視頻,標記一幀的結束;對於音頻,標記會話的開始。
10 
11 PT: 有效載荷類型,占7位,用於說明RTP報文中有效載荷的類型,如GSM音頻、H264視頻等,在流媒體中大部分是用來區分音頻流和視頻流的,這樣便於客戶端進行解析。
12 
13 sequence number(序列號):占16位,用於標識發送者所發送的RTP報文的序列號,每發送一個報文,序列號增1。這個字段當下層的承載協議用UDP的時候,網絡狀況不好的時候可以用來檢查丟包。同時出現網絡抖動的情況可以用來對數據進行重新排序。
14 
15 timestamp(時間戳):占32位,時戳反映了該RTP報文的第一個八位組的采樣時刻。接收者使用時戳來計算延遲和延遲抖動,並進行同步控制。
16 
17 SSRC(同步信源):占32位,用於標識同步信源。
RTP包流的源,用RTP報頭中32位數值的SSRC標識符進行標識,使其不依賴於網絡地址。一個同步源的所有包構成了相同計時和序列號空間的一部分,這樣接收方就可以把一個同步源的包放在一起,來進行重放。
舉些同步源的例子,像來自同一信號源的包流的發送方,如麥克風、攝影機、RTP混頻器就是同步源。一個同步源可能隨着時間變化而改變其數據格式,如音頻編碼。
SSRC標識符是一個隨機選取的值,它在特定的RTP會話中是全局唯一
如果參與者在一個RTP會話中生成了多個流,例如來自多個攝影機,則每個攝影機都必須標識成單獨的同步源。
該標識符是隨機選擇的,參加同一視頻會議的兩個同步信源不能有相同的SSRC。
19 CSRC(作用信源):占32位,可以包含0~15個作用信源信息。
若一個RTP包流的源,對由RTP混頻器生成的組合流起了作用,則它就是一個作用源。對特定包的生成起作用的源,其SSRC標識符組成的列表,被混頻器插入到包的RTP報頭中。這個列表叫做CSRC表。
相關應用的例子如:在音頻會議中,混頻器向所有的說話人(talker)指出,誰的話語(speech)將被組合到即將發出的包中,即便所有的包都包含在同一個(混頻器的)SSRC標識符中,也可讓聽者(接收者)可以清楚誰是當前說話人。 
每個CSRC標識了包含在該RTP報文有效載荷中的所有作用信源。

四、實例參考

16進制碼流實例

1 80 00 1e e2 12 e9 c2 4d 0b a9 e9 05 ff ff ff ...

連續的ffff開始往后是Payload負載,不做分析。

1. 80 二進制 1000 0000

可以得出 V=2,P=0,X=0,CC=0

2. 00 二進制 0000 0000

可以得出 M=1,PT=0(PCMU)

3. 1e e2 二進制 00011110 11100010

可以得出 sequence number=7906

4. 12 e9 c2 4d 二進制 00010010 11101001 11000010 01001101

可以得出 timestamp=317309517

5. 0b a9 e9 05 

可以得出SSRC=0x0ba9e905


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM