袁鑫攀+彭成
遠(yuǎn)程視頻教育突破了時空的界線,具有資源共享、快速靈活等優(yōu)點。論文采用Nodejs服務(wù)器技術(shù)實現(xiàn)了音視頻的Web服務(wù)器; 結(jié)合WebRTC規(guī)范的Web API接口實現(xiàn)了客戶端音視頻交互模塊,設(shè)計實時互動的遠(yuǎn)程視頻教育系統(tǒng)。
遠(yuǎn)程視頻教育是指通過音頻、視頻(直播或錄像)以及包括實時和非實時在內(nèi)的計算機技術(shù)把課程傳送到校園外的教育。論文主要采用Node.js服務(wù)器技術(shù),設(shè)計并實現(xiàn)了WebRTC音視頻通信的信令實時服務(wù)器,設(shè)計并實現(xiàn)了一個集音視頻交互、課件點播、白板寫作等功能的遠(yuǎn)程視頻教育系統(tǒng)。
一、系統(tǒng)結(jié)構(gòu)
論文中視頻會議系統(tǒng)主要分為三層結(jié)構(gòu):人機交互層主要負(fù)責(zé)用戶的接口。業(yè)務(wù)層主要負(fù)責(zé)實現(xiàn)用戶的功能;控制層完成主要完成媒體流連接信令的建立以及控制,資源請求響應(yīng)的路由處理控制。持久層采用MongoDB數(shù)據(jù)庫來存儲數(shù)據(jù)。網(wǎng)絡(luò)層將采用WebRTC中的網(wǎng)絡(luò)傳輸協(xié)議控制流媒體的傳輸。
二、系統(tǒng)的關(guān)鍵模塊實現(xiàn)
遠(yuǎn)程視頻教育系統(tǒng)的關(guān)鍵技術(shù)模塊是音視頻實時處理,論文主要闡述系統(tǒng)服務(wù)端的實現(xiàn)和視頻會議模塊。
(一)系統(tǒng)服務(wù)端的實現(xiàn)
1.Web服務(wù)器的實現(xiàn)
Node.js是一個服務(wù)器端JavaScript解釋器。Node.js的每個連接發(fā)射一個在Node引擎的進(jìn)程中運行的事件,Node.js內(nèi)建了HTTP服務(wù)器,其服務(wù)器代碼主要在Webserver.js中。
2.實時服務(wù)器的實現(xiàn)
Websocket是基于TCP協(xié)議,其目的能讓W(xué)eb應(yīng)用能夠想桌面網(wǎng)絡(luò)應(yīng)用具有實時的通訊能力。在Nodejs的編程框架里,采用異步的事件驅(qū)動方式來開發(fā)Websocke服務(wù)器。為了實現(xiàn)連接之間的通信和消息的廣播,設(shè)計實現(xiàn)了一個manager類,給每一個連接創(chuàng)建一個id,在內(nèi)存中維護(hù)一個連接鏈表,并提供了上線和下線的自動管理Websocket服務(wù)器的設(shè)計采用訂閱通知的設(shè)計模式,客戶端訂閱服務(wù)器制定的消息,當(dāng)事件發(fā)生將自動通知客戶端。
(二)視頻會議模塊的實現(xiàn)
視頻會議模塊是系統(tǒng)業(yè)務(wù)功能的核心模塊,它在已實現(xiàn)WebSocket實時服務(wù)器上,完成呼叫的建立、媒體流的傳輸?shù)裙δ?,最終建立音視頻的通訊。
1.音視頻的采集
首先瀏覽器會通過websocket與服務(wù)器進(jìn)行連接,如果連接成功,瀏覽器的設(shè)備函數(shù)get User Media調(diào)用時會提示用戶是否允許調(diào)用當(dāng)前媒體設(shè)備的音視頻設(shè)備,比如攝像頭和麥克風(fēng)。如果用戶選擇允許,該函數(shù)的回調(diào)函數(shù)success Callback將會觸發(fā)stream_created事件。配置音視頻的實例如下:
Media Stream 接口定義的屬性方法和get User Media函數(shù)為獲取音視頻數(shù)據(jù)提供了有效的途徑,降低了開發(fā)人員獲取本地媒體設(shè)備的難度。
2.音視頻的傳輸
在音視頻的通訊中,采用Web RTC規(guī)范的RTC Peer Connectiong接口定義的一些列的屬性和方法,用來處理客戶端的信令,連接建立,媒體傳輸?shù)热蝿?wù)。視頻會議通訊連接的交互模式由發(fā)起連接發(fā)送請求給接聽者,再有接聽者發(fā)送應(yīng)答給發(fā)起者,發(fā)送方和接收方記性交換SDP。通過交換SDP分別告訴雙方的網(wǎng)絡(luò)環(huán)境以及媒體流格式,達(dá)成協(xié)議,將通過WebSocket實時服務(wù)器的轉(zhuǎn)發(fā)信令,建立了呼叫方和接收方之間的握手協(xié)議。這樣就可以進(jìn)行正常的視頻會議了。
論文以視頻遠(yuǎn)程教育系統(tǒng)中關(guān)鍵部件-音視頻處理模塊為例詳細(xì)的描述了系統(tǒng)的實現(xiàn)。Node.js和WebRTC技術(shù)目前并不完善,瀏覽器兼容性還存在很大問題,推廣到商用任重而道遠(yuǎn)。隨著Node.js和WebRTC技術(shù)的普及,可以想象所有的瀏覽器都支持WebRTC技術(shù)標(biāo)準(zhǔn),人們將擁有一個快速便捷而且免費的音視頻交互平臺,音視頻的應(yīng)用將得到更寬廣的發(fā)展。
參考文獻(xiàn):
[1]馮堅.基于云計算的現(xiàn)代遠(yuǎn)程教育展望[J].
[2]屈振華,李慧云,張海濤,龍顯軍.WebRTC技術(shù)初探.[J].電信科學(xué).2012/1.
[3]孫凱龍.基于WebRTC的視頻會議系統(tǒng)的設(shè)計與實現(xiàn).[J].
(作者單位:湖南工業(yè)大學(xué)計算機通信學(xué)院)endprint