流媒體傳輸協議(rtp/rtcp/rtsp/rtmp/mms/hls)

常用的流媒體協議主要有HTTP漸進下載和基於RTSP/RTP的實時流媒體協議兩類。在流式傳輸的實現方案中,一般採用HTTP/TCP來傳輸控制信息,而用RTP/UDP來傳輸實時多媒體數據。

1 實時傳輸協議RTP與RTCP

RTP(Real-time Transport Protocol)是用於Internet上針對多媒體數據流的一種傳輸協議。RTP由兩個緊密鏈接部分組成:RTP----傳送具有實時屬性的數據;RTP控制協議(RTCP)----監控服務質量並傳送正在進行的會話參與者的相關信息。

RTP協議是建立在UDP協議上的。RTP協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式。RTP協議常用於流媒體系統(配合RTCP協議)、視頻會議和視頻電話系統(配合H.263或SIP)。

RTP本身並沒有提供按時發送機制或其他服務質量(QoS)保證,它依賴於底層服務去實現這一過程。RTP並不保證傳送或防止無序傳送,也不確定底層網絡的可靠性。RTP實行有序傳送,RTP中的序列號允許接收方重組發送方的包序列,同時序列號也能用於決定適當的包位置,例如:在視頻解碼中,就不需要順序解碼。

實時傳輸控制協議(Real-time Transport Control Protocol,RTCP)是實時傳輸協議(RTP)的一個姐妹協議。RTCP爲RTP媒體流提供信道外控制。RTCP定期在流多媒體會話參加者之間傳輸控制數據。RTCP的主要功能是爲RTP所提供的服務質量提供反饋。RTCP收集相關媒體連接的統計信息,例如:傳輸字節數,傳輸分組數,丟失分組數,時延抖動,單向和雙向網絡延遲等等。網絡應用程序可以利用RTCP所提供的信息試圖提高服務質量,比如限制信息流量或改用壓縮比較小的編解碼器。RTCP本身不提供數據加密或身份認證,其伴生協議SRTCP(安全實時傳輸控制協議)則可用於此類用途。

2 實時流協議RTSP

RTSP協議定義了一對多應用程序如何有效通過IP網絡傳送多媒體數據。RTSP在體系結構上位於RTP和RTCP之上,它使用TCP或RTP完成數據傳輸。HTTP與RTSP相比,HTTP傳送HTML,而RTP傳送的是多媒體數據。HTTP請求由客戶機發出,服務器做出響應;RTSP可以是雙向的,即客戶機和服務器都可以發出請求。

RTSP與RTP最大的區別在於:RTSP是一種雙向實時數據傳輸協議,它允許客戶端向服務器端發送請求,如回放、快進、倒退等操作。當然RTSP可基於RTP來傳送數據,還可以選擇TCP、UDP、組播UDP等通道來發送數據,具有很好的擴展性。它是一種類似於HTTP協議的網絡應用協議。

3 資源預定協議RSVP

RSVP即資源預訂協議,使用RSVP預留一部分網絡資源(即帶寬),能在一定程度上爲流媒體的傳輸提供QoS。RSVP、RTSP與RTP協議工作在不同的層次,如下圖所示。

4 實時消息傳輸協議RTMP

RTMP(Real Time Messaging Protocol)是Adobe Systems公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸開發的開放協議。它有三種變種:

(1)工作在TCP之上的明文協議,使用端口1935;

(2)RTMPT封裝在HTTP請求之中,可穿越防火牆;

(3)RTMPS類似RTMPT,但使用的是HTTPS連接。

RTMP視頻播放的特點:

(1)RTMP協議是採用實時的流式傳輸,所以不會緩存文件到客戶端,這種特性說明用戶想下載RTMP協議下的視頻是比較難的;

(2)視頻流可以隨便拖動,既可以從任意時間點向服務器發送請求進行播放,並不需要視頻有關鍵幀。相比而言,HTTP協議下視頻需要有關鍵幀纔可以隨意拖動。

(3)RTMP協議支持點播/回放(通俗點將就是支持把flv,f4v,mp4文件放在RTMP服務器,客戶端可以直接播放),直播(邊錄製視頻邊播放)。

RTMP環境的架設:

因爲該協議是adobe公司開發的,所以最初服務器端架設的環境是FMS(Flash Media Server),該軟件爲收費軟件,價格昂貴。後來,開源軟件red5的推出,使rtmp協議的架設成本大大縮小,但是在性能方面不如fms的穩定。此外,wowza雖然是收費的,但價格比較適中。

5 微軟媒體服務器協議MMS

MMS(Microsoft Media Server Protocol)是用來訪問並流式接收Window Media服務器中.asf文件的一種協議。MMS協議用於訪問Windows Media發佈點上的單播內容。MMS是連接Windows Media單播服務的默認方法。若觀衆在Windows Media Player中鍵入一個URL以連接內容,而不是通過超級鏈接訪問內容,則他們必須是MMS協議引用該流。MMS的預設端口是1755.

6 HLS

HTTP Live Streaming(HLS)是蘋果公司實現的基於HTTP的流媒體傳輸協議,可實現流媒體的直播和點播,主要應用於iOS系統。HLS點播是分段HTTP點播,不同在於它的分段非常小。要實現HLS點播,重點在於對媒體文件分段,目前有不少開源工具可以使用。

相對於常見的流媒體直播協議,HLS直播最大的不同在於,直播客戶端獲取到的並不是一個完整的數據流,HLS協議在服務器端將直播數據流存儲爲連續的、很短時長的媒體文件(MPEG-TS格式),而客戶端則不斷的下載並播放這些小文件,因爲服務器總是會將最新的直播數據生成新的小文件,這樣客戶端只要不停的按順序播放從服務器獲取到的文件,就實現了直播。由此可見,基本上可以認爲,HLS是以點播的技術方式實現直播。由於數據通過HTTP協議傳輸,所以完全不用考慮防火牆或者代理的問題,而且分段文件的時長很短,客戶端可以很快的選擇和切換碼率,以適應不同帶寬條件下的播放。不過HLS的這種技術特點,決定了它的延遲一般總是會高於普通的流媒體直播協議。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章