一、流媒體概述
1、采用數據流方式在網絡上進行播放的媒體格式;
2、內容提供方可以將視頻文件或是攝像頭數據以數據包的方式,通過特定的協議傳送到網絡上供用戶使用;
3、用戶通過指定的協議對網絡數據進行解釋,還原成可顯示的數據,顯示給用戶;
4、網絡傳輸媒體文件時一般都會采用壓縮算法對原始數據進行壓縮,降低對網絡帶寬的依賴;
5、傳輸數據時通常保持連貫性,保證數據連續性和實時性;
6、用戶不必像非流式播放那樣等到整個文件才可以播放,只需等到足夠的啟動數據,即可觀看,其余數據將繼續下載,直到播放完畢;
二、主流協議
在流媒體協議中,常用的流媒體協議主要有 HTTP協議,RTSP協議和RTMP協議。 國內視頻網站多采用HTTP+MP4或者HTTP+FLV協議傳輸視頻,而國外使用RTMP,RTSP等專門的流媒體格式。
1、Http 協議
http的視頻協議,主要是在互聯網普及之后。在互聯網上看視頻的需求下形成的。 最初的HTTP視頻協議,沒有任何特別之處,就是通用的HTTP文件漸進式下載。 本質就是下載視頻文件,而利用視頻文件本身的特點,
就是存在頭部信息,和部分視頻幀數據,就完全可以解碼播放了。顯然這種方式需要將視頻文件的頭部信息放在文件的前面。有些例如faststart工具,就是專門做這個功能的。但是最為原始的狀態下,視頻無法進行快進或
者跳轉播放到文件尚未被下載到的部分。這個時候對HTTP協議提出了range-request的要求。這個目前幾乎所有HTTP的服務器都支持了。 range-request,是請求文件的部分數據,指定偏移字節數。在視頻客戶端解析出視
頻文件的頭部后,就可以判斷后續視頻相應的幀的位置了。或者根據碼率等信息,計算相應的為位置。目前常用的基於HTTP協議的視頻協議是來源有APP公司的HSL(HTTP Live Streaming)協議,其優缺點:
優點,自適應碼率流播(adaptive streaming)。效果就是客戶端會根據網絡狀況自動選擇不同碼率的視頻流,條件允許的情況下使用高碼率,網絡繁忙的時候使用低碼率,並且自動在二者間隨意切換。這對移動設備網
絡狀況不穩定的情況下保障流暢播放非常有幫助。實現方法是服務器端提供多碼率視頻流,並且在列表文件中注明,播放器根據播放進度和下載速度自動調整。使用起來也非常簡單。
缺點,實時性相對較差,直播的時候延遲比較高,通常要在10S以上;
2、Rtsp 協議
基於TCP/IP協議體系的一個應用層協議,RTSP在體系結構上位於RTP和RTCP之上,它使用TCP或UDP完成數據傳輸,該協議定義了一對多應用程序如何有效地通過IP網絡傳送多媒體數據。 本協議是最早的視頻傳輸協議。
其中RTSP協議用於視頻點播的會話控制,例如發起點播請求的SETUP請求,進行具體播放操作的PLAY、PAUSE請求,視頻的跳轉也是通過PLAY請求的參數支持的。
優點,可以控制到視頻幀,因此可以承載實時性很高的應用。這個優點是相對於HTTP方式的最大優點。復雜度主要集中在服務器端,可以進行倍速播放功能,其他視頻協議都無法支持。 網絡延時低,一般在0.5S以內;
缺點,就是服務器端的復雜度也比較高,實現起來也比較復雜。ios端不支持該協議,對移動端支持較弱;
3、Rtp 協議(媒體數據傳輸協議)
Rtp數據協議負責對流媒體數據進行封包並實現媒體流的實時傳輸,每一個RTP數據報都由頭部(Header)和負載(Payload)兩個部分組成,其中頭部前12個字節的含義是固定的,而負載則可以是音頻或者視頻數據。
Rtp用到的地方就是 PLAY ,服務器往客戶端傳輸數據用UDP協議,RTP是在傳輸數據的前面加了個12字節的頭(描述信息)。
RTP載荷封裝設計本文的網絡傳輸是基於IP協議,所以最大傳輸單元(MTU)最大為1500字節,在使用IP/UDP/RTP的協議層次結構的時候,這 其中包括至少20字節的IP頭,8字節的UDP頭,以及12字節的RTP頭。這
樣,頭信息至少要占用40個字節,那么RTP載荷的最大尺寸為1460字 節。以H264 為例,如果一幀數據大於1460,則需要分片打包,然后到接收端再拆包,組合成一幀數據,進行解碼播放。
4、RTCP控制協議(媒體數據傳輸質量控制協議)
RTCP控制協議需要與RTP數據協議一起配合使用,當應用程序啟動一個RTP會話時將同時占用兩個端口,分別供RTP和RTCP使用。RTP本身並 不能為按序傳輸數據包提供可靠的保證,也不提供流量控制和擁塞控制,
這些都由RTCP來負責完成。通常RTCP會采用與RTP相同的分發機制,向會話中的 所有成員周期性地發送控制信息,應用程序通過接收這些數據,從中獲取會話參與者的相關資料,以及網絡狀況、分組丟失概率等反饋信
息,從而能夠對服務質量進 行控制或者對網絡狀況進行診斷。
RTCP協議的功能是通過不同的RTCP數據報來實現的,主要有如下幾種類型:
SR:發送端報告,所謂發送端是指發出RTP數據報的應用程序或者終端,發送端同時也可以是接收端。(SERVER定時間發送給CLIENT)。
RR:接收端報告,所謂接收端是指僅接收但不發送RTP數據報的應用程序或者終端。(SERVER接收CLIENT端發送過來的響應)。
SDES:源描述,主要功能是作為會話成員有關標識信息的載體,如用戶名、郵件地址、電話號碼等,此外還具有向會話成員傳達會話控制信息的功能。
BYE:通知離開,主要功能是指示某一個或者幾個源不再有效,即通知會話中的其他成員自己將退出會話。
APP:由應用程序自己定義,解決了RTCP的擴展性問題,並且為協議的實現者提供了很大的靈活性。
5、RTMP協議
RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。RTMP(Real Time Messaging Protocol)實時消息傳送協議是Adobe Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸 開發的開放協議。
該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平台和支持RTMP協議的流媒體/交互服務器之間進行音視
頻和數據通信。支持該協議的軟件包括Adobe Media Server/Ultrant Media Server/red5等。
優點,支持直播、點播
缺點, 需要專用的服務器。
三、協議總結
1、協議體系結構
2、Rtsp協議一般與RTP/RTCP協議混合使用;
3、Rtsp / Http 協議是共有協議,有專門組織維護,Rtmp協議是私有協議;
4、RTMP和HTTP有adaptive streaming的技術,RTSP沒有;
5、RTSP實時性是最好的,HTTP實時性比較差;
6、ios不支持rtsp,安卓支持;