999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于瀏覽器的音視頻通訊系統(tǒng)實(shí)現(xiàn)

2016-05-05 08:42:54宋瑞
大陸橋視野·下 2016年3期

宋瑞

【摘 要】WebRTC因其開(kāi)放的標(biāo)準(zhǔn)、簡(jiǎn)單易擴(kuò)展、同運(yùn)營(yíng)商網(wǎng)絡(luò)的互聯(lián)互通、與其他技術(shù)結(jié)合等特性,本文旨在通過(guò)對(duì)W3C WebRTC標(biāo)準(zhǔn)的跟蹤和業(yè)界WebRTC開(kāi)源項(xiàng)目的系統(tǒng)分析,梳理出WebRTC應(yīng)用所涉及的關(guān)鍵技術(shù)。

【關(guān)鍵詞】WebRTC; 通訊系統(tǒng);瀏覽器;

WebRTC(Web Real-Time Communication)Web上的實(shí)時(shí)通信,泛指基于網(wǎng)頁(yè)的實(shí)時(shí)通信業(yè)務(wù),如電話、視頻會(huì)議、即時(shí)消息等。WebRTC項(xiàng)目的主要目的是讓W(xué)eb開(kāi)發(fā)者不用其他的軟件就能夠便利的開(kāi)發(fā)出實(shí)時(shí)的,基于瀏覽器的多媒體應(yīng)用,Web開(kāi)發(fā)者也無(wú)需對(duì)多媒體的數(shù)字信號(hào)處理過(guò)程過(guò)多在意,只需簡(jiǎn)單的Javascript和HTML5技術(shù)即可即可實(shí)現(xiàn)。WebRTC基于標(biāo)準(zhǔn)的WHATWG協(xié)議,給予了視頻會(huì)議的核心技術(shù),包括音視頻的采集、編解碼、網(wǎng)絡(luò)傳輸、顯示等功能,并且還支持跨平臺(tái):windows,linux,mac,android。

1.業(yè)界WebRTC原型概況

1.1業(yè)界WebRTC

(1)官方demo

沒(méi)有用任何封裝庫(kù),信令機(jī)制使用了XHR和Google App Engine Channel API,可實(shí)現(xiàn)瀏覽器間的視頻音頻通信。

(2)愛(ài)立信實(shí)驗(yàn)室開(kāi)發(fā)的WebRTC demo

這是第一個(gè)基于瀏覽器的WebRTC視頻通信demo,愛(ài)立信為此還開(kāi)發(fā)了一個(gè)基于WebKit的瀏覽器用于支持WebRTC,叫做Bowser browser(當(dāng)時(shí)市場(chǎng)上可能還沒(méi)有支持WebRTC的瀏覽器)。

(3)華為WebRTC

華為WebRTC網(wǎng)絡(luò)并不僅僅著眼于WebRTC用戶系統(tǒng),而是秉持CAAS(Communication as a Service)的核心理念,開(kāi)發(fā)使用簡(jiǎn)單,作為其WebRTC能力開(kāi)放網(wǎng)關(guān)地關(guān)鍵足點(diǎn)。

1.2業(yè)務(wù)流程分析

(1)向Participations UA返回成功將其加入會(huì)議室roomName的消息,ParticipationUA收到消息后添加本地的視頻流到指定位。

(2)向Host UA廣播Participations UA加入到會(huì)議室roomName的通知,廣播消息中包含Participations UA的標(biāo)識(shí)。

(3)Host UA在收到Signaling Server廣播Participations UA加入到會(huì)議室roomName的通知后,會(huì)著手進(jìn)行兩個(gè)方面的工作。

(4)發(fā)起與Participation UA的媒體協(xié)商:首先獲取并保存本地的媒體面信息offer,并途經(jīng)Signaling Server路由轉(zhuǎn)發(fā)給ParticipationsUA。Participations UA收到offer后,保存Host UA的媒體面信息并據(jù)此創(chuàng)建協(xié)商媒體信息answer,最后將answer途經(jīng)Signaling Server路由轉(zhuǎn)發(fā)給Host UA。

至此,Host UA與Participations UA之間已可以進(jìn)行端到端的視頻通話。

2.多方視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2.1 設(shè)計(jì)方案

WebRTC標(biāo)準(zhǔn)Javascript接口由瀏覽器提供,客戶端與服務(wù)端雙向通信采用WebSocket(客戶端由瀏覽器提供支持,服務(wù)端由tomcat提供支持),jain-sip采用Mobicents開(kāi)源的JavaScript庫(kù)來(lái)提供SIP棧的支持。WebRTC封裝庫(kù)建立在WebRTC和jain-sip的基礎(chǔ)上,它利用jain-sip提供的SIP棧功能組裝SIP請(qǐng)求并經(jīng)過(guò)瀏覽器提供的WebSocket傳輸給服務(wù)端。

WebRTC封裝庫(kù)的主要功能如下:屏蔽不同瀏覽器廠商在WebRTC標(biāo)準(zhǔn)接口實(shí)現(xiàn)上的差異(包括接口命名差異和方法調(diào)用差異);將客戶端與服務(wù)端之間雙向通信連接建立機(jī)制以及通信的細(xì)節(jié),做到向上層Web應(yīng)用開(kāi)發(fā)者透明;在端到多端的媒體協(xié)商以及防火墻穿越機(jī)制上,做到向開(kāi)發(fā)者透明。

2.2 關(guān)鍵技術(shù)

2.2.1 SIP信令交互技術(shù)

在W3C WebRTC標(biāo)準(zhǔn)中,對(duì)客戶端與服務(wù)端之間的信令沒(méi)有具體的標(biāo)準(zhǔn)。SIP以其簡(jiǎn)易、靈巧和可伸展等特性,得到越來(lái)越多的關(guān)注和贊同,已成為下一代Web通信事實(shí)上的規(guī)范。正是基于這樣一種特點(diǎn),本項(xiàng)目開(kāi)發(fā)以SIP為核心的WebRTC視頻通信系統(tǒng)。為完成客戶端與服務(wù)端SIP信令交互,本系統(tǒng)在客戶端側(cè)使用其對(duì)JAIN-SIP標(biāo)準(zhǔn)的參考實(shí)現(xiàn)來(lái)提供SIP棧服務(wù),服務(wù)端側(cè)利用SIP Servlet API來(lái)處理客戶端側(cè)請(qǐng)求或進(jìn)行路由分發(fā),客戶端與服務(wù)端之間的雙向通信采用了WebSocket協(xié)議。在本系統(tǒng)中,服務(wù)端實(shí)際上就是充當(dāng)個(gè)背靠背代理的角色。

2.2.2 多方媒體協(xié)商技術(shù)

多方媒體協(xié)商與防火墻穿越協(xié)議機(jī)制是實(shí)現(xiàn)WebRTC多方視頻會(huì)議的關(guān)鍵所在。在具體的實(shí)現(xiàn)策略上,WebRTC封裝庫(kù)將多方的協(xié)商過(guò)程分解成多個(gè)端到端的協(xié)商過(guò)程,可通過(guò)后入會(huì)者發(fā)起來(lái)實(shí)現(xiàn)。這里簡(jiǎn)要描述一下后入會(huì)者協(xié)商的過(guò)程:

(1)第一方與第二方情形下,由一對(duì)PeerConnection對(duì)象來(lái)完成offer/answer的協(xié)商。主動(dòng)協(xié)商的一方PeerConnection利用接口createOffer獲取到本方的媒體面相關(guān)信息后,將該信息通過(guò)信令服務(wù)器傳送到對(duì)端。對(duì)端的PeerConnection對(duì)象保存該信息,并利用接口createAnswer獲取當(dāng)?shù)氐拿襟w面信息,并將其通過(guò)信令服務(wù)器回傳給主動(dòng)協(xié)議的一方。這樣,兩方之間的協(xié)商完成。

(2)當(dāng)?shù)谌郊尤霑?huì)議時(shí),應(yīng)用程序會(huì)創(chuàng)建兩個(gè)PeerConnection對(duì)象,一個(gè)用來(lái)與第一方進(jìn)行協(xié)商,另一個(gè)用于與第二方進(jìn)行協(xié)商。第二方和第三方在收到第一方對(duì)應(yīng)的PeerConnection對(duì)象發(fā)送過(guò)來(lái)的offer信息后,將分別創(chuàng)建一個(gè)新的PeerConnection對(duì)象來(lái)負(fù)責(zé)與之交互,并按照1)所述的方法完成與第三方的媒體協(xié)商過(guò)程。

2.2.3 NAT/防火墻穿越技術(shù)

這種技術(shù)是把內(nèi)部網(wǎng)絡(luò)(簡(jiǎn)稱(chēng)為內(nèi)網(wǎng))私有IP地址轉(zhuǎn)變?yōu)橥饩W(wǎng)公共IP地址,它使得局域范圍內(nèi)的多臺(tái)主機(jī)利用同一個(gè)公共IP地址就可以連接到外網(wǎng)。一方面,NAT技術(shù)可以在很大程度上緩解了公網(wǎng)IP地址緊缺的問(wèn)題,并有效減少了內(nèi)網(wǎng)主機(jī)受外部系統(tǒng)攻擊的可能性。另一方面,對(duì)于WebRTC等Web音視頻通信而言,NAT的應(yīng)用會(huì)致使其在跨局域網(wǎng)的環(huán)境中失效。這是因?yàn)椋挥诰钟蚓W(wǎng)的主機(jī)無(wú)法在公網(wǎng)上進(jìn)行路由,進(jìn)而無(wú)法完成不同局域網(wǎng)內(nèi)部主機(jī)相互之間的P2P通信。

3.多方視頻會(huì)議系統(tǒng)性能測(cè)試與分析

3.1環(huán)境搭建

3.1.1下載安裝jdk

進(jìn)入oracle官網(wǎng)downloads專(zhuān)區(qū),選擇下載版本jdk-6u13-windows-i586-p.exe,雙擊運(yùn)行即可安裝。

3.1.2配置jdk環(huán)境變量

在控制面板系統(tǒng)和安全系統(tǒng)高級(jí)系統(tǒng)設(shè)置環(huán)境變量系統(tǒng)變量中新建環(huán)境變量JAVA_HOME并設(shè)置成下面的格式,找到Path和CLASSPATH分別設(shè)置成如下所示的格式。JAVA_HOME

C:\Program Files\Java\jdk1.6.0_13

Path

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT Server\110\Tools\Binn\;E:\Project\opencv\build\x86\vc11\bin;%JAVA_HOME%\bin;

CLASSPATH

%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3.2 核心流程

在服務(wù)端側(cè),處理“創(chuàng)建會(huì)議”和“加入會(huì)議”的邏輯實(shí)際上也是作為兩個(gè)分支集成在同一個(gè)大的處理邏輯當(dāng)中(SIP Servlet里面的doSubscribe),為了區(qū)別兩者不同的請(qǐng)求,我們事先約定按照客戶端SUBSCRIBE請(qǐng)求頭部里面的Expires的整型值來(lái)確定:當(dāng)請(qǐng)求中的Expires為3600時(shí),是創(chuàng)建會(huì)議的請(qǐng)求,當(dāng)請(qǐng)求中的Expires值為1800時(shí),是加入會(huì)議。

用戶加入會(huì)議成功后,服務(wù)端返回的信息,顯示本地視頻流用的是HTML5的getUserMedia接口。當(dāng)然,獲取到這個(gè)媒體流Stream后,還需要借助HTML5 URL接口將其轉(zhuǎn)換成url,然后再添加到HTML5

PeerConnection是WebRTC的標(biāo)準(zhǔn)接口,用于建立與遠(yuǎn)端瀏覽器的連接,W3C標(biāo)準(zhǔn)里面。Offer和answer是一對(duì)JSEP SDP格式的媒體協(xié)商信息。其中,offer由主動(dòng)發(fā)起協(xié)商的一方的PeerConnectioncreateOffer創(chuàng)建。在保存本地媒體面信息(PeerConnection.setLocalDescription(offer))后,將其作為INVITE請(qǐng)求的內(nèi)容經(jīng)服務(wù)端轉(zhuǎn)發(fā)至協(xié)商的對(duì)方。對(duì)方在收到offer后,創(chuàng)建一個(gè)對(duì)應(yīng)的PeerConnection對(duì)象并保存該信息(PeerConnection.setRemoteDescription(offer))。然后,創(chuàng)建協(xié)商的媒體信息answer(PeerConnection.createAnswer)返回給主動(dòng)發(fā)起協(xié)商的一方(作為SIP 200 OK響應(yīng)的內(nèi)容)。主動(dòng)發(fā)起協(xié)商的一方收到后保存answer.至此,完成端到端的媒體協(xié)商過(guò)程。

3.3連通性測(cè)試

在offer/answer里面,除了音視頻編解碼信息之外,還有用于做連通性測(cè)試的ice-candidates。Ice-candidates是ICE客戶端(集成在WebRTC當(dāng)中)從ICE Server獲取到的。

在ice-candidates里面,包括三類(lèi)地址:本地地址(local ip + local port)、NAT對(duì)外映射的地址和端口(NAT ip + NAT port,由ICE服務(wù)器返回)以及中繼地址和端口(TURN ip + TURN port,由ICE服務(wù)器返回)。

當(dāng)通信的雙方通過(guò)offer/answer對(duì)獲取到對(duì)端的ice-condidates后,會(huì)按照優(yōu)先級(jí)組合并進(jìn)行連通性測(cè)試。與此同時(shí),對(duì)端也會(huì)按照同樣的組合方式進(jìn)行連通性測(cè)試。

4.結(jié)論

作為一種新興的技術(shù),WebRTC在最大程度上簡(jiǎn)化了網(wǎng)絡(luò)即時(shí)通信的復(fù)雜程度,它第一次讓W(xué)eb音視頻通信等過(guò)去必須由專(zhuān)業(yè)人員才能實(shí)現(xiàn)的插件功能離普通的Web開(kāi)發(fā)者如此之近。WebRTC在技術(shù)上和標(biāo)準(zhǔn)上也都取得了長(zhǎng)足的進(jìn)步。

參考文獻(xiàn):

[1] 林鴻, 王松, 楊鑫,付斌. 基于WebRTC技術(shù)的應(yīng)用及平臺(tái)技術(shù)開(kāi)發(fā)與設(shè)計(jì)[J]. 電信科學(xué), 2013, 29(9) :20-25.

[2] Justin Uberti, Cullen Jennings. Javascript Session Establishment Protocol. 22 October 2013. Active Internet-Draft[EB/OL]. http://http://datatracker.ietf.org/doc/draft-ietf-rtcweb-jsep/

[3] 屈振華, 李慧云, 張海濤, 龍顯軍. WebRTC技術(shù)初探[J]. 電信科學(xué), 2012, 28(10) :106-110.

[4] 胡敏, 劉六程, 劉鵬. 基于WebRTC的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電視技術(shù).

主站蜘蛛池模板: 亚洲国产理论片在线播放| 久久精品丝袜| 六月婷婷精品视频在线观看| 国产精品999在线| 无码AV动漫| 美女毛片在线| 免费毛片全部不收费的| 欧美日韩亚洲国产主播第一区| 国产无码精品在线播放| 日韩欧美国产精品| 99久久性生片| 在线看片中文字幕| 亚洲大学生视频在线播放| 国产亚洲精品精品精品| 欧美精品啪啪| 91精选国产大片| 亚洲最猛黑人xxxx黑人猛交| 国产日韩久久久久无码精品| 免费在线播放毛片| 国产毛片网站| 99久久精品国产精品亚洲| 国产菊爆视频在线观看| 色综合网址| 婷婷亚洲视频| 国产亚洲欧美在线专区| 欧美亚洲欧美区| 尤物午夜福利视频| 亚洲中文字幕在线精品一区| 国产在线视频欧美亚综合| 茄子视频毛片免费观看| 不卡色老大久久综合网| 国产精品无码AV片在线观看播放| 久久综合丝袜长腿丝袜| 丰满人妻中出白浆| 超清无码一区二区三区| 99精品视频播放| 亚洲精品成人片在线观看| 亚洲精品国产综合99久久夜夜嗨| 色综合成人| 久久精品66| 国产亚洲精品va在线| 国产精品第三页在线看| 亚洲欧美日韩中文字幕在线一区| 国产亚洲第一页| 日韩中文字幕亚洲无线码| 精品亚洲欧美中文字幕在线看| 久久久亚洲国产美女国产盗摄| 亚洲国产日韩欧美在线| 久久亚洲中文字幕精品一区| 色偷偷男人的天堂亚洲av| 中文字幕 91| 成人看片欧美一区二区| 网久久综合| 亚洲人成人无码www| 国产精品入口麻豆| 久久久久无码国产精品不卡| 国产成人综合亚洲网址| 91区国产福利在线观看午夜| 97视频精品全国在线观看| 天堂av综合网| аⅴ资源中文在线天堂| 激情国产精品一区| 亚洲成年人网| 九九香蕉视频| 亚洲无码不卡网| 99视频免费观看| 欧美另类图片视频无弹跳第一页| 欧日韩在线不卡视频| 欧美亚洲第一页| 青青国产视频| 日韩大片免费观看视频播放| 99视频精品在线观看| 精品久久香蕉国产线看观看gif| 国模在线视频一区二区三区| 亚洲日韩日本中文在线| 成色7777精品在线| 亚洲男人的天堂在线| 全部免费特黄特色大片视频| 欧美日韩精品综合在线一区| 无遮挡一级毛片呦女视频| 91成人在线免费观看| 亚洲一区网站|