【轉】RTP學習筆記

轉自:https://www.cnblogs.com/yoyotl/p/5650101.htmlhtml

1、定義網絡

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

RTP一般使用UDP來進行多媒體數據的傳輸,但若是須要的話可使用TCP或者ATM等其它協議。spa

2、協議格式code

複製代碼
    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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
複製代碼

3、字段解析視頻

複製代碼
 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報文有效載荷中的全部做用信源。
複製代碼

4、實例參考htm

16進制碼流實例blog

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

相關文章
相關標籤/搜索