
自從Google于2011年發(fā)布WebRTC以來,WebRTC一直是一個(gè)能夠?qū)⒒ヂ?lián)網(wǎng)瀏覽器轉(zhuǎn)換為強(qiáng)大的多媒體引擎的顛覆性技術(shù)。 WebRTC匯集了先進(jìn)的實(shí)時(shí)通信技術(shù),包括:先進(jìn)的音視頻編解碼器(Opus和VP8/9),強(qiáng)制加密協(xié)議(SRTP和DTLS)和網(wǎng)絡(luò)地址轉(zhuǎn)換器(ICE&STUN)。
根據(jù)最初的定義,WebRTC被指定為P2P(peer-to-peer)技術(shù)。自成立以來,WebRTC已經(jīng)大大降低了Web開發(fā)人員通過簡(jiǎn)單的JavaScript API構(gòu)建實(shí)時(shí)通信應(yīng)用程序的難度。但要清楚,WebRTC是一種技術(shù),而不是一個(gè)完整的應(yīng)用程序或服務(wù)。
雖然WebRTC最初被設(shè)想為純粹的P2P技術(shù),但許多日常業(yè)務(wù)應(yīng)用程序需要集中式媒體功能,通過P2S(peer-to-server)架構(gòu)提高可靠性、效率或擴(kuò)展性。對(duì)于P2P和P2S架構(gòu)之間的問題對(duì)于構(gòu)建WebRTC應(yīng)用程序很重要。
2、P2P到P2S
WebRTC旨在通過其瀏覽器(也稱為P2P)在客戶端之間直接發(fā)送媒體流。在P2P架構(gòu)中,客戶端建立通信之前,首先需要建立到應(yīng)用服務(wù)器(有時(shí)也成為信令服務(wù)器)的信令連接。而 WebRTC規(guī)范中沒有規(guī)定信令方法或協(xié)議,它允許采用現(xiàn)有方法(SIP,WebSockets,XMPP等)或?qū)崿F(xiàn)專有信令過程。應(yīng)用服務(wù)器保存業(yè)務(wù)邏輯,并作為會(huì)話描述協(xié)議(SDP)交換的中介。一旦SDP交換完成,兩個(gè)客戶端之間的直接媒體通信即可開始。

雖然WebRTC主要是瀏覽器到瀏覽器,但是隨著服務(wù)器將媒體錨定在網(wǎng)絡(luò)中以充當(dāng)媒體P2S(如下圖)。在P2S架構(gòu)中,客戶端再次建立到應(yīng)用服務(wù)器的信令連接。在該體系結(jié)構(gòu)中,應(yīng)用服務(wù)器繼續(xù)管理業(yè)務(wù)邏輯,而且還利用到服務(wù)器的媒體控制連接來進(jìn)行客戶端和媒體服務(wù)器之間的SDP交換。一旦SDP交換完成,客戶端和服務(wù)器之間的媒體通信即可開始。

使用服務(wù)器端處理可以引入高級(jí)功能,例如用于合規(guī)性的集中審查,音頻/視頻回放,用于視頻流的媒體分析,從而實(shí)現(xiàn)人臉監(jiān)測(cè)、人臉識(shí)別等。根據(jù)架構(gòu),服務(wù)器端處理可以優(yōu)化帶寬并最大限度地減少客戶端計(jì)算,從而能夠使移動(dòng)客戶延長(zhǎng)電池使用時(shí)間,并為其提供靈活的用戶界面。
對(duì)于支持多個(gè)參與者(會(huì)議,遠(yuǎn)程學(xué)習(xí),聯(lián)絡(luò)中心)的更復(fù)雜的應(yīng)用程序,主要有三個(gè)WebRTC的網(wǎng)絡(luò)結(jié)構(gòu):
- P2P Mesh
- MCU(Multi-point Control Unit)
- SFU(Selective Forwarding Unit)
3、三種WebRCT網(wǎng)絡(luò)結(jié)構(gòu)
3.1 Mesh
音視頻數(shù)據(jù)流只在終端用戶之間相互傳輸,不經(jīng)過任何服務(wù)器節(jié)點(diǎn),而且每個(gè)人都要與其它所有人建立P2P連接。

3.2 MCU
MCU是傳統(tǒng)視頻會(huì)議系統(tǒng)中的核心控制單元,在WebRTC的系統(tǒng)實(shí)現(xiàn)中, 適合于多人音視頻通話場(chǎng)景,MCU可以對(duì)接收到的多路流進(jìn)行轉(zhuǎn)碼和混合,并向每個(gè)終端輸出單路流。

3.3 SFU
SFU從發(fā)布客戶端復(fù)制音視頻流的信息,然后分發(fā)到多個(gè)訂閱客戶端。典型的應(yīng)用場(chǎng)景是1對(duì)多的直播服務(wù)。

3.4 三種的差異
Mesh的特點(diǎn)
每一個(gè)P2P連接有獨(dú)立的傳輸策略控制,通訊質(zhì)量有一定的保障。但是,這種架構(gòu)對(duì)于客戶端系統(tǒng)是一種浪費(fèi),一方面需要分配更多的端口,消耗更多的系統(tǒng)資源;另一方面,由于要向其它三個(gè)客戶端發(fā)送本地音視頻數(shù)據(jù),增加了上行網(wǎng)絡(luò)帶寬的消耗,在同等帶寬條件下,支持的多人通話路數(shù)就相對(duì)有限,視頻質(zhì)量(碼率)也比較低。
MCU的特點(diǎn)
MCU將接收到的多路流進(jìn)行轉(zhuǎn)碼和混合,并向每個(gè)終端輸出單路流的做法,節(jié)省了終端用戶的下行帶寬,并且還能夠?qū)Σ煌W(wǎng)絡(luò)條件的用戶,訂制不同碼率的輸出視頻流,讓多人場(chǎng)景有更好的用戶體驗(yàn)。典型的應(yīng)用場(chǎng)景是多人音視頻通話。
SFU的特點(diǎn)
SFU是解決服務(wù)器性能問題的有吸引力的方法,因?yàn)樗簧婕耙曨l解碼和編碼的計(jì)算費(fèi)用,它以最低的開銷來轉(zhuǎn)發(fā)各路媒體流,典型的應(yīng)用場(chǎng)景是1對(duì)多的直播服務(wù)。
4、野狗的視頻會(huì)議
野狗視頻會(huì)議是一套基于WebRTC標(biāo)準(zhǔn)的多人實(shí)時(shí)音視頻通信方案,可在全球范圍內(nèi)建立穩(wěn)定、高清、流暢的多人音視頻通信。
野狗視頻會(huì)議支持多種瀏覽器,支持iOS、Android系統(tǒng)Native開發(fā),也支持JavaScript語言,開發(fā)者可利用其跨平臺(tái)的特性,結(jié)合Electron、Cordova等,實(shí)現(xiàn)移動(dòng)應(yīng)用和桌面的適配。野狗視頻會(huì)議提供兩種混流模式:SFU和MCU,開發(fā)者可靈活選用。SFU是一種獨(dú)立媒體流訂閱機(jī)制,主要應(yīng)用于需要靈活控制每一路音視頻的場(chǎng)景;MCU則是一種混流下發(fā)機(jī)制,主要應(yīng)用于傳統(tǒng)視頻會(huì)議場(chǎng)景,也可應(yīng)用于會(huì)議直播、混流錄制的實(shí)現(xiàn)。
在實(shí)際應(yīng)用場(chǎng)景當(dāng)中,多人視頻常常需要與場(chǎng)景化功能配合使用。例如多人會(huì)議中的屏幕共享、文檔演示,在線教育中互動(dòng)白板、聊天問答,金融行業(yè)視頻開戶中人臉識(shí)別、風(fēng)險(xiǎn)揭示,社交娛樂中的美顏濾鏡、臉萌貼紙等。這就要求多人視頻會(huì)議SDK支持功能拓展,具備與其他商用軟件足夠的互操作性。野狗專門為此締結(jié)了一批優(yōu)質(zhì)的合作伙伴,與他們提供的商用軟件產(chǎn)品集成測(cè)試,確保完美兼容,以快速響應(yīng)市場(chǎng)及客戶需求。