基于大学课堂的网络流媒体系统的设计
2016-03-12广东工业大学信息工程学院吕嘉卿刘立程刘秋韵
广东工业大学信息工程学院 吕嘉卿 刘立程 何 云 刘秋韵
基于大学课堂的网络流媒体系统的设计
广东工业大学信息工程学院 吕嘉卿 刘立程 何 云 刘秋韵
随着信息时代的普及,网络流媒体在大学课堂教学中日益发挥着其重要性。为了整合教学资源,激励学生主动学习的热情,提出一种基于大学课堂的网络流媒体系统的设计方案。该系统结合VPR录播设备、SQL Server数据库、Live555流媒体服务器、VC/MFC界面库等技术,基于C/S架构设计并搭建简单友好的系统客户端和系统管理中心,同时将视频采集门户所采集的视频资源安全完整地上传在服务器软件系统,从而实现网络流媒体直播和点播的大学课堂系统。由于所提出的整体解决方案采用较为先进的技术,并且进行了前期的需求分析准备,因此该设计系统具有良好的可扩展性和可移植性,直播过程能满足实时性要求。
大学课堂;网络流媒体;软件系统;Client/Server;直播
0 引言
现今,在网络技术的推进与流式传输技术增强的趋势下,大学课堂逐渐由传统的教育模式转变为在线网络授课的新模式,使得多媒体网络应用得到各知名高校和公司厂商的关注。网络流媒体系统一般分为浏览器和服务器(Browser/Server,B/S)架构与客户机和服务器(Client/ Server,C/S)架构。例如,大型开放式网络课程(Massive Open Online Courses,MOOC)里的Coursera、Udacity、edX学习平台可提供多元化的课程资源,实现跨地区、跨学校、跨专业学习,但是其B/S架构[1]下的服务器响应速度较慢,同时在线观看课程视频的效果也容易受网络的传输速度而影响。因此,学者们也对基于C/S架构[2]的大学课堂进行研究,如邢帅教育开设影视媒体课程,其客户机界面人性化,易操作,且安全性能也有一定的保证。考虑到网络带宽的大小、服务器响应的速度,以及使用课程平台的对象用户等因素,大学课堂系统选用C/S架构较为合适。
然而基于C/S架构的大学课堂在实际应用中仍然不够成熟,亟需解决广大师生的各种需求,具体有以下三个方面:(1)课程平台的内容单调,视频分类不清晰;(2)大部分课程平台仅供视频点播,缺乏课程直播的功能设计,可扩展性差;(3)具体应用于高校的网络流媒体系统较少。
针对大学课堂客户机存在的局限性,本文将使用VPR录播设备录制实时公开课,在SQL Server数据库上存放系统所需的数据,并通过Socket通信技术[3]实现Client端和Server端的交互,同时采用支持实时流传输协议[4](Real Time Stream Protocol,RTSP)的Live555流媒体服务器[5],从而在VS2010/MFC平台上设计一种基于C/S架构的网络流媒体系统。本系统平台利用互联网开展在线授课及视频交互等教学内容,实现网络与教育相结合,打破各种地域空间、时间和级别阶层的限制,满足教育资源的共享要求,且提升学习效率。
1 系统平台模块设计
系统平台能够让用户实时收看在线公开课,并参与课堂互动,也能够让用户点播观看往期公开课及优秀的非公开课视频资源,实现交互式的远程教育,并促进教学资源的共享。它主要由视频采集门户、系统客户端、系统管理中心和服务器四部分组成,实现架构如图1所示。
针对网络流媒体的平台搭建,各功能模块的设计描述如下:
(1)视频采集门户模块
视频采集门户利用多台VPR录播设备,对教师的授课全过程进行录制,并通过网络通信协议实时上传至视频服务器,在服务器端对录制的多路视频流进行管理。
该模块是服务器视频资源的重要来源。一方面,视频服务器与系统客户端相连,使用户能够观看公开课直播和视频点播等网络教学内容。另一方面,数据服务器与系统管理中心相连,由管理员进行VPR录播设备以及视频流媒体资源的管理,从而实现视频的采集与传输。
图1 网络流媒体系统实现架构
(2)系统客户端模块
系统客户端主要完成与服务器数据交互的工作,并以简洁友好的界面分别为教师和学生提供公开课直播/点播及在线课堂互动等网络教学服务。
该模块为用户提供高质量的网络教学服务,可进行视频点播、收藏、下载、评论等一系列操作。教师登录系统客户端后,在个人授课过程中能够通过“录播室”功能实时收看录制的课堂直播画面和听课学生的视频画面,并可提问学生;后续更可对视频资源进行编辑管理。学生登录系统客户端后,可以收看公开课直播,以及实时请求发言;对于感兴趣的公开课可向系统提交“听课预约”申请,还可进入教师个人空间的“留言板”给教师留言。教师与学生的具体功能设计如图2所示。
图2 客户端模块功能设计
(3)系统管理中心模块
系统管理中心为管理员提供管理服务器数据/资源的访问接口,进而在交互式界面实现服务器后台管理的各项功能,如用户管理(添加前端用户,即学生与教师)、课表管理、资源管理(审核教师发布的视频,管理员可以从本地发布视频)、评论管理、客户端管理(包括前端相关的图片、公开课信息)、系统维护的安全管理(用户数据的备份)等。
(4)服务器模块
服务器端作为前台Client(客户端)和后台Client(管理中心)与数据库服务器以及视频服务器进行数据交互的接口,是C/S架构的重要组成部分。
服务器软件系统包括四部分,分别为:服务器参数设置、服务管理、客户端在线人数统计、其他信息统计。服务器参数设置包括四个子项:服务器名称、服务器IP地址、服务器端口号、最大连接数量。服务管理包括三部分:视频采集门户-服务器、系统管理中心-服务器、系统客户端-服务器,支持手动开启或关闭其中的任意服务。前后端在线人数统计包括三类:在线学生、在线教师以及在线管理员。其他信息统计也包括三部分:服务器累计运行时间、C/ S累计通信数据量、工作中的VPR设备数量。
2 网络通信与文件传输
在网络通信与文件传输中,对于服务器端的网络I/O[6],一般采用多线程与完成端口模型;而对于客户端的网络I/O,往往采用普通的异步I/O模型。
完成端口是Windows平台上性能最好的异步I/O模型,它与线程池相配合,通过绑定网络接口句柄或套接字进行异步通信。
调用完成端口的函数接口是:
HANDLE CreateIoCompletionPort(
HANDLE hFile,
HANDLE hExistingCompletionPort,
ULONG_PTR CompletionKey,
DWORD dwNumberOfConcurrentThreads);
线程池中的所有线程执行同一个函数,这些线程函数首先进行初始化工作,然后进入一个循环,在循环内部,线程将自己切换到睡眠状态,来等待设备I/O请求完成并进入完成端口。调用以下函数接口可以达到这一目的。
BOOL GetQueuedCompletionStatus(
HANDLE hCompletionPort,
PDWORD pdwNumberOfBytesTransferred,
PULONG_PTR pCompletionKey,
OVERLAPPED** ppOverlapped,
DWORD dwMilliseconds);
对于Socket消息,采用Socket拆分和分片重组技术,并且定义了若干C++容器,如链表、队列、映射,用于保存Socket消息分片、重组后的Socket消息以及待发送的Socket消息。
网络I/O流程如图3所示,从接收Socket消息到发送Socket消息的过程是:工作线程负责接收Socket消息分片,并将Socket分片加入Socket消息链表,数据处理线程从Socket消息链表中取出分片并重组,然后再执行完整Socket消息对应的操作,接着将执行后得到的结果加入Socket发送队列,另外的数据线程再从队列中取出完整的Socket消息,进行分片再发送。其中,对于链表及队列等共享资源的访问需要添加互斥访问机制,防止线程间交叉运行造成共享资源访问的失败或错误。
图3 网络I/O流程图
在完成端口异步I/O部分,需要创建容器维护客户端Socket列表,并与Socket消息相关联,通过采用查找时间复杂度更低的数据结构来存储各种Socket数据(包括Socket消息分片、完整的可以执行的Socket数据等等),以此提高Socket数据查找访问的效率。由此,可自定义本系统的Socket消息如表1所示。
表1 自定义Socket消息封
3 流媒体播放设计
流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,其优越性广泛应用于视频直播点播、视频会议、远程教育和远程医疗系统中,但也取决于视频服务器的性能和服务质量。
流媒体的视频服务器主要功能是以流式协议将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。常用的视频服务器有Microsoft Windows Media Services(WMS)[7]、HTTP Live Streaming(HLS)[8]和Live555。其中WMS采用Microsoft Media Server protocol(MMS)协议接收和传输视频,前端采用微软媒体播放器,但能可供播放的视频类型选择较少;基于HLS的播放系统一般应用于OS X系统,使用第三方播放器方可在Windows平台上实现;Live555支持RTP/RTCP、RTSP、SIP等多种传输协议,并且可进行简单的扩展以实现多种视频格式的传输。综合考虑,Live555较为适合本系统的视频资源播放的服务器。
本系统开发基于Live555技术的流媒体播放设计步骤描述如下:
(1)系统初始化。初始化系统的各参数,环境配置等
(2)视频服务器与客户端通信。根据客户端的请求和视频服务器的响应,采用RTSP传输协议来控制视频流数据的传送。同时申请一定大小的用作缓存数据的内存空间,使得后续可实现无间断地播放视频。
(3)获取流媒体视频数据。由步骤(2)获取的视频流数据将分别对音频数据和视频数据进行FFmpeg[9-11]解协议、解封装、解码[12]等一系列处理,并基于视频和音频的时序对应,实现媒体流同步播放[13]的操作。
(4)启动播放线程。对处理后的流媒体数据通过SDL多媒体库[14-15]来绘制视频图像画面,而且使用多线程方法来实现播放、暂停、停止等功能。
图4 流媒体播放器流程图
4 结论
本文分析研究了网络流媒体系统的发展形势,并针对其存在的局限性,提出了一个简洁友好且内容丰富的大学课堂系统的设计方案。通过探讨大学课堂的功能需求,深入学习MFC界面库、SQL SERVER数据库技术、Socket网络通信技术、RTSP通信协议、Live555流媒体服务器、以及研究播放视频所需的FFmpeg和SDL开源库等基础知识,从而给出本系统的功能模块设计、网络通信与文件传输设计和流媒体播放设计。本系统采用当前较为先进及普遍的开发技术,具有良好的可扩展性和可移植性。相对于B/S架构,本系统在C/S架构下由客户端与服务器的交互将可快速加载功能控件,而且课程视频直播的体验性能更佳。
下一步工作将在此方案设计的基础上,继续给予概要设计,并在详细设计下实现该系统,并最终应用于大学课堂领域中,发挥其价值,受惠于教师与学生。
[1]刁志坚,钱军.计算机P2P网络流媒体播放系统研究[J].信息与电脑:理论版,2014(8):785.
[2]蔡长安,王盈瑛.C/S和B/S的模式的比较和选择[J].渭南师范学院学报,2006,21(2):47-50.
[3]欧军,吴清秀,裴云,等.基于socket的网络通信技术研究[J].网络安全技术与应用,2011(7):19-21.
[4]章民融,徐亚锋.基于RTSP的流媒体视频服务器的设计与实现[J].计算机应用与软件,2006,23(7):93-95.
[5]许华滨,谢维波,黄奕.基于Live555的流媒体服务器设计与实现[J].微型机与应用,2014(18):48-50.
[6]王暹昊.用I/O完成端口设计多线程的服务应用程序[J].计算机与现代化,2004(3):95-97.
[7]张兰华,吴耀华,张健.基于C/S结构的WMS的设计与实现[J].计算机工程与设计,2005,26(4):887-890.
[8]金达,叶庆伟,狄红卫.基于HLS的流媒体播放系统的设计与实现[J].信息技术,2013(10):49-52.
[9]Cheng Y,Liu Q,Zhao C,et al.Design and Implementation of Mediaplayer Based on FFmpeg[M]// Software Engineering and Knowledge Engineering:Theory and Practice.2012:867-874.
[10]Zeng H,Fang Y.Implementation of Video Transcoding Client Based on FFMPEG[J].Advanced Materials Research,2013,756-759:1748-1752.
[11]苗健,许应康.基于FFmpeg的视频播放软件设计[J].现代电子技术,2015(12):83-84.
[12]毕厚杰.新一代视频压缩编码标准[M].人民邮电出版社,2005.
[13]刘丽霞,边金松,张琍,等.基于FFMPEG解码的音视频同步实现[J].计算机工程与设计,2013,34(6):2087-2092.
[14]Donlon M.SDL library decomentation[EB/OL].2001.http:// www.libsdl.org.
[15]江俊杰,王志明.基于SDL的H.264流媒体播放系统[J].计算机系统应用,2013,22(12):51-54.
The design of network streaming media system based on college class-teaching
LV Jiaqing,LIU Licheng,HE Yun,LIU Qiuyun
(College of Information Engineering,Guangdong University of Technology,Guangdong Guangzhou 510006,China)
With the popularity of the Information era,the network streaming media plays an important role in college class-teaching.In order to integrate all kinds of teaching resources and motivate students’initiative enthusiasm of study,a design scheme of network streaming media system based on college class-teaching was proposed.Combined with VPR recorded equipment,SQL Server database,Live555 streaming media server and VC/MFC interface library,the system designed and built a simple friendly client system and management system on the basis of Client/Server architecture.Meanwhile,the video resources collected by the video-capture system were uploaded on the server system completely.So that the college class-teaching system could realize the live telecast and video on demand through network streaming media.With the advanced technology and fully preparation on demand analysis,thus the system has a better extensibility and portability,and meet the real-time requirement during the live process.
college class-teaching;network streaming media;software system;Client/Server;live telecast
吕嘉卿(1991—),女,广东顺德人,硕士研究生,主要研究方向:视频图像处理。
刘立程(1972—),男,福建上杭人,博士,副教授,主要研究方向:无线通信、数字信号处理。
何云(1993—),女,大学本科,主要研究方向:通信系统关键技术。
刘秋韵(1991—),女,大学本科,主要研究方向:通信系统关键技术。