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