2.3 模塊與API之間的關(guān)系
在這節(jié),我們將通過WebRTC的工作原理來闡述WebRTC各個組成模塊與所封裝的JavaScript API之間的關(guān)聯(lián)關(guān)系。圖2是一個WebRTC的工作原理示意圖。在圖2中,有兩個集成WebRTC的瀏覽器,一個信令服務(wù)器,一個STUN/TURN服務(wù)器。瀏覽器訪問基于WebRTC的Web應(yīng)用。信令服務(wù)器對Web應(yīng)用的信令進(jìn)行解析。STUN/TURN服務(wù)器對Web應(yīng)用進(jìn)行NAT或防火墻穿透,以建立兩個客戶端的通信連接。具體工作流程如下:首先,使用Web應(yīng)用的雙方通過PeerConnection API將呼叫和應(yīng)答請求發(fā)送給信令服務(wù)器;然后,STUN/TURN服務(wù)器對呼叫雙方的防火墻和NAT進(jìn)行穿透;之后,MediaStream通過音視頻引擎對音視頻數(shù)據(jù)進(jìn)行采集;最后,Web應(yīng)用將采集到的音視頻數(shù)據(jù)發(fā)送到DataChanel,并采用RTP/SRTP協(xié)議進(jìn)行傳輸。
圖 2 WebRTC各個組成模塊與所封裝的JavaScript API之間的關(guān)聯(lián)關(guān)系
2.4 應(yīng)用場景
WebRTC的音視頻應(yīng)用從連接的客戶端的數(shù)量角度來區(qū)分,可以分為一對一模式和多人模式。同時,WebRTC為了取得快速的發(fā)展,其勢必對傳統(tǒng)網(wǎng)絡(luò),例如SIP,XMPP和PSTN網(wǎng)絡(luò)進(jìn)行無縫對接。
A. 一對一模式
該模式是最簡單的應(yīng)用模式。在上文圖2中闡述WebRTC模塊與API之間關(guān)聯(lián)關(guān)系時的例子就是一個一對一模式。該模式的工作原理描述如下。首先,基于WebRTC的Web應(yīng)用通過Web服務(wù)器來進(jìn)行信令解析。然后,每個瀏覽器將本地采集到的音視頻數(shù)據(jù)發(fā)送給對端瀏覽器。最后,每個瀏覽器對本地和對端的多媒體數(shù)據(jù)進(jìn)行處理和顯示。
圖 3 一對一模式
B. 多人模式
相比較于一對一模式,多人模式則更加復(fù)雜。該模式與一對一模式不同的是,每個瀏覽器將本地采集到的音視頻數(shù)據(jù)廣播給其余所有瀏覽器(如圖4(a)所示)。由于終端的處理能力,電池續(xù)航能力以及網(wǎng)絡(luò)帶寬的限制,WebRTC目前最多能夠支持6個人同時進(jìn)行音視頻服務(wù)。為擺脫由于終端的有限能力對WebRTC多人模式中人數(shù)的限制,目前,有些公司(例如因特爾)為WebRTC的特定應(yīng)用提供MCU媒體控制單元。MCU負(fù)責(zé)對不同格式的音視頻進(jìn)行轉(zhuǎn)碼和將多人模式中的音視頻流整合在一起再廣播給每一個終端。基于MCU的多人模式的工作流程,如圖4(b)所示。
。╝) (b)
圖 4(a)WebRTC原生多人通信模式,(b)基于MCU的多人通信模式。
C. WebRTC與現(xiàn)有網(wǎng)絡(luò)的互通模式
由于在WebRTC出現(xiàn)之前,實時通訊業(yè)務(wù)已經(jīng)取得了很大的發(fā)展。因此,WebRTC應(yīng)與現(xiàn)有的實時通信業(yè)務(wù)無縫對接,才能取得快速的發(fā)展。為了與傳統(tǒng)實時通信業(yè)務(wù)進(jìn)行無縫對接,目前,各個廠商根據(jù)WebRTC和現(xiàn)有的實時通信業(yè)務(wù)開發(fā)出相應(yīng)的網(wǎng)關(guān)設(shè)備,比如對應(yīng)SIP/XMPP的服務(wù)器和PSTN(Public Switched Telephone Network——公共交換電話網(wǎng)絡(luò))網(wǎng)關(guān)。該網(wǎng)關(guān)負(fù)責(zé)將通過瀏覽器訪問的Web應(yīng)用和傳統(tǒng)客戶端訪問的現(xiàn)有實時通信應(yīng)用的信令進(jìn)行適配,甚至多媒體格式之間的轉(zhuǎn)化。具體的業(yè)務(wù)邏輯如圖5所示。