什么是RTP協(xié)議
1、協(xié)議簡介
RTP是針對Internet上多媒體數(shù)據(jù)流的一個傳輸協(xié)議。可以實(shí)現(xiàn)一對一或一對多的傳輸情況。RTP的典型應(yīng)用建立在UDP上,但也可以在TCP或ATM等其他協(xié)議之上工作。
? RTP本身只保證實(shí)時數(shù)據(jù)的傳輸,并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制。
2、工作機(jī)制
多媒體數(shù)據(jù)傳輸?shù)囊粋€尖銳的問題就是不可預(yù)料數(shù)據(jù)到達(dá)時間。但是流媒體的傳輸是需要數(shù)據(jù)的適時的到達(dá)用以播放和回放。
? rtp協(xié)議就是提供了時間標(biāo)簽,序列號以及其它的結(jié)構(gòu)用于控制適時數(shù)據(jù)流的播放。發(fā)送端依照即時的采樣在數(shù)據(jù)包里設(shè)置了時間標(biāo)簽。在接受端收到數(shù)據(jù)包后,就依照時間標(biāo)簽按照正確的速率恢復(fù)成原始的適時的數(shù)據(jù)。
?? 在rtp協(xié)議中,一幀數(shù)據(jù)被分割成幾個包,這幾個包具有相同的時間標(biāo)簽,但是每一個包又具有不同的序號
3、協(xié)議頭
????????①版本(V)
????? 2位,標(biāo)識RTP版本。
②填充標(biāo)識(P)
????? 1位,如設(shè)置填充位,在包尾將包含附加填充字,它不屬于有效載荷。填充的最后一個字節(jié)指明可以忽略多少個填充比特。填充可能用于某些具有固定長度的加密算法
③擴(kuò)展(X)
????? 1位,如設(shè)置擴(kuò)展位,固定頭后跟一個頭擴(kuò)展。
④CSRC計(jì)數(shù)(CC)
????? 4位,CSRC計(jì)數(shù)包括緊接在固定頭后CSRC標(biāo)識符個數(shù)。
⑤標(biāo)記(M)
????? 1位,標(biāo)志的解釋由具體協(xié)議規(guī)定。它用來允許在比特流中標(biāo)記重要的事件,如幀邊界
⑥載荷類型(PT)
????? 7位,記錄后面資料使用哪種編碼,接收端找出相應(yīng)的?decoder?解碼出來。H264的為96
⑦系列號
???? ?16位,系列號隨每個RTP數(shù)據(jù)包而增加1,由接收者用來探測包損失。系列號初值是隨機(jī)的。
⑧時標(biāo)
????? 32位,時標(biāo)反映RTP數(shù)據(jù)包中第一個八進(jìn)制數(shù)的采樣時刻,采樣時刻必須從單調(diào)、線性增加的時鐘導(dǎo)出,以允許同步與抖動計(jì)算。時標(biāo)可以讓receiver端知道在正確的時間將資料播放出來。
??????只有系列號而沒有時標(biāo),并不能完整按照順序的將data播放出來,因?yàn)槿绻鹍ata中間有一段是沒有資料的,只有系列號的話會造成錯誤.一般rtp頭以0x80 60開頭
H264 over RTP基本上分三種類型:
1.Single NAL unitpacket 也就是實(shí)際的NAL類型,可以理解為一個包就是一幀H264數(shù)據(jù),這個在實(shí)際中是比較多的。
2. Aggregation packet 一包數(shù)據(jù)中含有多個H264幀。
3. Fragmentationunit??一幀數(shù)據(jù)被分為多個RTP包,這也是很常見的,特別是對于關(guān)鍵幀。