直播推流拉流概念介紹
推流,指的是把採集階段封包好的內容傳輸到伺服器的過程。介紹一下目前有主流的推送協議,以及各自的優缺點。
- RTMP
RTMP是Real Time Messaging Protocol(實時訊息傳輸協議)的縮寫,是Adobe公司為Flash/AIR平臺和伺服器之間音、視訊及資料傳輸開發的實時訊息傳送協議。RTMP協議基於TCP,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。
RTMP協議中,視訊必須是H264編碼,音訊必須是AAC或MP3編碼,且多以flv格式封包。RTMP是目前最主流的流媒體傳輸協議,對CDN支援良好,實現難度較低,是大多數的直播平臺的選擇。
不過RTMP有著一個最大的不足——不支援瀏覽器,且Adobe已不再更新。因此直播服務要支援瀏覽器的話,需要另外的推送協議支援。
- HLS
Http Live Streaming是由Apple公司定義的基於HTTP的流媒體實時傳輸協議。它的原理是將整個流分為多個小的檔案來下載,每次只下載若干個。伺服器端會將最新的直播資料生成新的小檔案,客戶端只要不停的按順序播放從伺服器獲取到的檔案,就實現了直播。基本上,HLS是以點播的技術實現了直播的體驗。因為每個小檔案的時長很短,客戶端可以很快地切換位元速率,以適應不同頻寬條件下的播放。
分段推送的技術特點,決定了HLS的延遲一般會高於普通的流媒體直播協議。
傳輸內容包括兩部分:一是M3U8描述檔案,二是TS媒體檔案。TS媒體檔案中的視訊必須是H264編碼,音訊必須是AAC或MP3編碼。
由於資料通過HTTP協議傳輸,所以完全不用考慮防火牆或者代理的問題,而且分段檔案的時長很短,不過HLS的
- WebRTC
WebRTC(Web Real-Time Communication),即“源自網頁即時通訊”。WebRTC是一個支援瀏覽器進行實時語音、視訊對話的開源協議。WebRTC的支持者甚多,Google、Mozilla、Opera推動其成為W3C推薦標準。
WebRTC支援目前的主流瀏覽器,並且基於SRTP和UDP,即便在網路訊號一般的情況下也具備較好的穩定性。
此外,WebRTC可以實現點對點通訊,通訊雙方延時低,是實現“連麥”功能比較好的選擇。
拉流是指伺服器已有直播內容,用指定地址進行拉取的過程。