1. 程式人生 > 實用技巧 >RTP與RTCP協議介紹

RTP與RTCP協議介紹

本文主要介紹RTPRTCP協議。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

author: ZJ <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />06-11-17 Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]

1流媒體( Streaming Media)

1.1流媒體概念
流媒體技術是網路技術和多媒體技術發展到一定階段的產物。術語流媒體既可以指在網上傳輸連續時基媒體的流式技術,也可以指使用流式技術的連續時基媒體本身。在網上傳輸音訊、視訊等多媒體資訊目前主要有兩種方式:下載和流式傳輸。採用下載方式,使用者需要先下載整個媒體檔案,然後才能進行播放。由於網路頻寬的限制,下載常常要花很長時間,所以這種處理方式延遲很大。而流媒體實現的關鍵技術是流式傳輸。傳輸之前首先對多媒體進行預處理(降低質量和高效壓縮) ,然後使用快取系統來保證資料連續正確地進行傳輸。使用流式傳輸方式,使用者不必像採用下載方式那樣要等到整個檔案全部下載完畢,而是隻需經過幾秒到幾十秒的啟動延時即可在客戶端進行播放和觀看。此時媒體檔案的剩餘部分將在後臺繼續下載。與單純的下載方式相比,
這種對多媒體檔案邊下載邊播放的流式傳輸方式不僅使啟動延時大幅度地縮短,而且對系統快取容量的需求也大大降低。使用流式傳輸的另一個好處是使傳輸那些事先不知道或無法知道大小的媒體資料(如網上直播、視訊會議等) 成為可能。

到目前為止,Internet 上使用較多的流式視訊格式主要有以下三種:RealNetworks 公司的RealMedia ,Apple 公司的QuickTime 以及Microsoft 公司的Advanced Streaming Format (ASF)

1.2支援流媒體的協議

多媒體應用的一個顯著特點是資料量大,並且許多應用對實時性要求比較高。傳統的TCP 協議是一個面向連線的協議,
它的重傳機制和擁塞控制機制都是不適用於實時多媒體傳輸的。RTP 是一個應用型的傳輸層協議,它並不提供任何傳輸可靠性的保證和流量的擁塞控制機制。RTP 位於UDP(User Datagram Protocol) 之上。UDP 雖然沒有TCP 那麼可靠,並且無法保證實時業務的服務質量,需要RTCP 實時監控資料傳輸和服務質量。但是,由於UDP 的傳輸時延低於TCP ,能與音訊和視訊很好地配合。因此,在實際應用中,RTP/ RTCP/ UDP 用於音訊/ 視訊媒體,TCP 用於資料和控制信令的傳輸。目前,支援流媒體傳輸的協議主要有實時傳輸協議RTP( Real-Time Transport Protocol) 、實時傳輸控制協議RTCP(Real-Time Transport Control Protocol) 和實時流協議RTSP(Real-Time Streaming Protocol) 等。下面分別對這三種協議作簡要介紹。流媒體協議棧如圖1 所示。

1 流媒體協議棧

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

2實時傳輸協議RTPReal-Time Transport Protocol):

RTP是針對Internet上多媒體資料流的一個傳輸協議, IETF(Internet工程任務組)作為RFC1889釋出。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間資訊和實現流同步。RTP的典型應用建立在UDP上,但也可以在TCPATM等其他協議之上工作。RTP本身只保證實時資料的傳輸,並不能為按順序傳送資料包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。

2.1 RTP工作機制

威脅多媒體資料傳輸的一個尖銳的問題就是不可預料資料到達時間。但是流媒體的傳輸是需要資料的適時的到達用以播放和回放。rtp協議就是提供了時間標籤,序列號以及其它的結構用於控制適時資料的流放。在流的概念中時間標籤是最重要的資訊。傳送端依照即時的取樣在資料包裡隱蔽的設定了時間標籤。在接受端收到資料包後,就依照時間標籤按照正確的速率恢復成原始的適時的資料。不同的媒體格式調時屬性是不一樣的。但是rtp本身並不負責同步,rtp只是傳輸層協議,為了簡化運輸層處理,提高該層的效率。將部分運輸層協議功能(比如流量控制)上移到應用層完成。同步就是屬於應用層協議完成的。它沒有運輸層協議的完整功能,不提供任何機制來保證實時地傳輸資料,不支援資源預留,也不保證服務質量。rtp報文甚至不包括長度和報文邊界的描述。同時rtp協議的資料報文和控制報文的使用相鄰的不同埠,這樣大大提高了協議的靈活性和處理的簡單性。 rtp協議和udp二者共同完成運輸層協議功能。udp協議只是傳輸資料包,不管資料包傳輸的時間順序。 rtp的協議資料單元是用udp分組來承載的。在承載rtp資料包的時候,有時候一幀資料被分割成幾個包具有相同的時間標籤,則可以知道時間標籤並不是必須的。而udp的多路複用讓rtp協議利用支援顯式的多點投遞,可以滿足多媒體會話的需求。 rtp協議雖然是傳輸層協議但是它沒有作為osi體系結構中單獨的一層來實現。rtp協議通常根據一個具體的應用來提供服務,rtp只提供協議框架,開發者可以根據應用的具體要求對協議進行充分的擴充套件。

2.2 RTP協議的報文結構 RTP頭格式如圖2所示:

開始12個八進位制出現在每個RTP包中,而CSRC標識列表僅出現在混合器插入時。各段含義如下:

①版本(V

2位,標識RTP版本。

②填充標識(P

1位,如設定填充位,在包尾將包含附加填充字,它不屬於有效載荷。填充的最後一個八進位制包含應該忽略的八進位制計數。某些加密演算法需要固定大小的填充字,或為在底層協議資料單元中攜帶幾個RTP包。

③擴充套件(X

1位,如設定擴充套件位,固定頭後跟一個頭擴充套件。

CSRC計數(CC

4位,CSRC計數包括緊接在固定頭後CSRC識別符號個數。

⑤標記(M

1位,標記解釋由設定定義,目的在於允許重要事件在包流中標記出來。設定可定義其他標示位,或通過改變位數量來指定沒有標記位。

⑥載荷型別(PT

7位,記錄後面資料使用哪種 Codec receiver 端找出相應的 decoder 解碼出來。

常用 types

Payload Type

Codec

0

PCM μ -Law

8

PCM-A Law

9

G..722 audio codec

4

G..723 audio codec

15

G..728 audio codec

18

G..729 audio codec

34

G..763 audio codec

31

G..761 audio codec

⑦系列號

16位,系列號隨每個RTP資料包而增加1,由接收者用來探測包損失。系列號初值是隨機的,使對加密的文字***更加困難。

⑧時標

32位,時標反映RTP資料包中第一個八進位制數的取樣時刻,取樣時刻必須從單調、線性增加的時鐘匯出,以允許同步與抖動計算。時標可以讓receiver端知道在正確的時間將資料播放出來。 由上圖可知,如果只有系列號,並不能完整按照順序的將data播放出來,因為如果data中間有一段是沒有資料的,只有系列號的話會造成錯誤,需搭配上讓它知道在哪個時間將data正確播放出來,如此我們才能播放出正確無誤的資訊。

×××C

32位,×××C段標識同步源。此標識不是隨機選擇的,目的在於使同一RTP包連線中沒有兩個同步源有相同的×××C標識。儘管多個源選擇同一個標識的概率很低,所有RTP實現都必須探測並解決衝突。如源改變源傳輸地址,也必須選擇一個新×××C標識以避免插入成環行源。

CSRC列表

015項,每項32位。CSRC列表表示包內的對載荷起作用的源。標識數量由CC段給出。如超出15個作用源,也僅標識15個。CSRC標識由混合器插入,採用作用源的×××C標識。

3.實時傳輸控制協議RTCP(Real-Time Transport Control Protocol)

RTCP負責管理傳輸質量在當前應用程序之間交換控制資訊。在RTP會話期間,各參與者週期性地傳送RTCP包,包中含有已傳送的資料包的數量、丟失的資料包的數量等統計資料。因此,伺服器可以利用這些資訊動態地改變傳輸速率,甚至改變有效載荷型別。RTPRTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網上的實時資料。

3.1 RTCP工作機制

當應用程式開始一個rtp會話時將使用兩個埠:一個給rtp,一個給rtcprtp本身並不能為按順序傳送資料包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠rtcp提供這些服務。在rtp的會話之間週期的發放一些rtcp包以用來傳監聽服務質量和交換會話使用者資訊等功能。rtcp包中含有已傳送的資料包的數量、丟失的資料包的數量等統計資料。因此,伺服器可以利用這些資訊動態地改變傳輸速率,甚至改變有效載荷型別。rtprtcp配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網上的實時資料。根據使用者間的資料傳輸反饋資訊,可以制定流量控制的策略,而會話使用者資訊的互動,可以制定會話控制的策略。

3.2 RTCP資料報

RTCP通訊控制中,RTCP協議的功能是通過不同的RTCP資料報來實現的,主要有如下幾種型別:

SR:傳送端報告,所謂傳送端是指發出RTP資料報的應用程式或者終端,傳送端同時也可以是接收端。

RR:接收端報告,所謂接收端是指僅接收但不傳送RTP資料報的應用程式或者終端。

SDES:源描述,主要功能是作為會話成員有關標識資訊的載體,如使用者名稱、郵件地址、電話號碼等,此外還具有向會話成員傳達會話控制資訊的功能。

BYE:通知離開,主要功能是指示某一個或者幾個源不再有效,即通知會話中的其他成員自己將退出會話。

APP:由應用程式自己定義,解決了RTCP的擴充套件性問題,並且為協議的實現者提供了很大的靈活性。

4資源預訂協議RSVP (ResorceReservationProtocol)

由於音訊和視訊資料流比傳統資料對網路的延時更敏感,要在網路中傳輸高質量的音訊、視訊資訊,除頻寬要求之外,還需其他更多的條件。RSVPInternet上的資源預訂協議,使用RSVP預留部分網路資源(即頻寬),能在一定程度上為流媒體的傳輸提供QoS

5.參考資料

[1]蔣愛權,流媒體技術的Java實現,計算機應用研究200210

[2]吳國勇,網路視訊流媒體技術與應用,北京郵電大學出版社,2001 [3]臺灣國立中央大學電機工程系通訊專題報告VOIP 本文出自 “子 孑” 部落格,請務必保留此出處[url]http://zhangjunhd.blog.51cto.com/113473/25481[/url]