林 旻
(南京审计大学,江苏 南京 211815)
在我国互联网带宽大提速和5G移动网络技术高速发展的前提下,特别是疫情严格防控的大背景下,国内的教育机构,特别是高等教育机构和义务教育机构开始大量采用直播的方式进行异地教学,有效拓展了教学的空间属性。当前,直播教育能够大面积推进并获得成功,不仅依赖于我国网络技术、信息技术的高速发展,也是我国近年来不断推动教育信息化、在线课程教学所积累的优质资源和有效经验从量变到质变的转化结果。
本文从南京审计大学教育技术中心的实际需求出发,设计并建设一套基于开源架构的虚拟在线课程直播系统,完善课程的拍摄、制作和传播手段,有效实现课程资源的合理整合、传播和共享。为高校分享教育资源、提高教学质量提供了新途径。研究内容具体包括以下方面:
(1)视频采集模块的设计与实施,实现课程的虚拟抠像拍摄、即时合成和实时推送。
(2)流媒体模块设计与实施,实现将视频采集模块传来的视频流进行存储和转发。
(3)直播呈现平台的设计与实施,整合课程视频,实现全平台(PC端和移动端)的直播功能,使学习者无论处在何地都可以进行课程学习。
本文提出的虚拟课程直播系统基于开源技术框架完成,能够实现课程拍摄、抠像合成;同时,实现课程视频流的推送、传播和存储;最终在一个安全、稳定、便利的平台上呈现。
(1)实时消息传输协议(Real Time Message Protocol,RTMP)由 Adobe公司提出,基于传输控制协议(Transmission Control Protocol,TCP),主要用于Flash,AIR平台的视频和数据通信。RTMP具有低延迟、高稳定性等优势,但缺点在于它属于Adobe公司的私有协议,需要使用Flash播放器播放。
(2)HLS(HTTP Live Streaming)是苹果公司提出的流媒体协议,主要应用于iOS系统,相较于其他流媒体协议,HLS不会请求完整的数据流,而是在服务器端将视频流分割成连续但时长很短的TS文件,然后通过m3u8索引文件按序访问。HLS具有移动端(iOS和Android)原生支持、支持HTML5播放、支持网络分发、CDN支持良好的优势,但缺点在于延迟高。两种协议对比如表1所示。
NRM(Nginx Rtmp Module)即基于 Nginx的RTMP模块,Nginx基于BSD开源协议,是一款高性能的HTTP和反向代理Web服务器软件,具有高稳定性、占有资源少、处理数据量大等特点。RTMP模块是github开源软件平台上著名的基于nginx服务器的RTMP和HLS协议扩展功能模块。Nginx+rtmp能够实现流媒体的文件存储、流媒体内容的转发、流媒体内容的更新等功能[1-2]。
OBS(Open Broadcaster Software)是一款开源的视频录制和视频实时流软件,广泛使用在视频采集、直播等领域。OBS软件具有实时抠像、直播推流、录播存储、输入输出源等多种功能,支持主流的视频格式和传输协议,提供插件定义功能,除核心框架以及渲染系统外,其他功能都可以通过定制开发第三方插件进行附加[3]。
Wordpress是一款基于GNU通用公共许可证授权的免费内容管理系统,其功能强大、扩展性强,通过第三方插件能够扩充众多功能,是全球用户最多的内容管理系统,在全球前1 000万个网站中占有率达30%。最近的Wordpress版本提供了Rest API接口,可以很好地实现网页端和移动端的数据呈现。所以,Wordpress可以实现课程流媒体视频的跨协议、跨平台呈现,使学生学习打破距离和设备的限制。
Vidoe.js是一款开源的Web视频播放插件,具有HTML5和Flash两种播放方式,兼容大部分浏览器,工作时优先使用HTML5工作模式,在不支持的浏览器中自动切换至Flash模式进行播放,能很好地做到视频流的全平台播放。
虚拟课程直播系统的设计基于开源技术框架完成,该系统不仅能够实现课程拍摄、抠像合成,而且可以同时实现课程视频流的推送、传播和存储,最后在一个安全、稳定、便利的平台上呈现直播内容,具体设计方案如图1所示。
图1 直播系统设计方案
视频采集模块包括3个功能:采集、抠像合成、串流。具体如下:
(1)视频采集,是指将高清摄像机拍摄的视音频信号输入到PC端,并转换成PC端能够识别的视频数据。
(2)抠像合成,是把画面中某一种颜色去掉(大多是蓝色或绿色),保留其他颜色的技术,然后再和其他素材叠加在一起。
(3)串流,是将视频数据封装成RTMP流并推送到NRM流媒体服务器的过程。
本系统视频采集模块的功能基于开源软件OBS+视频采集卡实现。首先,在采集计算机的PCIE接口安装视频采集卡;其次,通过视频采集卡的SDI或者HDMI接口连接高清摄像机;再次,在采集计算机上安装OBS软件,在OBS软件设置视频捕获设备获得摄像机拍摄的画面,并对该画面设置色键(一般为绿色)进行抠像合成操作;最后,在OBS的串流设置里设置NRM服务器地址和串流码,进行串流操作。
流媒体服务器模块主要负责接收视频采集模块推送的视频流,将视频流存储为点播资源的同时,以RTMP或者HLS流的形式为直播呈现平台提供拉流服务。
本系统流媒体模块的功能基于开源架构Nginx+Rtmp模块来实现,主要配置如下:
(1)配置RTMP流。
rtmp{
server{
application lablive{#rtmp推流请求路径
live on;
}
}
}
(2)配置HSL流。在RTMP标签中增加HLS的相关代码,具体代码如下:
rtmp{
server{
汕头海岸电台目前承担着覆盖范围内A1、A2海区的遇险、紧急、安全、日常海上无线电通信等功能,是为履行国际海事组织(IMO)公约而建设起来的集近、中、远距离水上无线电通信功能的船岸无线电通信系统,涵盖了HF/MF/VHF等频段,具备了SSB/FM无线电话和NBDP/DSC无线电报等功能,承担着船舶遇险报警、安全通信、海上安全信息播发等任务,是船舶航行安全必不可少的一套通信保障系统,它包括了收信台、发信台和无线电话台,其中收信台和无线电话台位于汕头海事局办公大楼,与汕头海事搜寻救助分中心同址,由市电、应急发电机及1台48KVA APC英飞系列UPS供电,电力供应情况可靠稳定。
listen 1935;#监听的端口
chunk_size 4096;
application lablive{#rtmp推流请求路径
live on;
hls on;
hls_path/usr/local/lablive/hlsFile;#设置HLS切片文件保存路径
hls_fragment 5s;#设置HLS分段长度
hls_playlist_length 10s;#设置HLS播放列表长度
}
}
}
在http标签下增加一个location,具体代码如下:
location/labhls{
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias/usr/local/lablive/hlsFile;
add_headerCache-Controlnocache;#设置缓存机制
add_header Access-Control-Allow-Origin*;#解决跨域
}
(3)配置NRM数据统计模块。在配置文件的http标签下加入两个location,具体代码如下:
location/livestat{
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location/stat.xsl{
root/download/NRM/;
}
使用浏览器打开http://172.24.200.46/livestat,即可看到NRM的推流信息,如图2所示。
图2 NRM的推流信息
直播呈现平台负责课程视频流的最终呈现,作为和学生直接交互的平台,功能上不仅要实现全平台(PC端和移动端)的视频流直播呈现,还要满足直播视频多维度(课程、教师、班级等)的分类整合,能够支持师生互动交流和分级、分权限管理直播课程。OBS直播测试如图3所示。
图3 OBS直播测试
本系统的直播呈现平台基于Wordpress与Video.js来实现,为了做到全平台(移动端和PC端)播放,本平台移动端通过HTML5页面配置video标签播放HLS视频流;PC端通过Video.js解码.m3u8视频,再通过
本文阐述了一个新的基于开源架构直播系统解决方案,详细分析了各个模块的功能需求,设计并搭建了整套直播系统平台。通过抠像合成技术拓展了课程的表现形式,增加了课程的趣味性和吸引力,通过“直播+教育”的即时传播方式,进一步拓展了学习的时间和空间属性。