行業(yè)資訊
云直播服務(wù)器支持webrtc推流嗎?經(jīng)常看到WebRTC的點(diǎn)對(duì)點(diǎn)的視頻, 能不能做一個(gè)平臺(tái),讓別人通過(guò)WebRTC播放視頻直播,讓粉絲都可以看見(jiàn)。
針對(duì)主播推流使用 RTMP 存在的 TCP 鏈接耗時(shí)過(guò)長(zhǎng)、擁塞控制完全依賴 TCP 傳輸層、無(wú)法提供實(shí)時(shí)帶寬數(shù)據(jù)來(lái)動(dòng)態(tài)調(diào)整視頻編碼碼率等問(wèn)題引起的推流延遲和卡頓。搭建一個(gè)在線課堂的直播平臺(tái),考慮到清晰度和延遲性,我們一致認(rèn)為使用 WebRTC 最合適。
云直播服務(wù)器:http://www.mogaix.com/cloud/hk.html
原因有兩點(diǎn):首先是“點(diǎn)對(duì)點(diǎn)通信”非常吸引我們,不需要中間服務(wù)器,客戶端直連,通信非常方便;再者是 WebRTC 瀏覽器原生支持,其他客戶端支持也很好,不像傳統(tǒng)直播用 flv.js 做兼容,可以實(shí)現(xiàn)標(biāo)準(zhǔn)統(tǒng)一。
然而令我非常尷尬的是,社區(qū)看了好幾篇文章,理論架構(gòu)寫了一堆,但沒(méi)一個(gè)能跑起來(lái)。WebRTC 里面概念很新也很多,我們可以通過(guò)以下幾點(diǎn)理解它的通信流程。
一、云直播服務(wù)器中的 WebRTC推流是什么意思?
WebRTC (Web Real-Time Communications) 是一項(xiàng)實(shí)時(shí)通訊技術(shù),它允許網(wǎng)絡(luò)應(yīng)用或者站點(diǎn),在不借助中間媒介的情況下,建立瀏覽器之間點(diǎn)對(duì)點(diǎn)(Peer-to-Peer)的連接,實(shí)現(xiàn)視頻流和音頻流或者其他任意數(shù)據(jù)的傳輸。
簡(jiǎn)單的說(shuō),就是 WebRTC 可以不借助媒體服務(wù)器,通過(guò)瀏覽器與瀏覽器直接連接(點(diǎn)對(duì)點(diǎn)),即可實(shí)現(xiàn)音視頻傳輸。
如果你接觸過(guò)直播技術(shù),你就會(huì)知道“沒(méi)有媒體服務(wù)器”多么令人驚訝。以往的直播技術(shù)大多是基于推流/拉流的邏輯實(shí)現(xiàn)的。要想做音視頻直播則必須有一臺(tái)流媒體服務(wù)器做為中間站做數(shù)據(jù)轉(zhuǎn)發(fā)。但是這種推拉流的方案有兩個(gè)問(wèn)題:
二、WebRTC推流解決云直播服務(wù)器中的哪些問(wèn)題?
1、較高的延遲
2、清晰度難以保證
因?yàn)閮啥送ㄐ哦家冗^(guò)服務(wù)器,就好比本來(lái)是一條直路,你偏偏“繞了半個(gè)圈”,這樣肯定會(huì)花更多的時(shí)間,因此直播必然會(huì)有延遲,即使延遲再低也要 1s 以上。
清晰度高低的本質(zhì)是數(shù)據(jù)量的大小。你想象一下,每天乘地鐵上班,早高峰人越多,進(jìn)站的那條道就越容易堵,堵你就會(huì)走走停停,再加上還繞了路,是不是到公司就更晚了。
把這個(gè)例子聯(lián)系到高清晰度的直播:因?yàn)閿?shù)據(jù)量大就容易發(fā)生網(wǎng)絡(luò)擁堵?lián)矶戮蜁?huì)導(dǎo)致播放卡頓,同時(shí)延遲性也會(huì)更高。
但是 WebRTC 就不一樣了,它不需要媒體服務(wù)器,兩點(diǎn)一線直連,首先延遲性一定大大縮短。再者因?yàn)閭鬏斅肪€更短,所以清晰度高的數(shù)據(jù)流也更容易到達(dá),相對(duì)來(lái)說(shuō)不易擁堵,因此播放端不容易卡頓,這樣就兼顧了清晰度與延遲性。
當(dāng)然 WebRTC 也是支持中間媒體服務(wù)器的,有些場(chǎng)景下確實(shí)少不了服務(wù)器轉(zhuǎn)發(fā)。我們互聯(lián)數(shù)據(jù)這篇文章只探討點(diǎn)對(duì)點(diǎn)的模式,旨在幫助大家更容易的了解并上手 WebRTC。