[webrtc] WebRTC簡介及其與SIP互通

最近研究一下 webrtc ,看了幾篇paper,以前也嘗試運行驗證了幾個demo,如今把個人理解總結到這裏。git

WebRTC

簡介

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

這是百度百科上的介紹,維基百科也差很少。對徹底小白來說,可能不是很理解這句話。web

首先,什麼是實時通訊?
舉個直白的例子,咱們平時打電話就是實時通訊。如今有不少實時通訊的軟件,好比 丁丁有信……這是手機app。PC客戶端像XliteLinphone等等。這些客戶端接入網絡,註冊到相應的服務器上就能夠進行音頻通訊了,支持視頻的還能進行視頻通訊。拿Xlite來講,它的信令機制採用的是sip協議。SIP協議是IMS網絡普遍使用的信令協議,已經很成熟。兩個uesr 經過Xlite客戶端註冊到sip server(如 Asterisk)上,就能夠互相撥打對方的號碼音視頻通訊了,不過就Xlite來講,語音通話是免費的,可是視頻的話,是要支付money軟件才提供視頻功能的……瀏覽器

其次,爲何要提出WebRTC?
一直以來,用戶若是想經過互聯網進行實時通訊,就須要安裝軟件,要麼就得在瀏覽器中安裝插件。WebRTC的宗旨是不需用戶安裝任何插件,直接使用瀏覽器就能夠進行實時音視頻通訊。就是若是WebRTC實現了,咱們打開瀏覽器,輸入網址,登錄進去,撥打號碼,就能夠互相音視頻了。再也不須要安軟件,也不須要安裝額外的瀏覽器插件。Web版QQ你們都用過吧,如今還只能發發消息發發表情,若是引入WebRTC,那音視頻傳文件都不在話下,如今QQ客戶端有的功能,經過網頁訪問都能體驗,估計到時候都不肯意再裝體積愈來愈大的QQ客戶端了吧。服務器

最後,須要知道的內容websocket

  • WebRTC已經歸入HTML5標準
  • 目前支持webrtc的瀏覽器有 Chrome Firefox OperaIE不支持~
  • WebRTC沒有指定具體的信令協議,具體的信令協議留給應用程序實現。
  • webRTC使用JSEP協議創建會話,什麼是JSEP後面說
  • WebRTC採用ICE實現NAT穿越
  • WebRTC客戶端之間能夠進行點對點的媒體傳輸。

JSEP

JSEP(JavaScript Session Establishment Protocol,JavaScript會話創建協議)是一個信令API,容許開發者構建更強大的應用程序以及增長在信令協議選擇上的靈活性。網絡

創建會話最關鍵的就是媒體的協商,WebRTC雖然沒有指定具體的信令協議,可是媒體協商採用了SDP協議。JSEP是幹什麼的呢,一方面提供接口如createOffer()供web應用程序調用生成SDP,另外一方面提供ICE功能接口。這些功能都由瀏覽器實現,瀏覽器
WebRTC傳輸信令(offer/answer)採用Websocket
須要說明的是,若是web應用程序不使用額外的信令協議,僅使用JSEP,兩個WebRTC client (同一個WebRTC client程序,兩處登錄) 之間也是能夠創建連接的,即只要應用程序能解析用WS傳遞過來的Offer/Answer消息,提取出其中的SDPICE信息就能夠了。app

github上codelabdemo 就是不用其餘信令協議,直接使用JSEP生成offer/answer信令,而後採用ws協議傳輸實現的。socket

JSEP並非信令協議,能夠在JSEP的基礎上引入SIP等信令協議,使WebRTC應用功能更加完備。編碼

WebRTC與SIP互通

要想讓WebRTC與sip互通,要解決兩個層面的問題:信令層媒體層
兩個網絡使用的信令機制不一樣,因此要進行信令的轉換,才能完成媒體的協商,創建會話。媒體層要完成編碼的轉換,以及rtp/srtp轉換等功能。這裏主要說項信令層面的互通。

信令互通方案

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

  • 用JavaScript實現sip協議棧,webrtc應用程序基於這個協議棧開發。這樣webrtc client發出的信令就是sip信令,但通常採用websocket爲信令傳輸協議。這樣的webrtc client就能夠直接註冊到支持ws的sip server上了。
    jssipsipml5 都是這種解決方案。
  • 經過轉換網關實現協議的轉換,從而互通。一個開源的網關項目就是 webrtc2sip。 webrtc2sip是一個功能很完善的網關,既實現了信令層,也實現了媒體層,編碼轉換功能很強大,也能夠直接當作媒體網關,用於編解碼,溝通兩端的媒體。
相關文章
相關標籤/搜索