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