国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

RTCWeb及其與IMS的融合研究

2013-10-08 01:59樂(lè)利鋒段曉東
電信科學(xué) 2013年1期
關(guān)鍵詞:編解碼信令群組

樂(lè)利鋒,彭 晉,段曉東

(中國(guó)移動(dòng)通信研究院 北京 100053)

1 引言

Web應(yīng)用已成為互聯(lián)網(wǎng)應(yīng)用最成功的模式之一,其應(yīng)用范疇已經(jīng)滲透人類(lèi)社會(huì)生活的各個(gè)領(lǐng)域。人們只要通過(guò)一款瀏覽器,就可以享受到無(wú)窮無(wú)盡的Web服務(wù),如各種電子商務(wù)、網(wǎng)絡(luò)游戲、社區(qū)服務(wù)及各種網(wǎng)絡(luò)交友等。與此同時(shí),Web技術(shù)所帶來(lái)的優(yōu)勢(shì)(如統(tǒng)一的客戶端和較好的可維護(hù)性),使一些傳統(tǒng)應(yīng)用紛紛轉(zhuǎn)型到Web模式。Web應(yīng)用開(kāi)發(fā)的簡(jiǎn)單快速也受到開(kāi)發(fā)者青睞,開(kāi)發(fā)者只需要一次開(kāi)發(fā)就可以在任何地方部署,代碼片段很容易在開(kāi)發(fā)者之間被復(fù)制和粘貼,越來(lái)越容易掌握的JavaScript庫(kù)使開(kāi)發(fā)更加快捷。

Web瀏覽器一直隨著Web應(yīng)用的需要持續(xù)加入新的Web 特性,W3C(world wide web consortium,萬(wàn)維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn)化組織追求的Open Web Platform[1]是所有Web技術(shù)的集合,不僅包括基礎(chǔ) Web技術(shù),如 HTML(hypertext markup language,超文本標(biāo)記語(yǔ)言)、CSS(cascading style sheet,級(jí)聯(lián)樣式表)和 JavaScript及 HTTP(hypertext transfer protocol,超文本傳輸協(xié)議)等;還包括新的Web技術(shù),如HTML5[2],允許開(kāi)發(fā)者免費(fèi)使用它所發(fā)布的技術(shù)??梢灶A(yù)見(jiàn),未來(lái)Web將逐漸成為一種準(zhǔn)入門(mén)檻較低、推廣成本可控的統(tǒng)一應(yīng)用平臺(tái)。

基于Web的實(shí)時(shí)通信應(yīng)用可以吸引越來(lái)越多的用戶。Facebook[3]推出了整合Skype的視頻聊天服務(wù),首次使用該功能的用戶需要安裝插件;GoogleTalk[4]網(wǎng)頁(yè)版的正常使用需要安裝Google話音和視頻聊天插件,在瀏覽器中成功安裝插件后,可以直接在Gmail[5]或iGoogle[6]中進(jìn)行視頻和話音通話。但這些插件對(duì)于不同瀏覽器需要不同的開(kāi)發(fā)實(shí)現(xiàn),且需要用戶安裝,具有一定的安全隱患。為了避免引入新插件,一些 Web 網(wǎng)絡(luò)電話(如 Alicall[7]、FlashVoIP[8])采用普及程度比較高的flash player插件實(shí)現(xiàn)實(shí)時(shí)通信功能,可重用flash插件自有RTMP(real time messaging protocol,實(shí)時(shí)消息傳送協(xié)議)[9]信令和媒體傳輸協(xié)議。但flash插件方式需要依托第三軟件提供商的支持,大規(guī)模商用更需要支付相當(dāng)可觀的費(fèi)用。

如果徹底不引入插件,Web實(shí)時(shí)通信客戶端在執(zhí)行效率方面想接近傳統(tǒng)客戶端或插件客戶端的效果,需要瀏覽器提供更多新特性的支持。為了實(shí)現(xiàn)實(shí)時(shí)通信功能,瀏覽器至少需要具備會(huì)話管理、音視頻編解碼引擎和媒體傳輸?shù)裙δ?。?huì)話管理功能允許開(kāi)發(fā)者為上層應(yīng)用實(shí)現(xiàn)呼叫建立和管理;音視頻編解碼引擎功能允許外設(shè)(如麥克風(fēng)及攝像頭)將采集的數(shù)據(jù)進(jìn)行編碼并發(fā)送給網(wǎng)絡(luò),或者將接收的媒體進(jìn)行解碼供外設(shè)(如音箱或者顯示器)呈現(xiàn);媒體傳輸功能實(shí)現(xiàn)對(duì)不同網(wǎng)絡(luò)的NAT(network address translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)或防火墻穿越,并實(shí)現(xiàn)對(duì)媒體內(nèi)容的封裝傳輸。

對(duì)于無(wú)插件Web實(shí)時(shí)通信應(yīng)用開(kāi)發(fā),開(kāi)發(fā)者需要調(diào)用瀏覽器API(application programming interface,應(yīng)用程序編程接口)才能使用其實(shí)時(shí)通信模塊功能。如果缺少對(duì)實(shí)時(shí)通信模塊API的統(tǒng)一使用規(guī)范,不同瀏覽器廠商對(duì)API的定義和使用可能出現(xiàn)很大的差異,開(kāi)發(fā)者需要了解不同版本的API使用方法,從而可能會(huì)影響開(kāi)發(fā)周期。所以,業(yè)界希望Web瀏覽器的實(shí)時(shí)通信能力被標(biāo)準(zhǔn)化的呼聲越來(lái)越高。IETF(internet engineering task force,工程任務(wù)組)和W3C這兩大標(biāo)準(zhǔn)化組織從2011年開(kāi)始積極推進(jìn)基于Web瀏覽器的實(shí)時(shí)通信 (real-time communication in web-browsers,RTCWeb)標(biāo)準(zhǔn)化工作[10,11],力圖提出一個(gè)能夠在Web瀏覽器上實(shí)現(xiàn)用戶之間話音和視頻等實(shí)時(shí)通信的標(biāo)準(zhǔn)化框架。IETF的主要工作在于標(biāo)準(zhǔn)化基于瀏覽器的實(shí)時(shí)通信的架構(gòu)和協(xié)議;W3C的主要工作在于標(biāo)準(zhǔn)化瀏覽器與Web應(yīng)用之間的API,即上層Web應(yīng)用通過(guò)JavaScrip編程調(diào)用這些被標(biāo)準(zhǔn)化的API,實(shí)現(xiàn)對(duì)瀏覽器RTCWeb功能的使用,如捕獲本地設(shè)備的媒體內(nèi)容、呈現(xiàn)媒體內(nèi)容、建立點(diǎn)對(duì)點(diǎn)媒體通信等。隨著RTCWeb標(biāo)準(zhǔn)化的逐漸深入和影響力的逐步增強(qiáng),各大瀏覽器廠商如 Chrome、Mozilla Firefox、Safari和Opera紛紛宣布支持或部分支持RTCWeb功能,RTCWeb瀏覽器逐漸步入舞臺(tái)并占據(jù)相當(dāng)?shù)氖袌?chǎng)份額。

2 RTCWeb關(guān)鍵技術(shù)

2.1 RTCWeb通信模型

IETF RTCWeb工作組建議的典型架構(gòu)[12]如圖1所示。Web客戶端是基于瀏覽器的融合JavaScript、HTML及CSS的技術(shù)客戶端實(shí)現(xiàn),對(duì)瀏覽器和Web服務(wù)器的會(huì)話信令面操作是通過(guò)JSEP控制實(shí)現(xiàn)的;通過(guò)JavaScript調(diào)用RTCWeb API,實(shí)現(xiàn)對(duì)瀏覽器能力的使用;Web客戶端通過(guò)JavaScript與Web服務(wù)器傳遞基于Web Socket承載的RTCWeb信令消息。RTCWeb信令協(xié)議由Web應(yīng)用定義,可以是標(biāo)準(zhǔn)的協(xié)議,如 SIP(session initiation protocol,會(huì)話初 始 協(xié) 議 )、XMPP (extensible messaging and presence protocol,可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)或私有協(xié)議,但媒體協(xié)商可參考基于Offer/Answer模型的ROAP(RTCWeb offer/answer protocol);Web服務(wù)器之間采用雙方認(rèn)同的協(xié)議,如 SIP或者 XMPP;瀏覽器之間采用RTP(real-time transport protocol,實(shí)時(shí)傳輸協(xié)議)或 SRTP(secure RTP,安全實(shí)時(shí)傳輸協(xié)議)用于媒體傳輸,同時(shí)采用ICE(interactive connectivity establishment,交互式連接建立)協(xié)議用于防火墻穿越。

圖1 RTCWeb通信模型

2.2 RTCWeb瀏覽器API

W3C WebRTC工作組的關(guān)注重點(diǎn)在于瀏覽器端API的標(biāo)準(zhǔn)化[13],通過(guò)調(diào)用標(biāo)準(zhǔn)化API實(shí)現(xiàn)從本地設(shè)備(如攝像頭、麥克風(fēng)或網(wǎng)絡(luò)攝像機(jī))捕獲并呈現(xiàn)本地音視頻媒體內(nèi)容、通過(guò)NAT穿越技術(shù)建立點(diǎn)對(duì)點(diǎn)連接、基于點(diǎn)對(duì)點(diǎn)連接交換媒體內(nèi)容。這些功能的實(shí)現(xiàn)主要由Stream API和Peer Connection兩大類(lèi)API實(shí)現(xiàn)。

Stream抽象了對(duì)實(shí)際媒體流表示及操作的方法和屬性,目前定義了若干重要的接口,主要是Media Stream。Media Stream對(duì)象可以表示從遠(yuǎn)端節(jié)點(diǎn)或者發(fā)送給遠(yuǎn)端節(jié)點(diǎn)的媒體流;從網(wǎng)絡(luò)傳輸Media Stream角度看,每個(gè)Media Stream對(duì)象都有一個(gè)輸入和輸出,來(lái)自遠(yuǎn)端節(jié)點(diǎn)的Media Stream(由Peer Connection實(shí)例化產(chǎn)生)可以看作輸入;本地設(shè)備產(chǎn)生的Media Stream(調(diào)用getUserMedia函數(shù)產(chǎn)生)傳給遠(yuǎn)端節(jié)點(diǎn)便有一個(gè)輸出;對(duì)于媒體流的呈現(xiàn),需要專用URL來(lái)表示一個(gè)媒體流并在網(wǎng)頁(yè)中表現(xiàn)出來(lái) (調(diào)用createObjectURL函數(shù)生成)。

Peer Connection抽象了瀏覽器之間信令交互及媒體通道建立的方法和屬性,通過(guò)開(kāi)通媒體通道,Media Stream對(duì)象表示的媒體流可被送到對(duì)端。一個(gè)Peer Connection對(duì)象實(shí)現(xiàn)3類(lèi)功能,即ICE代理 (利用ICE方式實(shí)現(xiàn)NAT穿越,如依賴STUN或者TURN服務(wù)器)、Peer Connection狀態(tài)(標(biāo)識(shí)當(dāng)前連接狀態(tài),如“new”、“opening”、“active”等)和ICE 狀態(tài)(標(biāo)識(shí)穿越狀態(tài),如“new”“waiting”“connected”等)。此外,Peer Connection提供創(chuàng)建媒體協(xié)商的方法和屬性,如Offer/Answer消息構(gòu)建方法(createOffer/createAnswer)及SDP屬性設(shè)置(setLocal Description/setRemote Description)等。

2.3 RTCWeb基于HTML5呈現(xiàn)方式

W3C WebRTC工作組對(duì)于媒體流的訪問(wèn)和呈現(xiàn)使用HTML5 video和audio標(biāo)簽[2],這兩個(gè)新標(biāo)簽提供了在瀏覽器中不使用插件播放視頻和音頻的特性,這正是HTML5區(qū)別于先前版本的顯著特征。非HTML5的瀏覽器一般安裝flash插件播放媒體,正確播放媒體需要使用標(biāo)簽,并且需設(shè)置很多參數(shù),媒體標(biāo)簽將會(huì)非常復(fù)雜。HTML5對(duì)待媒體如同圖片,只需要做簡(jiǎn)單的賦值即可實(shí)現(xiàn)對(duì)資源的訪問(wèn):