基于node.js的远程视频教育系统
2015-08-29袁鑫攀彭成
袁鑫攀 彭成
基于node.js的远程视频教育系统
袁鑫攀 彭成
远程视频教育突破了时空的界线,具有资源共享、快速灵活等优点。论文采用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].
(作者单位:湖南工业大学计算机通信学院)