流媒體與直播技術學習筆記

基本概念

(1)流媒體

流媒體指的是這樣的一種媒體傳輸方式,媒體提供方編碼、壓縮和分發媒體流(相關的數據包),終端用戶不斷地獲取、解碼並播放媒體,區別於以前先下載整個媒體文件後觀看。

(2)流式傳輸

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

1. 順序流式傳輸(Progressive streaming)

涵義:順序下載,在下載文件的同時用戶可觀看再線媒體。

特點:在給定時刻,用戶只能觀看已下載的那部分,而不能跳到還未下載的前頭部分,順序流式傳輸不像實時流式傳輸在傳輸期間根據用戶連接的速度做調整。由於標準的HTTP服務器可發送這種形式的文件,也不需要其他特殊協議,故也稱為HTTP流式傳輸。是一種點播技術。

2. 實時流式傳輸(Realtime streaming)

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

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

流媒體技術原理 關鍵詞:緩存、協議。

客戶端與Web服務器之間使用HTTP/TCP交換控制信息,獲取相關參數初始化A/V(指Audio/Video)Helper程序,A/VHelper程序及A/V服務器運行RTSP協議(實時流控制協議),以交換A/V傳輸所需的控制信息。A/V服務器使用RTP/UDP協議(RTP,實時傳輸協議)將A/V數據傳輸給A/V客戶程序(一般可認為客戶程序等同於Helper程序),在傳輸中它們要被分解為許多包,在網絡中進行斷續的異步傳輸,然後進入客戶端以環形鏈表結構(丟棄已經播放的內容)為基礎的高速緩存系統(彌補延遲和抖動的影響,並保證數據包的順序正確),最後A/V客戶程序使用專有的播放器進行解碼播出。

流媒體相關技術

(1)智能流技術

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

(2)分流(splitting)技術

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

(3)緩存(caching)技術

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

(4)內容分發網絡(CDN)技術

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

直播的實現

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

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

HLS,HTTP 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-module 或 SRS(simple-rtmp-server)(用途:流服務器)