【轉】流媒體與直播技術


一、基本概念

1、流媒體

流媒體又叫流式媒體,它是指商家用一個視頻傳送服務器把節目當成數據包發出,傳送到網絡上。用戶通過解壓設備對這些數據進行解壓后,節目就會像發送前那樣顯示出來。

  這個過程的一系列相關的包稱為“流”。流媒體實際指的是一種新的媒體傳送方式,而非一種新的媒體。

    流媒體技術全面應用后,人們在網上聊天可直接語音輸入;如果想彼此看見對方的容貌、表情,只要雙方各有一個攝像頭就可以了;在網上看到感興趣的商品,點擊以后,講解員和商品的影像就會跳出來;更有真實感的影像新聞也會出現。

     所謂流媒體是指采用流式傳輸的方式在Internet播放的媒體格式。如:音頻、視頻或多媒體文件。流式媒體在播放前並不下載整個文件,只將開始部分內容存入內存,流式媒體的數據流隨時傳送隨時播放,只是在開始時有一些延遲。流媒體實現的關鍵技術就是流式傳輸。

    流式傳輸方式則是將整個A/V及3D等多媒體文件經過特殊的壓縮方式分成一個個壓縮包,由視頻服務器向用戶計算機連續、實時傳送。

  在采用流式傳輸方式的系統中,用戶不必像采用下載方式那樣等到整個文件全部下載完畢,而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備(硬件或軟件)對壓縮的A/V、3D等多媒體文件解壓后進行播放和觀看。此時多媒體文件的剩余部分將在后台的服務器內繼續下載。

  與單純的下載方式相比,這種對多媒體文件邊下載邊播放的流式傳輸方式不僅使啟動延時大幅度地縮短,而且對系統緩存容量的需求也大大降低。

2、流式傳輸

傳統的網絡傳輸音視頻等多媒體信息的方式是完全下載后再播放,下載常常要花數分鍾甚至數小時。

采用流媒體技術,就可實現流式傳輸,將聲音、影像或動畫由服務器向用戶計算機進行連續、不間斷傳送,用戶不必等到整個文件全部下載完畢,而只需經過幾秒或十幾秒的啟動延時即可進行觀看。當聲音視頻等在用戶的機器上播放時,文件的剩余部分還會從服務器上繼續下載。

如果將文件傳輸看作是一次接水的過程,過去的傳輸方式就像是對用戶做了一個規定,必須等到一桶水接滿才能使用它,這個等待的時間自然要受到水流量大小和桶的大小的影響。

流式傳輸,就比如,打開水頭龍,等待一小會兒,水就會源源不斷地流出來,而且可以隨接隨用,因此,不管水流量的大小,也不管桶的大小,用戶都可以隨時用上水。

流式傳輸時,聲音、影像或動畫等時基媒體由音視頻服務器向用戶計算機的連續、實時傳送,用戶不必等到整個文件全部下載完畢,而只需經過幾秒或十數秒的啟動延時即可進行觀看。當聲音等時基媒體在客戶機上播放時,文件的剩余部分將在后台從服務器內繼續下載。流式不僅使啟動延時成十倍、百倍地縮短,而且不需要太大的緩存容量。流式傳輸避免了用戶必須等待整個文件全部從Internet上下載才能觀看的缺點。

通過網絡傳送媒體的技術總稱。實現方法:

①順序流式傳輸是順序下載,在下載文件的同時用戶可觀看在線媒體,在給定時刻,用戶只能觀看已下載的那部分,而不能跳到還未下載的前頭部分,順序流式傳輸不象實時流式傳輸在傳輸期間根據用戶連接的速度做調整。

由於標准的HTTP服務器可發送這種形式的文件,也不需要其他特殊協議,它經常被稱作HTTP流式傳輸。

  順序流式傳輸比較適合高質量的短片段,如片頭、片尾和廣告,由於該文件在播放前觀看的部分是無損下載的,這種方法保證電影播放的最終質量。這意味着用戶在觀看前,必須經歷延遲,對較慢的連接尤其如此。對通過調制解調器發布短片段,順序流式傳輸顯得很實用,它允許用比調制解調器更高的數據速率創建視頻片段。盡管有延遲,畢竟可讓你發布較高質量的視頻片段。

  順序流式文件是放在標准HTTP 或 FTP服務器上,易於管理,基本上與防火牆無關。

     但是順序流式傳輸不適合長片段和有隨機訪問要求的視頻,如:講座、演說與演示。它也不支持現場廣播,嚴格說來,它是一種點播技術。

②實時流式傳輸指保證媒體信號帶寬與網絡連接配匹,使媒體可被實時觀看到。

實時流與HTTP流式傳輸不同,他需要專用的流媒體服務器與傳輸協議。實時流式傳輸總是實時傳送,特別適合現場事件,也支持隨機訪問,用戶可快進或后退以觀看前面或后面的內容。

  理論上,實時流一經播放就可不停止,但實際上,可能發生周期暫停。實時流式傳輸必須配匹連接帶寬,這意味着在以調制解調器速度連接時圖象質量較差。而且,由於出錯丟失的信息被忽略掉,網絡擁擠或出現問題時,視頻質量很差。如欲保證視頻質量,順序流式傳輸也許更好。

實時流式傳輸需要特定服務器,如QuickTime Streaming Server、RealServer與Windows Media Server。這些服務器允許你對媒體發送進行更多級別的控制,因而系統設置、管理比標准HTTP服務器更復雜。

實時流式傳輸還需要特殊網絡協議,如:RTSP (Realtime Streaming Protocol)或MMS (Microsoft Media Server)。這些協議在有防火牆時有時會出現問題,導致用戶不能看到一些地點的實時內容。

一般說來,如視頻為實時廣播,或使用流式傳輸媒體服務器,或應用如RTSP的實時協議,即為實時流式傳輸。如使用HTTP服務器,文件即通過順序流發送。采用那種傳輸方法依賴你的需求。當然,流式文件也支持在播放前完全下載到硬盤。

二、流媒體影響力

由於流媒體技術在一定程度上突破了網絡帶寬對多媒體信息傳輸的限制,因此被廣泛運用於網上直播、網絡廣告、視頻點播、遠程教育、遠程醫療、視頻會議、企業培訓、電子商務等多種領域。

流媒體技術為傳統媒體在互聯網上開辟更廣闊的空間提供了可能。廣播電視媒體節目的上網更為方便,聽眾、觀眾在網上點播節目更為簡單,網上音視頻直播也將得到廣泛運用。

流媒體技術將過去傳統媒體的“推”式傳播,變為受眾的“拉” 式傳播,受眾不再是被動地接受來自廣播電視的節目,而是在自己方便的時間來接收自己需要的信息。這將在一定程度上提高受眾的地位,使他們在新聞傳播中占有主動權,也使他們的需求對新聞媒體的活動產生更為直接的影響。

  流媒體技術的廣泛運用也將模糊廣播、電視與網絡之間的界限,網絡既是廣播電視的輔助者與延伸者,也將成為它們的有力的競爭者。

  利用流媒體技術,網絡將提供新的音視頻節目樣式,也將形成新的經營方式,例如收費的點播服務。

  發揮傳統媒體的優勢,利用網絡媒體的特長,保持媒體間良好的競爭與合作,是未來網絡的發展之路,也是未來傳統媒體的發展之路。

三、流媒體技術原理

流式傳輸的實現需要緩存。

  因為Internet以包傳輸為基礎進行斷續的異步傳輸,對一個實時A/V源或存儲的A/V文件,在傳輸中它們要被分解為許多包,由於網絡是動態變化的,各個包選擇的路由可能不盡相同,故到達客戶端的時間延遲也就不等,甚至先發的數據包還有可能后到。為此,使用緩存系統來彌補延遲和抖動的影響,並保證數據包的順序正確,從而使媒體數據能連續輸出,而不會因為網絡暫時擁塞使播放出現停頓。

通常高速緩存所需容量並不大,因為高速緩存使用環形鏈表結構來存儲數據:通過丟棄已經播放的內容,流可以重新利用空出的高速緩存空間來緩存后續尚未播放的內容。

流式傳輸的實現需要合適的傳輸協議。由於TCP需要較多的開銷,故不太適合傳輸實時數據。

在流式傳輸的實現方案中,一般采用HTTP/TCP來傳輸控制信息,而用RTP/UDP來傳輸實時聲音數據。

流式傳輸的過程一般是這樣的:用戶選擇某一流媒體服務后,Web瀏覽器與Web服務器之間使用HTTP/TCP交換控制信息,以便把需要傳輸的實時數據從原始信息中檢索出來;然后客戶機上的Web瀏覽器啟動A/VHelper程序,使用HTTP從Web服務器檢索相關參數對Helper程序初始化。這些參數可能包括目錄信息、A/V數據的編碼類型或與A/V檢索相關的服務器地址。

A/VHelper程序及A/V服務器運行實時流控制協議(RTSP),以交換A/V傳輸所需的控制信息。與CD播放機或VCRs所提供的功能相似,RTSP提供了操縱播放、快進、快倒、暫停及錄制等命令的方法。A/V服務器使用RTP/UDP協議將A/V數據傳輸給A/V客戶程序(一般可認為客戶程序等同於Helper程序),一旦A/V數據抵達客戶端,A/V客戶程序即可播放輸出。

四、流媒體相關技術

1、智能流技術

自動檢測網絡狀況,並將音視頻的屬性調整到最佳,使用用戶收到與其網絡速度相符的媒體流,從而獲取最佳的用戶體驗。

2、分流(splitting)技術

一般只在直播中使用。發送服務器將媒體流發送到分布在各地的多個接收服務器,客戶端可以就近訪問服務器獲得較高質量的媒體流,同時減少帶寬使用。推流為將直播內容推送至服務器的過程;拉流為服務器已有直播內容,用指定地址進行拉取的過程。

緩存(caching)技術

解決由於異步網絡、網絡延遲和抖動導致的數據包錯序的問題,數據包先緩存在本地,而緩存系統使用環形鏈表結構丟棄掉已經播放的內容,防止緩存溢出。

內容分發網絡(CDN)技術

架構在IP網絡之上的一個內容疊加網,通過引入主動內容管理、全局負載均衡和內容緩存等技術,將用戶請求的流媒體內容發布到距離用戶最近的網絡邊緣,從而提供響應速度,減輕骨干網絡的壓力。

五、流媒體傳輸模式

流媒體之所以能夠實現多媒體數據的實時播放是采用了專門的網絡控制協議和數據傳輸機制。服務器端有專門的流媒體發布系統,而客戶端則有專門的播放器,這兩部分都需要通過數據緩存區進行數據的緩存。

與普通的分組交換網絡不同,流媒體系統的緩存區中的數據在數據傳輸過程中是動態的,也可成為是交換狀態的,數據以堆棧方式進出緩沖區,而不需要等待數據全部達到客戶機后才從緩沖區中被釋放出來,由於數據緩沖區中的數據是“流動”的,再加上數據的播放需要維持一個穩定的數據輸出速度,隨時都要求緩沖區有相應的數據提供給播放器,如果沒有相應的數據,則會出現內容播放過程中的暫停和畫面的條約。

出現前一種情況一般是由於網絡傳輸速度跟不上數據的播放速度,而發生了數據的下溢,而后一種情況的發生是由於網絡傳輸速度過快,超過了播放的速度,而又沒有適當的傳輸控制而造成的數據上溢。

六、直播的實現

(1)直播中使用的流媒體協議

RTMPReal Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平台和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。RTMP 基於 flash 無法在 iOS 的瀏覽器里播放,但是實時性比 HLS 要好。

HLSHTTP Live Streaming(HTTP直播流技術),Apple的動態碼率自適應技術。主要用於PC和Apple終端的音視頻服務。包括一個m3u(8)的索引文件,TS媒體分片文件和key加密串文件。

2、直播的模塊划分

視頻錄制端:一般是電腦上的音視頻輸入設備或者手機端的攝像頭或者麥克風,目前以移動端的手機視頻為主。技術:webRTC(用途:H5視頻錄制)

視頻播放端:可以是電腦上的播放器,手機端的 Native 播放器,還有就是 H5 的 video 標簽等,目前還是已手機端的 Native 播放器為主。技術:HLS協議或RTMP協議(用途:視頻播放)、ffmpeg(用途:使用RTMP協議時進行移動端視頻解碼)

視頻服務器端:一般是一台 nginx 服務器,用來接受視頻錄制端提供的視頻源,同時提供給視頻播放端流服務。技術:RTMP協議(用途:上傳視頻流)、nginx rtmp-moduleSRS(simple-rtmp-server)(用途:流服務器)

 

 
 

 

 
 

 



作者:陶小爬
鏈接:https://www.jianshu.com/p/c2e032f847c0
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。

參照:https://www.jianshu.com/p/c2e032f847c0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM