WebRTC簡介及其與SIP互通

簡介
WebRTC,名稱源自網(wǎng)頁實時通信(Web Real-Time Communication)的縮寫,是一個支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的技術(shù),是谷歌2010年以6820萬美元收購Global IP Solutions公司而獲得的一項技術(shù)。

這是百度百科上的介紹,維基百科也差不多。對完全小白來講,可能不是很理解這句話。

首先,什么是實時通信?
舉個直白的例子,我們平時打電話就是實時通信?,F(xiàn)在有很多實時通信的軟件,比如 丁丁、有信……這是手機app。PC客戶端像Xlite、Linphone等等。這些客戶端接入網(wǎng)絡(luò),注冊到相應(yīng)的服務(wù)器上就可以進行音頻通信了,支持視頻的還能進行視頻通信。拿Xlite來說,它的信令機制采用的是sip協(xié)議。SIP協(xié)議是IMS網(wǎng)絡(luò)廣泛使用的信令協(xié)議,已經(jīng)很成熟。兩個uesr 通過Xlite客戶端注冊到sip server(如 Asterisk)上,就可以互相撥打?qū)Ψ降奶柎a音視頻通信了,不過就Xlite來說,語音通話是免費的,但是視頻的話,是要支付money軟件才提供視頻功能的……

其次,為什么要提出WebRTC?
一直以來,用戶如果想通過互聯(lián)網(wǎng)進行實時通信,就需要安裝軟件,要么就得在瀏覽器中安裝插件。WebRTC的宗旨是不需用戶安裝任何插件,直接使用瀏覽器就可以進行實時音視頻通信。就是如果WebRTC實現(xiàn)了,我們打開瀏覽器,輸入網(wǎng)址,登陸進去,撥打號碼,就可以互相音視頻了。不再需要安軟件,也不需要安裝額外的瀏覽器插件。Web版QQ大家都用過吧,現(xiàn)在還只能發(fā)發(fā)消息發(fā)發(fā)表情,如果引入WebRTC,那音視頻傳文件都不在話下,現(xiàn)在QQ客戶端有的功能,通過網(wǎng)頁訪問都能體驗,估計到時候都不愿意再裝體積越來越大的QQ客戶端了吧。

最后,需要知道的內(nèi)容

WebRTC已經(jīng)納入HTML5標(biāo)準(zhǔn)
目前支持webrtc的瀏覽器有 Chrome Firefox Opera,IE不支持~
WebRTC沒有指定具體的信令協(xié)議,具體的信令協(xié)議留給應(yīng)用程序?qū)崿F(xiàn)。
webRTC使用JSEP協(xié)議建立會話,什么是JSEP后面說
WebRTC采用ICE實現(xiàn)NAT穿越
WebRTC客戶端之間可以進行點對點的媒體傳輸。
JSEP
JSEP(JavaScript Session Establishment Protocol,JavaScript會話建立協(xié)議)是一個信令A(yù)PI,允許開發(fā)者構(gòu)建更強大的應(yīng)用程序以及增加在信令協(xié)議選擇上的靈活性。

建立會話最關(guān)鍵的就是媒體的協(xié)商,WebRTC雖然沒有指定具體的信令協(xié)議,但是媒體協(xié)商采用了SDP協(xié)議。JSEP是干什么的呢,一方面提供接口如createOffer()供web應(yīng)用程序調(diào)用生成SDP,另一方面提供ICE功能接口。這些功能都由瀏覽器實現(xiàn),瀏覽器
WebRTC傳輸信令(offer/answer)采用Websocket。
需要說明的是,如果web應(yīng)用程序不使用額外的信令協(xié)議,僅使用JSEP,兩個WebRTC client (同一個WebRTC client程序,兩處登陸) 之間也是可以建立鏈接的,即只要應(yīng)用程序能解析用WS傳遞過來的Offer/Answer消息,提取出其中的SDP和ICE信息就可以了。

github上codelabdemo 就是不用其他信令協(xié)議,直接使用JSEP生成offer/answer信令,然后采用ws協(xié)議傳輸實現(xiàn)的。

JSEP并不是信令協(xié)議,可以在JSEP的基礎(chǔ)上引入SIP等信令協(xié)議,使WebRTC應(yīng)用功能更加完備。

WebRTC與SIP互通
要想讓W(xué)ebRTC與sip互通,要解決兩個層面的問題:信令層和媒體層。
兩個網(wǎng)絡(luò)使用的信令機制不同,所以要進行信令的轉(zhuǎn)換,才能完成媒體的協(xié)商,建立會話。媒體層要完成編碼的轉(zhuǎn)換,以及rtp/srtp轉(zhuǎn)換等功能。這里主要說項信令層面的互通。

信令互通方案
目前sip和webrtc信令上互通有兩種解決方案:

用JavaScript實現(xiàn)sip協(xié)議棧,webrtc應(yīng)用程序基于這個協(xié)議棧開發(fā)。這樣webrtc client發(fā)出的信令就是sip信令,但一般采用websocket為信令傳輸協(xié)議。這樣的webrtc client就可以直接注冊到支持ws的sip server上了。
jssip 、sipml5 都是這種解決方案。
通過轉(zhuǎn)換網(wǎng)關(guān)實現(xiàn)協(xié)議的轉(zhuǎn)換,從而互通。一個開源的網(wǎng)關(guān)項目就是 webrtc2sip。
webrtc2sip是一個功能很完善的網(wǎng)關(guān),既實現(xiàn)了信令層,也實現(xiàn)了媒體層,編碼轉(zhuǎn)換功能很強大,也可以直接當(dāng)做媒體網(wǎng)關(guān),用于編解碼,溝通兩端的媒體。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容