WebRTP直播

我們都知道,WebRTC是面向互聯網的一種即時通信標準,由於被Chrome、火狐、Safari等主流瀏覽器支持,並提供了一致和簡潔的API,使得開發WebRTC的視頻通信應用非常簡單和流行。

v2-e5c71342e6653410c649d7ff76f9b185_720w.jpg

在大多數情況下,我們認爲雙向視頻通信技術和視頻直播技術是兩種不同的技術,一個做視頻通話,一個做單向直播(在以往的直播方案中,絕大部分是採用rtmp協議做直播上行的)。有沒有可能使用WebRTC進行視頻直播呢?這樣既可以利用WebRTC的低延遲和良好的網絡適應性,又可以充分利用WebRTC API的簡潔性獲得更高的開發效率和靈活性。更關鍵的一點是,使用WebRTC技術做直播,我們可以直接利用Chrome等瀏覽器的強大能力和跨平臺特性,衍生出更靈活和簡單的視頻直播生態。

答案是肯定的,WebRTP做直播的方案完全可行: 使用WebRTC終端(瀏覽器或APP)作爲視頻採集端,將視頻通過RTP協議上行傳輸到流媒體服務器,再由服務器進行視頻協議的轉換和播出。

v2-3652c8425b283f7bbc3c3b161ee31279_720w.jpg

直播流程中參與的節點主要有三個: 直播發起端、流媒體服務器和播放終端。

直播發起端的實現相對簡單,可以使用js腳本,利用瀏覽器的WebRTC API來實現視音頻的採集、合成、編碼和傳輸,也可以使用的Android或iOS的WebRTC SDK來實現。有一定js開發能力或app開發能力的程序員可以勝任這部分工作。

流媒體服務器的開發相對是個難點,需要能夠處理WebRTC信令、接收RTP協議並進行協議轉換後對外提供大併發的直播輸出。如果要想降低開發週期和投入,可以使用現有的成熟產品,例如可以選擇國內的流媒體服務器軟件NTV Media Server G3,這個系統在協議轉換和播出能力上表現都是不錯的。

無論採用哪個產品,服務器上的實現功能應該是一致的,即: WebRTP協議適配、音視頻流接收、協議重新複用、播出。這個過程如下圖:

v2-7fcea51f869ef4a783d8d6bacdc77417_720w.jpg

播放終端的工作相對較小,通過流媒體服務器適配後,一般終端不需要做任何改進,可以繼續使用原有的協議和方法進行播出,例如http-flv協議或hls協議。當然也可以開發WebRTC的播放終端。

好了,由於時間原因,我們今天暫時探討到這裏,有疑問的同學可以在知乎和我交流。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章