孫建偉 ,李 超 ,2,于 波
1(中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所,沈陽(yáng) 110168)2(中國(guó)科學(xué)院大學(xué),北京 100049)
基于WebRTC應(yīng)用層網(wǎng)關(guān)在iOS端的設(shè)計(jì)與實(shí)現(xiàn)①
孫建偉1,李 超1,2,于 波1
1(中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所,沈陽(yáng) 110168)2(中國(guó)科學(xué)院大學(xué),北京 100049)
隨著近年來(lái)新媒體技術(shù)的快速發(fā)展,用戶對(duì)實(shí)時(shí)音視頻通信的質(zhì)量要求越來(lái)越高.WebRTC技術(shù)的出現(xiàn),以其強(qiáng)大的音視頻處理引擎迅速占領(lǐng)市場(chǎng),對(duì)多媒體通信行業(yè)產(chǎn)生了巨大的影響.然而WebRTC提供的JSEP僅僅能完成簡(jiǎn)單的媒體鏈接功能,在企業(yè)級(jí)的通信中需要結(jié)合其他模塊或者信令協(xié)議才能勝任完整的應(yīng)用.本文著重研究了WebRTC與SIP的互通問(wèn)題,并在iOS端基于WebRTC技術(shù)設(shè)計(jì)實(shí)現(xiàn)了一種應(yīng)用層網(wǎng)關(guān),通過(guò)實(shí)驗(yàn)驗(yàn)證了該網(wǎng)關(guān)的可行性與實(shí)用性.
WebRTC; 應(yīng)用層網(wǎng)關(guān); iOS; 實(shí)時(shí)通信
隨著多媒體技術(shù)、實(shí)時(shí)通信技術(shù)的發(fā)展[1],各種社交和辦公應(yīng)用app增長(zhǎng)迅速,例如國(guó)外的facebook,skype等.國(guó)內(nèi)的微信,QQ等都有音視頻通信的功能.伴隨著移動(dòng)端用戶的不斷增長(zhǎng),人們通過(guò)手機(jī)進(jìn)行音視頻通信的需求量也日益增大,如何提高音視頻傳輸質(zhì)量成為了重點(diǎn).
WebRTC技術(shù)使瀏覽器成為一個(gè)實(shí)時(shí)通信應(yīng)用平臺(tái)[2].目前全球?yàn)g覽器廠商越來(lái)越多的加入到WebRTC技術(shù)的大潮中.2011年6月Google提出了開(kāi)源的即時(shí)通訊項(xiàng)目WebRTC,該項(xiàng)目提供了視頻會(huì)議的核心技術(shù):音視頻采集、網(wǎng)絡(luò)傳輸、音視頻編解碼、信號(hào)優(yōu)化和處理等[3].WebRTC給移動(dòng)通訊行業(yè)帶來(lái)了新突破,這將造成深遠(yuǎn)的影響.
SIP是IMS的核心技術(shù),對(duì)多媒體會(huì)話的建立,中斷,結(jié)束等起著很大的作用,并已發(fā)展成熟得到廣泛應(yīng)用.WebRTC強(qiáng)大的音視頻處理引擎,吸引越來(lái)越多的移動(dòng)端開(kāi)發(fā)人員研究.WebRTC提供的JSEP是一種弱的信令控制協(xié)議,僅僅能完成簡(jiǎn)單的媒體鏈接功能,在企業(yè)級(jí)的通信中需要結(jié)合其他模塊或者信令協(xié)議才能勝任完整的應(yīng)用.本文詳細(xì)對(duì)比了SIP與WebRTC的差異,以及JSEP與SIP轉(zhuǎn)換存在的問(wèn)題,最終設(shè)計(jì)和實(shí)現(xiàn)在iOS端WebRTC與SIP融合的應(yīng)用層網(wǎng)關(guān).
iOS是蘋(píng)果公司于2007年發(fā)布的智能終端操作系統(tǒng).iOS系統(tǒng)分為以下四部分:核心系統(tǒng)層、核心服務(wù)層、媒體層和交互層.
WebRTC是基于瀏覽器平臺(tái)的實(shí)時(shí)音視頻通信技術(shù).如圖1 所示,WebRTC 包含三個(gè)主要部分:語(yǔ)音引擎模塊,視頻引擎模塊和傳輸模塊.
圖1 WebRTC 結(jié)構(gòu)
會(huì)話初始協(xié)議 SIP(session initiation protocol)是基于文本的,獨(dú)立于傳輸層的應(yīng)用層控制協(xié)議.其用于建立,結(jié)束以及中斷多媒體會(huì)話[4].是IMS的核心協(xié)議.
WebRTC在媒體流控制層面上提出了JSEP的連接方式.在信令層對(duì)信令沒(méi)有提出標(biāo)準(zhǔn),而是由開(kāi)發(fā)者自己選擇.WebRTC提供的JSEP是一種弱的信令控制協(xié)議,其與強(qiáng)信令協(xié)議的不同在于僅僅能完成簡(jiǎn)單的媒體鏈接功能而不能完成整個(gè)會(huì)話過(guò)程的所有控制機(jī)制.所以在企業(yè)級(jí)的通信中需要結(jié)合其他模塊或者信令協(xié)議才能勝任完整的應(yīng)用.要實(shí)現(xiàn)WebRTC與IMS的核心協(xié)議SIP相結(jié)合,重點(diǎn)在于如何解決信令互通問(wèn)題.
如圖2對(duì)二者協(xié)議棧的分析對(duì)比可得出,WebRTC有一個(gè)封裝好的基于瀏覽器的接口.WebRTC通信一般使用HTTP或者Socket,WebRTC可以融合SIP做信令控制.
圖2 WebRTC 與 SIP 協(xié)議棧對(duì)比
如表1對(duì)WebRTC與SIP比較可知:
(1)媒體協(xié)商協(xié)議方面.二者都使用了SDP(會(huì)話描述協(xié)議),而且都是Offer/Answer請(qǐng)求應(yīng)答模型.
(2)在媒體傳輸方面,WebRTC 采用 SRTP,而 SIP采用了RTP也可以使用SRTP.沒(méi)有使用RTP會(huì)話復(fù)用的SIP客戶端可能無(wú)法理解WebRTC的SDP.
(3)在傳輸控制方面,SIP中RTP和RTCP是單獨(dú)分開(kāi)的,在WebRTC中兩者存在復(fù)用結(jié)構(gòu).
(4)在音頻編解碼二者均支持G.711標(biāo)準(zhǔn)而在視頻編解碼方面WebRTC支持VP8,所以二者沒(méi)有兼容的編解碼.
表1 WebRTC 與 SIP 協(xié)議的不同
綜上所述,要解決WebRTC與SIP的互通問(wèn)題,需要進(jìn)行信令轉(zhuǎn)換,ICE兼容以及編解碼等方面的研究.本文重點(diǎn)是設(shè)計(jì)WebRTC的應(yīng)用層網(wǎng)關(guān),對(duì)于媒體網(wǎng)關(guān)解決音視頻編解碼兼容性問(wèn)題以及ICE兼容性就不做詳細(xì)介紹了.
主流的解決方案有以下幾種[5]:第一種是基于Java-Script實(shí)現(xiàn)SIP協(xié)議,在其上構(gòu)建WebRTC,第二種開(kāi)發(fā)SIP/WebRTC轉(zhuǎn)換網(wǎng)關(guān)內(nèi)置到WebRTC服務(wù)器中,第三種是開(kāi)發(fā)SIP/WebRTC轉(zhuǎn)換網(wǎng)關(guān)單獨(dú)作為服務(wù)器.
第一種用JavaScript實(shí)現(xiàn)SIP協(xié)議并給Web應(yīng)用程序開(kāi)發(fā)者提供JS API.這種WebRTC應(yīng)用可以支持SIP Server,可與傳統(tǒng)SIP客戶端進(jìn)行通信.
第二種和第三種方案是開(kāi)發(fā)SIP/WebRTC網(wǎng)關(guān)實(shí)現(xiàn)SIP與WebRTC的互通.采用這種解決方案的開(kāi)源項(xiàng)目webrtc2sip[6](由愛(ài)立信公司提出).
上述三種解決方案都存在缺陷,第一種方案是對(duì)Web應(yīng)用程序開(kāi)發(fā)很便利的解決方案,對(duì)iOS客戶端來(lái)說(shuō)是不適用的.而第二種第三種是開(kāi)發(fā)一個(gè)轉(zhuǎn)換網(wǎng)關(guān),不管是嵌入到WebRTC服務(wù)器還是單獨(dú)出一個(gè)服務(wù)器,都增加了服務(wù)器的成本.如果用戶量足夠大很可能會(huì)使服務(wù)器性能大大降低.針對(duì)以上問(wèn)題,本文提出在客戶端實(shí)現(xiàn)JSEP-TO-SIP的應(yīng)用層網(wǎng)關(guān)結(jié)構(gòu).
如圖3所示的設(shè)計(jì)中包含了iOS客戶端(內(nèi)嵌JSEPTO-SIP 的信令網(wǎng)關(guān)),媒體網(wǎng)關(guān),SIP 服務(wù)器.本文主要思想是將信令網(wǎng)關(guān)與媒體網(wǎng)關(guān)分離.將JSEP-TO-SIP網(wǎng)關(guān)嵌入到iOS端,進(jìn)而減小服務(wù)器的壓力和開(kāi)銷成本.
圖3 iOS客戶端到iOS客戶端的信令通道
iOS客戶端通過(guò)JSEP-TO-SIP網(wǎng)關(guān)對(duì)ROAP/JSEP到SIP的協(xié)議轉(zhuǎn)換和對(duì)等的iOS客戶端連接.iOS客戶端應(yīng)用程序主要實(shí)現(xiàn)用戶登錄,撥號(hào),視頻顯示界面等.JSEP-TO-SIP網(wǎng)關(guān)負(fù)責(zé)把JSEP信令轉(zhuǎn)換成SIP信令,并發(fā)送給SIP服務(wù)器,以及將SIP信令轉(zhuǎn)換成JSEP信令.通過(guò)信令交換媒體信息后,兩端建立起P2P的SRTP媒體通道.
如表2是JSEP與SIP的映射關(guān)系.
表2 JSEP 到 SIP 映射
JSEP-TO-SIP網(wǎng)關(guān)負(fù)責(zé)JSEP到SIP的轉(zhuǎn)換以及SIP到JSEP的轉(zhuǎn)換.重點(diǎn)解決的就是WebRTC與SIP協(xié)議棧的區(qū)別而產(chǎn)生的互通的問(wèn)題.
如圖4所示,JSEP與SIP的交互過(guò)程為:
(1)ClientA和ClientB分別創(chuàng)建自己RTCPeer-Connection實(shí)例.
(2)ClientA,ClientB 通過(guò) RTCPeerConnection 所提供的setLocalDescription()方法,將自己的SDP描述符等其它參數(shù)信息交給RTCPeerConnection實(shí)例[7].
圖4 JSEP 與 SIP 信令交互過(guò)程
(3)ClientA通過(guò)RTCPeerConnection所提供的createOffer()方法建立一個(gè)包含ClientA的SDP描述符等其它參數(shù)信息的offer信令.ClientA將Offer信令發(fā)送給JSEP-TO-SIP網(wǎng)關(guān).
(4)JSEP-TO-SIP網(wǎng)關(guān)將Offer信令轉(zhuǎn)換成SIP信令的Invite并發(fā)送給SIP服務(wù)器,SIP服務(wù)器根據(jù)被叫標(biāo)識(shí),找到ClientB并發(fā)送給ClientB的JSEP-TO-SIP網(wǎng)關(guān).
(5)ClientB將信令中所包含的的SDP描述符等其它參數(shù)信息提取出來(lái),通過(guò)RTCPeerConnection所提供的setRemoteDescription()方法交給ClientB的RTCPeerConnection實(shí)例[7].
(6)ClientB通過(guò)RTCPeerConnection所提供的createAnswer()方法建立一個(gè)包含ClientB的SDP描述符等其它參數(shù)信息的Answer信令.ClientB將Answer信令發(fā)送給JSEP-TO-SIP網(wǎng)關(guān).
(7)JSEP-TO-SIP網(wǎng)關(guān)將Answer轉(zhuǎn)換成SIP的200 ok發(fā)送給SIP服務(wù)器,SIP服務(wù)器發(fā)送給ClientA的JSEP-TO-SIP網(wǎng)關(guān).
(8)ClientA將其中ClientB的SDP描述符等其它參數(shù)信息提取出來(lái),用setRemoteDescripttion()方法交給ClientA自己的RTCPeerConnection實(shí)例[7].
經(jīng)過(guò)以上步驟,ClientA和ClientB所建立的RTCPeerConnection實(shí)例包含了ClientA和ClientB的SDP描述符等其它參數(shù)信息[7].建立P2P的SRTP媒體通道,客戶端可以進(jìn)行媒體傳輸.
從谷歌官網(wǎng)下載WebRTC源碼,得到源碼后,將其編譯,然后與PJSIP封裝成在iOS平臺(tái)可用的SDK如圖5所示為WebRTC與iOS結(jié)合架構(gòu)圖.
圖5 iOS 與 WebRTC 結(jié)合架構(gòu)圖
采用MVC模型對(duì)UI設(shè)計(jì),其對(duì)項(xiàng)目文件易于管理,并且用戶只關(guān)心界面的視圖效果.
WebRTC語(yǔ)音引擎支持iSAC、iLBC、Opus 3種編解碼器.音頻NetEQ算法包括抖動(dòng)緩沖及丟包補(bǔ)償模塊以延遲減至最小并提高音頻質(zhì)量[8].
視頻部分包含采集、編解碼(VP8)、加密、媒體文件、圖像處理與顯示、網(wǎng)絡(luò)傳輸與媒體流控制等技術(shù)[9].
本文完成了在iOS端WebRTC與SIP融合的應(yīng)用層網(wǎng)關(guān).并實(shí)現(xiàn)了在iOS客戶端的WebRTC應(yīng)用的音視頻實(shí)時(shí)通信.應(yīng)用層網(wǎng)關(guān)主要是基于Node.js實(shí)現(xiàn),WebRTC提供的JSEP是基于RTCPeerconnetion開(kāi)發(fā)的,RTCPeerconnetion是Node.js向開(kāi)發(fā)者提供的一個(gè)模塊,用于支持WebRTC服務(wù).SIP模塊基于pjsip庫(kù)開(kāi)發(fā)[10].
由于WebRTC采用JSEP作為控制協(xié)議,與SIP服務(wù)器交互時(shí)需要轉(zhuǎn)換為SIP信令.本文搭建的SIP/WebRTC互通實(shí)驗(yàn)環(huán)境用Asterisk做SIP服務(wù)器,由于Asterisk具備媒體編解碼能力以及SRTP/RTP轉(zhuǎn)換功能,所以該實(shí)驗(yàn)環(huán)境中,Asterisk也用作媒體網(wǎng)關(guān).
本次實(shí)驗(yàn)用15臺(tái)iphone進(jìn)行測(cè)試,建立音視頻連接,相互通信共計(jì)20次.測(cè)試中通過(guò)WireShark抓包,獲得Offer信令經(jīng)應(yīng)用層網(wǎng)關(guān)生成的INVITE消息和Answer信令經(jīng)應(yīng)用層網(wǎng)關(guān)生成的200 OK應(yīng)答消息,分別如圖6、圖7 所示.分析可知,信令網(wǎng)關(guān)在IMS網(wǎng)絡(luò)中表現(xiàn)的和傳統(tǒng)SIP終端一致.20次實(shí)驗(yàn)中,在同一局域網(wǎng)內(nèi)WebRTC應(yīng)用進(jìn)行通信,JSEP-TO-SIP網(wǎng)關(guān)均可正常工作,達(dá)到預(yù)期效果,說(shuō)明本文所提出的在iOS端實(shí)現(xiàn)JSEP-TO-SIP網(wǎng)關(guān)是可行的.
圖6 JSEP-TO-SIP 網(wǎng)關(guān)生成的 SIP 請(qǐng)求消息
圖7 JSEP-TO-SIP 網(wǎng)關(guān)生成的 SIP 應(yīng)答消息
實(shí)驗(yàn)過(guò)程中,WebRTC應(yīng)用實(shí)時(shí)音視頻通信流暢,不過(guò)從雙方視頻畫(huà)面來(lái)看,存在 170 ms-270 ms 的延遲.JSEP-TO-SIP網(wǎng)關(guān)對(duì)信令的轉(zhuǎn)換帶來(lái)一定的時(shí)間延遲,但比在服務(wù)器端實(shí)現(xiàn)信令轉(zhuǎn)換的延遲有所減少,放到服務(wù)器處理網(wǎng)關(guān)轉(zhuǎn)換需要跟服務(wù)器交互以及服務(wù)器轉(zhuǎn)換網(wǎng)關(guān)需要做兩次轉(zhuǎn)換,而iOS端延遲的170 ms-270 ms是可以接受的.
本文分析了SIP和WebRTC控制協(xié)議轉(zhuǎn)換問(wèn)題,介紹了現(xiàn)存的解決方案,并提出了在iOS端實(shí)現(xiàn)JSEPTO-SIP網(wǎng)關(guān).通過(guò)搭建實(shí)驗(yàn)環(huán)境,驗(yàn)證了該方案的可行性以及優(yōu)越性.當(dāng)然還需要考慮到JSEP-TO-SIP網(wǎng)關(guān)的負(fù)載能力,時(shí)間延遲以及處理協(xié)議轉(zhuǎn)換對(duì)iOS端性能的影響和耗電量等問(wèn)題.
1陳建明,張翼翔.用于移動(dòng)學(xué)習(xí)的流媒體服務(wù)器研究.微型機(jī)與應(yīng)用,2013,32(3):10–12.
2竹洪濤.一種基于SIP和WebRTC的實(shí)時(shí)可視對(duì)講方案設(shè)計(jì)[碩士學(xué)位論文].成都:西南交通大學(xué),2013.
3王桐.基于Android智能移動(dòng)終端的無(wú)線遠(yuǎn)程管控系統(tǒng)研究與應(yīng)用[碩士學(xué)位論文].成都:西南交通大學(xué),2013.
4鄧敦望.SIP視頻會(huì)議服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].北京:北京郵電大學(xué),2010.
5Amirante A,Castaldi T,Miniero L,et al.On the seamless interaction between WebRTC browsers and SIP-based conferencing systems.IEEE Communications Magazine,2013,51(4):42–47.[doi:10.1109/MCOM.2013.6495759]
6Mamadou DIOP.Webrtc2sip-smart SIP and media gateway for WebRTC endpoints technical guide.http://www.webrtc2sip.org/technical-guide-1.0.pdf.[2013].
7胡勛,周淵平.基于WebRTC的Android移動(dòng)端無(wú)線視頻傳輸.微型機(jī)與應(yīng)用,2015,34(19):83–85.[doi:10.3969/j.issn.1674-7720.2015.19.024]
8吳江銳.WebRTC語(yǔ)音引擎中NetEQ技術(shù)的研究[碩士學(xué)位論文].西安:西安電子科技大學(xué),2013.
9胡敏,劉六程,劉鵬.基于WebRTC的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).電視技術(shù),2013,37(1):141–143,150.
10黃月祥.基于PJSIP的嵌入式VoIP終端的研究與實(shí)現(xiàn)[碩士學(xué)位論文].昆明:昆明理工大學(xué),2011.
Design and Implementation of iOS Audio and Video Transmission Based on WebRTC
SUN Jian-Wei1,LI Chao1,2,YU Bo1
1(Shenyang Institute of Computer Technology,Chinese Academy of Sciences,Shenyang 110168,China)2(University of Chinese Academy of Sciences,Beijing 100049,China)
With the development of multimedia technology,and the real-time communication technology,people’s requirement for real-time audio and video communication is higher and higher.The WebRTC technology emerges and occupies the market quickly based on its powerful audio and video processing engine,which has a huge impact on multimedia communications industry.WebRTC JSEP provided,however,can only perform simple media link function.It is required to combine with other modules or signaling protocol to do a complete application in the communication of enterprise.This paper focuses on the WebRTC communication with the SIP,and in the iOS terminal it designs and implements a kind of application layer gateway based on WebRTC technology.Finally,the feasibility and practicability of the gateway is verified with experiments.
WebRTC; application layer gateway; iOS; real-time communication
孫建偉,李超,于波.基于WebRTC應(yīng)用層網(wǎng)關(guān)在iOS端的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(10):89–94.http://www.c-sa.org.cn/1003-3254/5987.html
國(guó)家科技重大專項(xiàng)-數(shù)控系統(tǒng)功能安全關(guān)鍵技術(shù)研究(2014ZX04009031)
2017-01-15; 采用時(shí)間:2017-02-15