近年来,多媒体技术和网络技术在教育中的应用不断深入,高校网络辅助教学对数字视 频资源的需求迅速增长.伴随着视频相关技术的不断发展,数字视频资源在存储方式和播 出方式上都发生了深刻的变化,高校校园的网络化的传输更利于资源的共享和传播.但这 同时也对高校信息化建设部门的视频支持技术提出了更高的要求.某些优秀的课程或者讲 座受学生欢迎程度高, 一处教室的容量不能满足广大学生的要求,需要进行多地多教室的分 会场的视频直播;在讲座和课程结束后,广大师生需要观看课程讲座的视频录像进行更深入 地学习.高校教师和学生分布在不同的校区,使用多种类型的操作系统以及手机等移动终 端,校园网络结构复杂多样.本文提供了一种基于开源软件搭建的高校网络视频平台的解决方案,用多媒体数字视频资源辅助高校的网络教学,推动高校信息化的发展.
1 网络视频平台中所使用的开源软件
在搭建校园网络视频平台时,我们广泛采用了流行的开源项目技术.开源的软件质量 较高且易于扩展,文档资料及社区支持强,而且针对高校自身的特点,能更好地进行个性化 的定制.
1.1 VLC
VLC media player是 由VideoLAN 社区开发的自由开源媒体播放器、编码器及串流 器 .VLC 使用内置的编解码器,能在几乎所有流行平台上运行,并能读取几乎所有文件、 CD、DVD、网络串流、捕获设备及其他媒体格式[1].
VLC 本身既可以作为服务端又可以作为客户端.VLC 在后台用作服务端时,支撑整个 网络视频平台的编码、串流、转发、录制等功能.VLC 也可以在广大师生用户的PC 终端上 安装,来作为观看视频的客户端软件.VLC 作为开源软件,支持编写扩展模块来增强其功 能.我们使用lua语言,为VLC 软件定制开发了校园网内的视频频道展示插件.它通过每 次动态获取后台服务器端的XML 频道列表,给用户展示带层次的视频转播的频道列表.因 为是从服务器端获取视频播放信息,因此支持在服务器端做负载均衡,给不同校区或者校外 不同网络的用户动态提供不同服务器的视频流推送地址.
1.2 Flowplayer
Flowplayer 是一个开源的Web 视频播放器.可以将该播放器嵌入网页中,还可以自由 定制和配置播放器相关参数以达到需要的播放效果.Flowplayer 支持播放flv 、swf等流媒 体以及图片文件,能够非常流畅的播放视频文件,支持自定义配置和扩展[2].
1.3 Wordpress及其插件
WordPress 是一个注重美观、易用性和网络标准的个人信息发布平台.使用Word- Press 可以快速地搭建功能强大的网络信息发布平台.它拥有数量众多的插件库可以扩展 它的功能,让用户省却对后台技术的担心,集中精力做好网站的内容[3].
我们使用了Cool Video Gallery插件[4]来搭建视频点播平台.它有后台的对上传视频 进行管理的控制台,可以制作视频集,并且可以通过简单的代码嵌入到网页中去来显示视频 集列表;它还可以自动为上传的视频生成预览图片;前端的网页脚本可以对不同的客户端自 适应地显示相应的播放界面.它使用了另一个开源的Web 播放器JWPlayer.
我们还使用了Exec-PHP 插件来在Wordpress 中快速创建PHP 页面,来实现监控信息 的展示等含有程序处理代码的页面功能,而不用去服务器上去创建PHP 脚本文件.
1.4 其他开源软件
我们还使用了其他的开源软件,如Linux 操作系统,Apache 服务器及其PHP 模块, bootstrap 来做页面的美化布局,以及RRD 工具用来做监控展示等.
2 基于开源软件的校园网络视频平台的架构分析
2.1 网络视频平台的硬件架构
在搭建校园网络视频平台的过程中,广泛使用了虚拟机的架构.我们使用一组由多个 刀片机服务器组成的服务器组来搭建虚拟机集群.虚拟机后台的网络划分为多个VLAN.
其中一部分的VLAN 供校园网转播用 .这些VLAN 可以根据学校的网络结构来做划分, 比如不同校区等,这样方便在校园网中做分布式转发部署.另外,根据不同网络接入运营商 (例如教育网、电信、联通等),设置多路VLAN, 这样在进行面向校外的转播过程中,能够通 过前端链路优化之后,后端能用相应的网络链路在做输出,合理利用带宽资源,并且能保证 用户收看视频的质量.在虚拟机集群上配置了VLAN 之后,集群上的所有服务器都可以访 问到这些VLAN. 通过配置操作系统并且预装好软件,然后做成虚拟机模版.若有性能或 者分布式的需求添加新的虚拟机非常方便.并且模版中安装了监控的程序,只需在中控服 务器上添加新服务器的IP 地址,即可对新加的服务器做到统一的监控以及管理.对于网络 视频源的采集、编码、推流,也可以使用安装了视频采集卡的PC 机 .
视频前端的采集方面,我们在校园内十余处会议室、教室、报告厅等,安装了固定的网络 摄像机.配合服务器上的定时任务脚本,使用VLC 自动将网络摄像头的视频信号进行转 播,并配置自动录制,这样,只需要事先配置好需要转播的计划任务,就可以全自动地进行特 定地点的视频转播和录制,这是自动化网络视频教学的一个尝试.另外,对于视频画质要求 较高的重大直播场合,还配备了若干个网络视频编码盒,用于连接前端清晰度更高的数字摄 像机.
2.2 网络视频平台的软件件架构
网络视频平台所使用的开源软件的整体框架,可以分为前端的客户端以及后端的服务 器端。两者间的对应关系如图1所示.
2.3 基 于VLC 的视频直播平台的架构
在视频虚拟机集群中,专门部署了一台作为中央控制的服务器.该服务器上配置有其 他转播服务器的连接信息,能通过SSH 远程命令控制其他转播服务器上的转播程序任务, 同时可以获取其他转播服务器上的监控信息,包括连接人数,服务器的CPU、 内存开销,以 及网络带宽的使用情况.
校园网内的视频直播所面临的一个问题就是网络的带宽.随着多媒体技术的发展,广 大师生用户对于视频画质的要求越来越高.另外,视频采集的前端都有对高清视频输出的 支持.高清视频的码率往往要达到2~4 M/s, 因此在网络视频直播的整体架构上,需要采 用分布式转发的方案.例如,可以对于学校内不同区域,根据其连接到校园网主干核心的链 路的不同,在这些接入到校园网主干的节点上部署视频转发的服务器.在服务器的控制端, 通过客户端的IP 地址,来动态地返回用户所在区域分流服务器的视频转播地址,从而有效 地疏导大并发时所产生的网络流量.上文提到过,在客户端方面开发定制了VLC 的插件来 动态获取视频直播列表.对于通过Flowplayer 网页播放器来收看视频的用户,我们使用网 页脚本动态设置网页播放器的播放地址,从而实现负载的均衡.
2.4 基 于Wordpress 的视频点播网站的架构
我们使用Wordpress 的 Cool Video Gallery插件来搭建视频点播的网站平台。视频文 件通过FTP 的方式上传到至服务器.在Cool Video Gallery的管理中心中,创建视频集,添 加视频文件.然后创建视频相关的展示页面,嵌入视频集的代码,用户即可在网页上进行视 频点播的播放.在服务器的后端,通过添加Apache 的第三方支持H264 以 及FLV 流输出 的模块,使得视频支持流播放,支持播放器进度条的拖动以及视频的缓冲.通过将视频统一 转码成H264 MAIN 3.1以上的MP4 格式,并且通过Javascript 对 于iOS 设备自动切换支 持的播放界面.另外,服务器端可以做负载均衡,通过多台文件服务器的分流,来应对视频 点播的高并发的情形.
3 基于开源软件的校园网络视频平台的实现要点
3.1 VLC编码与推流
关于流媒体视频的格式,可以分为两个部分[5].一个是流媒体的文件格式,即视频流是 按照那种文件格式来封装的.常见的视频流的文件格式有avi,mov,asf,mp4,ts 等等.文件 格式在VLC 中的参数名称为mux. 流媒体视频的另一个格式是编码的格式,即视频是用哪 种算法来编码的.编码分为视频编码以及音频编码.常见的视频编码格式有mp4v,DIV3, h264,WMV2,MJPG,FLV1 等等.视频编码格式在VLC 中的参数名称为vcodec. 常见的 音频编码格式有mpga,mp3,mp4a,a52,flac 等等.
在实际应用中,通常使用的视频编码格式为h264, 音频编码格式为mp4a. 如果使用 VLC 作为客户端收看视频,mux 使 用ts;如果使用网页上的Flash 播放器来收看视频,mux 使用flv. 当然,实际中视频流推送所需要采用的格式以及稳定性需要根据视频源输出硬件 以及格式的不同来做调试.在分布式的视频直播架构里,可以用VLC 实现多次的分级转 发,来实现视频网络的负载均衡.
对于iOS 平台的视频直播,使用VLC 来生成视频文件以及其索引,用户通过前端网页 上的HTML5 播放器进行视频的收看.使用VLC 中 的index 参数来指定索引文件存放的 路径,使用“#”来对生成的视频文件进行顺序编号.
3.2 VLC插件
VLC 的插件使用lua语言来开发.VLC 客户端插件从服务器端获取一个XML, 解析 其结构并且生成带分类的播放列表.服务器的XML 是通过PHP 脚本经过负载均衡的计 算动态生成视频播放地址.我们使用simplexml.parse_url() 方法来获取服务器端的XML.
然后通过循环遍历解析XML 的 tree 对象的children 节点.可以按视频的类别来创建组,之后使用vlc.sd.add_node 方法在'VLC 中显示组的列表.每个视频组中使用add_subitem 方 法来添加一个个视频集的播放地址信息.
3.3 Flowplayer网页脚本
首先,需要在要播放视频的页面的head 之间引用Flowplayer 的 js 脚本文件.然后,在 需要加入播放器的地方加入一个a 标签 . 将a 标签的href属性指向要播放的视频地址,然 后设置样式,宽度和高度,以及设置display:block, 当然关键的是还要给a 标签指定一个id, 以便于JS 调用。最后在页面中使用flowplayer 的构造函数以及play 方法来调用播放器.
由于iOS 系统不支持Flash 播放器,因此对于使用iOS 系统的移动客户端,我们需要使 用另一套解决方案.
iOS 系统移动客户端的视频播放可以使用HTML5 中 的video 标签.我们可以在页面 中针对两种播放器使用两个DIV. 用 Javascript 脚本代码,通过获取客户端User-Agent 的 值,来判断是否客户端的操作系统是否使iOS. 然后设置相应播放器所属DIV 的 display属 性为block 或者为none, 以此来控制选择使用Flash 播放器或是iOS 的 video 标签.
3.4 使 用Cool Vido Gallery搭建视频点播页面
首先,在Wordpress 后台的管理控制台中给一个视频集创建一个gallery. 然后通过 FTP 上传视频文件.在指定了视频的路径、填写了视频的标题信息之后,编写展示页面,嵌 入cvg-gallery标签,然后指定galleryld.这样就能快速方便地创建好了视频的点播页面. 同时,还可以对页面进行美化,添加课程的介绍等信息,并对所有的课程分类别做整体的排 版布局.
另外,视频点播平台还要支持进度条的拖动.当用户拖动JWPlayer 播放器的进度条到 某个位置时,浏览器会给服务器发送类似“? start=时间点”的一个参数.这就需要Apache 来处理这个请求的参数,去动态加载视频某个位置的数据,将从该时候开始的文件部分返回 给客户端的请求,而不是返回整个的文件.这需要安装Apache 的第三方模块.其中,flv 视 频需要使用mod_flvx 模块;h264 编码的mp4 文件使用mod_h264_streaming 模块.可以从 网上下载编译好的so 文件,放置到modules 目录中.然后在配置文件中添加这对两个文件 的处理.同时,在配置文件中限制客户端的下载速度以及并发连接数,从而保证视频点播的 用户体验。
4 视频平台实际应用情况及扩展性分析
复旦大学视频直播平台于2012年7月上线运行.之后,对平台功能进行了添加与完 善,增加了频道和栏目的分类,添加了讲座、课程、公开课等教学资源的栏目.2012年12月 起平台支持网页直接收看视频直播,并增加了课程视频的点播功能,支持多种终端设备,大 大方便了广大师生的收看.视频直播平台开通以来承接了许多重大会议以及公开课程的网 络直播任务.通过网页化直播管理,定时自动录制等功能为日常的讲座以及课程的直播服 务.在上海市共享课程中,还给其他高校进行视频直播的分流. 目前,视频直播以及点播平 台各类课程、讲座视频几百门,在重大直播时观看终端数可达600多余个.另外,在2014年 的MOOC 课程中,我们还进行了全球的视频课程直播,使用负载均衡以及链路的智能选择 优化,为全球的学生提供了稳定优质的视频直播收看服务.
基于开源软件搭建的校园网络视频平台还有许多地方可以进行扩展以及定制.视频直 播的编码参数等可以根据视频前端的硬件进行调整;分布式的转播架构可以根据校园网络 的结构进行设计部署;视频点播的页面以及开源网页视频播放器可以进行更好地定制和美 化;网络视频平台的监控可以美化及添加更多功能;网络视频平台的控制中心可以进 一 步地 开发,最终可以完全通过网页界面替代远程登录服务器的方法来控制平台的各种功能 .
5 总结与展望
在复旦大学校园网络视频平台的建设中,大量使用了开源软件,加快了配置开发的速 度,增强了系统的功能以及稳定性;服务器端与客户端的松耦合的设计,能够兼容更多类型 的客户端,更好得为全校的广大师生服务.通过运用最新的视频技术以及网络技术,复旦大学网络视频平台为多媒体的教育教学做了支撑和保障,将在学校未来的教育教学过程中起 到越来越大的作用 . 同时,也希望各高校共同参与开源软件的应用和开发,更好地促进高校 信 息化的发 展 .
非特殊说明,本博所有文章均为博主原创。
共有 0 条评论