視頻直播技術的相關協議

首先,瞭解了一下視頻直播相關的概念。經常使用的幾種視頻協議是:RTMPHTTP-FLVHLSRTP/RTCP協議。nginx

而後咱們會在說明一下直播總體的流程和相關的技術。瀏覽器

視頻直播協議服務器

在直播領域大概能夠分類兩種類型的在直播:一種是交互式直播,另一種是非交互式直播。微信

非交互式直播(如:閱兵直播、NBA直播、歐冠直播等)交互性不強,容許延遲10秒或者10秒以上,特色是源比較少,適合作多路轉碼(用戶能夠根據網絡條件觀看)。網絡

交互式直播的典型場景有:秀場直播、遊戲直播等。這些直播由於對主播和觀衆的互動性要求比較高,因此要求延遲在5s之內。交互式直播的特色是:源比較多,不適合作多路轉碼,中間服務器只做爲中轉角色。優化

直播內容傳輸的介質是網絡,而網絡中傳播視頻或者音頻時須要使用對應的協議,目前適合直播場景的經常使用協議有以下幾種。spa

1.RTMP協議 (HTML 5不支持,Flash支持)插件

RTMP是一種流媒體協議,是Adobe的專利協議。基於TCP,在國內的使用流行度很高。視頻

流行緣由:開源軟件和開源庫的支持穩定完整,最經常使用的推流和拉流的解決方案基本上可以很穩定的運行。如:開源的librtmp推流庫,服務端有nginx-rtmp插件,拉流有ijkPlayer播放庫。遊戲

2.HTTP-FLV協議 (HTML 5 不支持,Flash支持)

即便用HTTP協議流式的傳輸媒體內容。相對於RTMPHTTP更簡單和廣爲人知。內容延遲一樣能夠作到2~5秒,打開速度更快,由於HTTP自己沒有複雜的狀態交互。因此從延遲角度來看,HTTP-FLV要優於RTMP

3.HLS協議 (HTML 支持,Flash支持)

Http Live Streaming,是由蘋果提出基於HTTP的流媒體傳輸協議。HLS有一個很是大的優勢:HTML5能夠直接打開播放;這個意味着能夠把一個直播連接經過微信等轉發分享,不須要安裝任何獨立的APP,有瀏覽器便可,因此流行度很高。社交直播APPHLS能夠說是剛需 。基於HLS的直播流URL是一個m3u8的文件,裏面包含了最近若干個小視頻TS(一種視頻封裝格式,這裏就不擴展介紹)文件。這種播放形式的延時比較高(與TS文件的大小有關係),同城網絡下可以作到5~7秒的延時。

4.RTP/RTCP協議

Real-time Transport Protocol,用於Internet上針對多媒體數據流的一種傳輸層協議。RTCP傳輸交互控制的信令,RTP傳輸實際的媒體數據。

RTP在視頻監控、視頻會議、IP電話上有普遍的應用,由於視頻會議、IP電話的一個重要的使用體驗:內容實時性強。

對比上述3種協議,RTP和它們有一個重要的區別就是默認是使用UDP協議來傳輸數據,而RTMPHTTP是基於TCP協議傳輸。

使用場景分析:實時音視頻流的場景不須要可靠保障,所以也不須要有重傳的機制,實時的看到圖像聲音,網絡抖動時丟了一些內容,畫面模糊和花屏,徹底不重要。TCP爲了重傳會形成延遲與不一樣步,如某一截內容由於重傳,致使1秒之後纔到,那麼整個對話就延遲了1秒,隨着網絡抖動,延遲還會增長成2秒、3秒,若是客戶端播放是不加以處理將嚴重影響直播的體驗。如何進行優化,會在後面的文章中進行講解。

總結:在直播協議的選擇中,若是選擇是RTMPHTTP-FLV則意味着有2~5秒的內容延遲,可是就打開延遲來講,HTTP-FLV 要優於RTMPHLS則有5~7秒的內容延遲。選擇RTP進行直播則能夠作到1秒內的直播延遲。但就目前所瞭解,各大CDN廠商沒有支持基於RTP直播的,因此目前國內主流仍是RTMPHTTP-FLV

  圖玩智能做爲直播專業領域的服務商,爲企業實現直播平臺的二次開發,搭建更具完善的直播系統,歡迎隨時溝通www.toivan.com.

相關文章
相關標籤/搜索