2.3 模塊與API之間的關(guān)系
在這節(jié),我們將通過(guò)WebRTC的工作原理來(lái)闡述WebRTC各個(gè)組成模塊與所封裝的JavaScript API之間的關(guān)聯(lián)關(guān)系。圖2是一個(gè)WebRTC的工作原理示意圖。在圖2中,有兩個(gè)集成WebRTC的瀏覽器,一個(gè)信令服務(wù)器,一個(gè)STUN/TURN服務(wù)器。瀏覽器訪問(wèn)基于WebRTC的Web應(yīng)用。信令服務(wù)器對(duì)Web應(yīng)用的信令進(jìn)行解析。STUN/TURN服務(wù)器對(duì)Web應(yīng)用進(jìn)行NAT或防火墻穿透,以建立兩個(gè)客戶端的通信連接。具體工作流程如下:首先,使用Web應(yīng)用的雙方通過(guò)PeerConnection API將呼叫和應(yīng)答請(qǐng)求發(fā)送給信令服務(wù)器;然后,STUN/TURN服務(wù)器對(duì)呼叫雙方的防火墻和NAT進(jìn)行穿透;之后,MediaStream通過(guò)音視頻引擎對(duì)音視頻數(shù)據(jù)進(jìn)行采集;最后,Web應(yīng)用將采集到的音視頻數(shù)據(jù)發(fā)送到DataChanel,并采用RTP/SRTP協(xié)議進(jìn)行傳輸。
圖 2 WebRTC各個(gè)組成模塊與所封裝的JavaScript API之間的關(guān)聯(lián)關(guān)系
2.4 應(yīng)用場(chǎng)景
WebRTC的音視頻應(yīng)用從連接的客戶端的數(shù)量角度來(lái)區(qū)分,可以分為一對(duì)一模式和多人模式。同時(shí),WebRTC為了取得快速的發(fā)展,其勢(shì)必對(duì)傳統(tǒng)網(wǎng)絡(luò),例如SIP,XMPP和PSTN網(wǎng)絡(luò)進(jìn)行無(wú)縫對(duì)接。
A. 一對(duì)一模式
該模式是最簡(jiǎn)單的應(yīng)用模式。在上文圖2中闡述WebRTC模塊與API之間關(guān)聯(lián)關(guān)系時(shí)的例子就是一個(gè)一對(duì)一模式。該模式的工作原理描述如下。首先,基于WebRTC的Web應(yīng)用通過(guò)Web服務(wù)器來(lái)進(jìn)行信令解析。然后,每個(gè)瀏覽器將本地采集到的音視頻數(shù)據(jù)發(fā)送給對(duì)端瀏覽器。最后,每個(gè)瀏覽器對(duì)本地和對(duì)端的多媒體數(shù)據(jù)進(jìn)行處理和顯示。
圖 3 一對(duì)一模式
B. 多人模式
相比較于一對(duì)一模式,多人模式則更加復(fù)雜。該模式與一對(duì)一模式不同的是,每個(gè)瀏覽器將本地采集到的音視頻數(shù)據(jù)廣播給其余所有瀏覽器(如圖4(a)所示)。由于終端的處理能力,電池續(xù)航能力以及網(wǎng)絡(luò)帶寬的限制,WebRTC目前最多能夠支持6個(gè)人同時(shí)進(jìn)行音視頻服務(wù)。為擺脫由于終端的有限能力對(duì)WebRTC多人模式中人數(shù)的限制,目前,有些公司(例如因特爾)為WebRTC的特定應(yīng)用提供MCU媒體控制單元。MCU負(fù)責(zé)對(duì)不同格式的音視頻進(jìn)行轉(zhuǎn)碼和將多人模式中的音視頻流整合在一起再?gòu)V播給每一個(gè)終端;贛CU的多人模式的工作流程,如圖4(b)所示。
。╝) (b)
圖 4(a)WebRTC原生多人通信模式,(b)基于MCU的多人通信模式。
C. WebRTC與現(xiàn)有網(wǎng)絡(luò)的互通模式
由于在WebRTC出現(xiàn)之前,實(shí)時(shí)通訊業(yè)務(wù)已經(jīng)取得了很大的發(fā)展。因此,WebRTC應(yīng)與現(xiàn)有的實(shí)時(shí)通信業(yè)務(wù)無(wú)縫對(duì)接,才能取得快速的發(fā)展。為了與傳統(tǒng)實(shí)時(shí)通信業(yè)務(wù)進(jìn)行無(wú)縫對(duì)接,目前,各個(gè)廠商根據(jù)WebRTC和現(xiàn)有的實(shí)時(shí)通信業(yè)務(wù)開(kāi)發(fā)出相應(yīng)的網(wǎng)關(guān)設(shè)備,比如對(duì)應(yīng)SIP/XMPP的服務(wù)器和PSTN(Public Switched Telephone Network——公共交換電話網(wǎng)絡(luò))網(wǎng)關(guān)。該網(wǎng)關(guān)負(fù)責(zé)將通過(guò)瀏覽器訪問(wèn)的Web應(yīng)用和傳統(tǒng)客戶端訪問(wèn)的現(xiàn)有實(shí)時(shí)通信應(yīng)用的信令進(jìn)行適配,甚至多媒體格式之間的轉(zhuǎn)化。具體的業(yè)務(wù)邏輯如圖5所示。
圖 5 WebRTC與現(xiàn)有網(wǎng)絡(luò)的互通模式
3. WebRTC的發(fā)展與影響
3.1 發(fā)展
首先,Android系統(tǒng)內(nèi)置的瀏覽器和個(gè)人電腦中主流的Web瀏覽器(例如Chrome,F(xiàn)irefox和Opera)已經(jīng)支持WebRTC。根據(jù)Dialogic公布的2013年“WebRTC影響調(diào)查”報(bào)告,在2013年,Android在移動(dòng)智能終端的市場(chǎng)占有率是69%;Chrome,F(xiàn)irefox和Opera三大主流Web瀏覽器在個(gè)人電腦的市場(chǎng)占有率是39%。另外,其他Web瀏覽器(比如,Maxthon)也將支持WebRTC。因此,WebRTC將被快速的部署在日常設(shè)備(即移動(dòng)智能終端和個(gè)人電腦等)。其次,由于WebRTC的本質(zhì)是一項(xiàng)基于Web瀏覽器的實(shí)時(shí)通信技術(shù),它將最先應(yīng)用在IM(Instant Messenger——即時(shí)通信)領(lǐng)域。由于IM應(yīng)用通常應(yīng)用在社交網(wǎng)絡(luò),這使得WebRTC可以依靠社交網(wǎng)絡(luò)所具有的小世界網(wǎng)絡(luò)特性(即雖然這種網(wǎng)絡(luò)中大部份的節(jié)點(diǎn)彼此并不相連,但絕大部份節(jié)點(diǎn)之間經(jīng)過(guò)少數(shù)幾步就可到達(dá)——摘自維基百科)快速的被用戶所使用。基于以上兩點(diǎn),WebRTC技術(shù)的部署和使用將呈現(xiàn)爆炸式的增長(zhǎng)。