基于流媒体技术的体育竞赛视频发布系统设计❋
2016-11-28庄亚军
缪 刚,王 萍,庄亚军,夏 伟
(河海大学物联网工程学院,常州213022)
基于流媒体技术的体育竞赛视频发布系统设计❋
缪刚,王萍,庄亚军,夏伟
(河海大学物联网工程学院,常州213022)
根据体育竞赛信息发布系统逐步趋向移动化、可视化的发展趋势,提出了基于流媒体技术的体育竞赛视频发布系统设计。突破传统思维,利用高清网络摄像机,将体育竞赛的视频信息发布从单一的电视转播发布,扩展到全方位覆盖的网络视频信息发布。将采集到的视频流发送至基于Linux内核的Nginx流媒体服务器,服务器对视频进行转码,并根据HLS协议对视频进行切片处理。最终将视频分别发布到PC端及移动端,实现了整个系统的跨平台运行。设计已成功应用于2015年第一届全国青年运动会,运行结果稳定,视频发布流畅,满足了综合型运动会的信息发布需求。
视频发布;网络摄像机;Nginx服务器;流媒体服务器;HLS协议;跨平台
1 引 言
随着互联网时代的到来以及流媒体技术的飞速发展,越来越多的行业开始融入流媒体技术[1]。近年来,人们关注体育比赛的渠道越来越多,除了传统的电视直播,各大门户网站也推出了各种类型的体育赛事直播节目[2],但是,这些仅仅是广播电视信号的采集和播放,仍然有很大一部分比赛的实时视频被大家错过。针对这种情况,提出了基于流媒体技术的体育竞赛视频发布系统。随着摄像机的码率和帧数越来越高,通过高清IPC(网络摄像机)可以实现比赛视频的高质量采集;通过流媒体服务器对视频流进行编码、封装,可以实现视频流以合适的码流和分辨率输出;通过Nginx-rtmp模块的HLS切片功能,可以实现移动端与PC端的跨平台发布;通过对接CDN分发网络,可以实现视频的多路并发。该系统的设计与运行,对体育竞赛信息发布系统的信息化发展起到了积极作用。
2 体育竞赛视频发布系统总体框架与工作流程
2.1总体框架
基于流媒体技术的体育竞赛视频发布系统主要由如下三个部分组成:视频采集子系统,流媒体服务器子系统,播放终端子系统。如何将视频以合适的码流、分辨率、封装格式发布在PC端、Android移动端、IOS移动端,实现视频信息的跨平台发布,是该系统重点解决的问题。体育竞赛视频发布系统的总体结构框架如图1所示,视频采集子系统负责视频采集和流媒体推送;流媒体服务器子系统负责拉取视频流,对视频流进行转码、封装、分发;播放终端子系统负责对视频信息进行解析、播放。
图1 体育竞赛视频发布系统总体框架
2.2工作流程
视频采集子系统:主要由IPC构成,通过配置网络硬盘录像机,给IPC分配IP,与比赛信息绑定,通过IPC内部H264编码、封装生成RTSP流,同时,NVR可以完成对比赛录像的存储。
流媒体服务器子系统:在Linux系统建立基于Nginx的Web服务器,添加RTMP模块,构成流媒体服务器。流媒体服务器将RTSP视频流转化为RTMP视频流,用于PC端发布;通过RTMP模块的HLS切片功能,对视频流进行转码,用于移动端发布;通过jsp技术动态修改服务器配置,对比赛视频进行动态管理;对接CDN分发网络,减轻服务器分发压力。
播放终端子系统:主要由两部分构成,竞赛数据发布模块和竞赛视频发布模块。采用HTML5网页显示,实现PC端和移动端跨平台发布。竞赛数据发布模块通过AJAX技术向体育竞赛综合数据库服务器发出请求实现;竞赛视频发布模块通过分配URL,向流媒体服务器发出RTMP和HTTP请求获取视频流信息,分别在PC端和移动端播放。
整个系统的工作流程如图2所示。
图2 体育竞赛视频发布系统工作流程图
3 系统设计
3.1视频采集子系统设计
该模块主要由高清网络摄像机(IPC)构成,由于IPC支持POE供电(网线供电),所以IPC特别适合用于体育竞赛信息系统,简化了场地布置。IPC由模拟摄像机和网络编码模块构成,模拟摄像机负责采集模拟视频信号,网络编码模块负责对模拟信号进行编码、封装,构成数字信号,便于接入交换网络。将IPC连接到网络硬盘录像机(NVR),NVR对IPC的IP进行配置,生成RTSP流。RTSP流类似于如下格式:
rtsp://admin:hhuc1115@223.68.171.138/h264/ch34/sub/av_stream
该流可以利用VLC播放器直接播放,也可以将流推至流媒体服务器进行转码分发。最后,通过NVR存储模块完成对比赛视频信息的存储。
3.2流媒体服务器子系统设计
该子系统基于Linux内核,搭建了一个Nginx RTMP Server,作为流媒体服务器。实质上,Nginx RTMP Server是集成在Web服务器Nginx上的一个RTMP模块。Nginx RTMP Server功能十分齐全:支持视音频直播、支持两种流的分发模式推和拉、支持H264/ACC编码、支持在线FFmpeg转码、支持HLS切片、支持外部程序执行,同时拥有先进的内存控制技术,可以在使用少量内存的情况下完成流畅的直播功能等[3]。
在体育竞赛视频发布系统中,该流媒体服务器负责以下四个任务:拉流,将IPC产生的视频流拉取到服务器;RTMP输出,用于适配PC端播放器;HLS切片输出,用于适配移动端播放器;分发,将视频流分发至播放终端。
(1)拉流
利用Nginx-rtmp-module中的exec指令,在服务器配置文件中执行外部FFmpeg命令。FFmpeg是一套开源计算机程序,它包含了非常先进的视音频编解码库,可以满足大多数的视音频编解码需求,且支持直播应用[4]。通过将FFmpeg命令写进服务器配置中,实现视频流的拉取。
在Nginx启动时,服务器将执行服务器配置中的FFmpeg命令,将IPC的RTSP视频流拉取到服务器,同时可以对视频流进行转码处理。
在比赛中,为了动态拉取视频流,修改服务器配置,可以部署一个Web服务器,利用JSP技术向Web服务器发出请求,构造FFmpeg命令行,执行命令,最后修改配置文件,在非比赛期间重载配置。服务器拉流流程如图3所示。
图3 服务器拉流
(2)RTMP输出
RTMP输出是为了适配PC端播放器。RTMP是flash player从视频服务器接收视频的一种TCP协议,因为大部分计算机都安装有flash player,而chrome内核的浏览器更是内置了flash player,并且RTMP协议相对于HTTP协议延迟较小,因此选用RTMP协议作为体育竞赛视频发布系统的PC端视频发布协议。
通过FFmpeg的转码功能将拉取的IPC视频流进行转码,将IPC端的RTSP流转化为RTMP流推送至RTMP服务器,并且以RTMP协议输出。PC端可通过网页播放器直接对服务器发出RTMP请求,实现视频直播。RTMP输出流程如图4所示。
图4 RTMP输出
(3)HLS切片输出
HLS切片输出是为了适配移动端播放器,对RTMP输出的进一步处理。HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,为IOS设备提供音视频直播和点播方案。由于IOS系统不支持Flash播放,因此在IOS移动端无法播放RTMP视频流,而IOS支持m3u8格式的HLS切片播放,因此需要对服务器端的RTMP流进行HLS切片处理,通过HTTP分发给IOS用户。另外,在Android sdk4.0以后,Android系统也开始支持m3u8格式的HLS切片播放。
HLS切片直播,实质上就是分段HTTP点播。要实现HLS直播,关键在于流媒体文件的分段处理。Nginx的RTMP模块提供了HLS切片功能,通过在RTMP Server中配置HLS应用,对RTMP流进行切片,生成m3u8视频索引文件和多个ts视频文件。最后生成HTTP路径,通过HTTP协议,将切片文件发布。移动端可通过HTTP请求访问m3u8索引文件,从而播放ts分段文件。HLS切片输出流程如图5所示。
(4)分发
通过流媒体服务器,主要产生两种格式的直播流:一种是flv格式的RTMP流,分发对象为PC端;一种是m3u8格式的HLS流,分发对象为移动端。
为了使全国各地的观众都可以通过体育信息发布平台流畅的观看实时视频,可以将视频流对接第三方CDN内容分发网络。利用CDN,可以减轻对服务器性能的需求,无需在全国各地设置分站点,将流媒体视频的内容缓存至边缘服务器,使内容请求点和交付点之间的距离缩至最小,从而促进流媒体服务器的性能,使体育竞赛视频发布平台的服务覆盖面更广[5]。
3.3播放终端子系统设计
播放终端子系统包括两个模块:一个是竞赛数据发布模块,一个是竞赛视频发布模块,均采用基于HTML5的Web页面发布。由于所有计算机系统,包括所有移动客户端的浏览器都可以支持HTML5、CSS和JavaScript,因此HTML5是跨平台信息发布的基础和核心。利用Bootstrap和jQuery框架,可以使信息发布界面自适应于各类尺寸规格的移动设备[6]。
(1)竞赛数据发布模块
通过AJAX向体育竞赛数据库服务器端提交请求获取数据可以实现页面的动态刷新。AJAX向服务器端提出请求并处理响应而不阻塞用户。在浏览器端与服务器端之间使用异步数据传输,使网页从服务器端请求少量的数据刷新局部页面,而不是整个页面。
(2)竞赛视频发布模块
在PC端,采用开源的JW Media Player网页播放器,将网页播放器嵌入到Web页面,通过播放器插件和脚本文件对流媒体服务器发出RTMP请求,配合flash player,实现RTMP视频流的播放。在移动端,由于Android在sdk4.0以后,开始支持m3u8格式的HLS视频流播放,所以播放方法与IOS移动端一样。只要对HTML5中video标签的src属性进行定义,直接对流媒体服务器发出HTTP请求,移动端即可对比赛视频进行实时播放[7]。
将两个模块相结合,集成配置到体育竞赛信息发布Web服务器,就形成了一个完整的体育竞赛终端播放子系统,实现了体育竞赛数据和比赛视频的跨平台实时发布。
4 延迟分析
由于体育比赛信息发布对实时性有一定的要求,为满足用户的体验需求,需要对各路视频的延迟进行分析。
在采集端,IPC需要对比赛现场视频进行采集、编码、封装生成RTSP流。由于是通过摄像机内部嵌入式编码模块进行编码,编码性能很好,所以延迟很小,几乎可以忽略。在PC播放终端,服务器需要通过FFmpeg对RTSP视频进行转码生成RTMP流,加上PC端flash player播放RTMP流时会生成本地缓存,会造成一定程度的延迟。在移动播放终端,由于需要进行HLS切片处理,终端会在切片生成的第一个ts文件下载完成后再进行播放,所以延迟稍大。可以通过流媒体服务器配置中的hls_fragment和hls_playlist_length指令来控制HLS分段长度和分段段数,从而控制视频播放的延迟和质量。分段越长,延迟和初始化时间就会变长,延迟就会更长;分段越短,对m3u8文件的请求会更加密集,延迟就会越小,网络流量消耗也就越大[8]。为了减少延迟,同时考虑到移动3G和4G网络带宽有限,需要对HLS切片的分段长度和分段段数进行合理配置。
经过多次实验和优化,PC端和移动端的延迟如表1所示。
表1 播放终端延迟分析表
由模拟结果可以发现:PC端播放的延迟在2-3s;移动端播放有9-11s的延迟。考虑到10s左右的延迟并不会影响用户观看体验,因此本方案产生的延迟是体育竞赛视频发布系统可以接受的。综上所述,该方案可以适用于综合性赛事的视频信息发布系统。
5 运行与实现
该系统已应用于2015年在福建举行的第一届全国青年运动会体育竞赛信息系统中,实现了高清网络摄像机的视频采集,实现了Nginx-RTMP流媒体服务器的搭建,实现了PC端和移动端的跨平台竞赛数据发布和竞赛视频发布。图6和图7是该系统在第一届全国青年运动会乒乓球比赛中PC端和移动端的运行界面。
图6 PC端运行实现
图7 移动端运行实现
6 结束语
针对体育竞赛视频发布仅限于电视转播信号发布的现状,提出了基于流媒体技术的体育竞赛视频发布系统方案,该方案已在2015年第一届全国青年运动会中成功运行。实现了比赛期间实时视频的PC端和移动端跨平台发布,可以满足体育比赛的视频发布需求。相较于已有的信息发布系统有更加丰富的信息量,对推动体育赛事信息化有着积极的意义。
[1]宋维虎.流媒体技术发展现状及应用策略综述[J].科技广场,2010(9):88-90.SONG Wei-hu.Overview of streaming media technology current situation and Application Tactics[J].Technology Square,2010(9):88-90.
[2]宋园园.我国专业门户网站体育视频传播趋势研究[D].北京:北京体育大学,2012.SONG Yuan-yuan.China's Professional Sports Video Portal Spread Trend Research[D].Beijing:Beijing Sport University,2012.
[3]姜浩然,徐林.基于RTMP的流媒体服务器的研究[J].计算机与数字工程,2011(10):104-108.JIANG Hao-ran,XU Lin.The Research of Streaming Media Server Based on RTMP[J].Computer and Digital Engineering,2011(10):104-108.
[4]任严,韩臻,刘丽.基于FFmpeg的视频转换与发布系统[J].计算机工程与设计,2007,28(20):62-63.REN Yan,HAN Zhen,LIU Li.Video Conversion and Distribution System Based on FFmpeg[J].Computer Engineering and Design,2007,28(20):62-63.
[5]姜楠,赵巍.内容分发网络(CDN)的发展与应用[J].科研,2015(9):41-41.JIANG Nan,ZHAO Wei.Development and Application of Content Distribution Network(CDN)[J].Scientific Research,2015(9):41-41.
[6]陶国荣.jQuery Mobile权威指南[M].上海:机械工业出版社,2012.TAO Guo-rong.The Definitive Guide of jQuery Mobile[M].Shanghai:China Machine Press,2012.
[7]覃介右,谷岳.HTML5触摸界面设计与开发[M].北京:人民邮电出版社,2014.TAN Jie-you,GU Yue.HTML5 Touch Interface Design and Development[M].Beijing:Posts and Telecommunications Press,2014.
[8]王文轩,胡晓晨,田响,等.一种基于HLS的移动流封装与切片部署架构[J].软件,2015(2):31-35.WANG Wen-Xuan,HU Xiao-chen,TIAN Xiang,et al.A HLS Based Mobile Streaming Package and Deployment Architecture Section[J].Software,2015(2):31-35.
Design of Sports Competition Video Release System Based on Streaming Media Technology
Miao Gang,Wang Ping,Zhuang Yajun,Xia Wei
(College of Internet of Things Engineering,Hohai University,Changzhou 213022,China)
As the sports competition information release system trending to development of the mobility and visualization,the design of sports competition video publishing system,out of the traditional thinking,based on streaming media technology,is proposed.The video game can be released from a single video broadcast signals to a full range of coverage of the network video information by means of the high-definition network camera.The video streaming will be sent to the streaming media server based on Nginx.By transcoding video and HLS slices,the video will be released to the mobile terminal and PC terminal to run the system cross platform.The design has been successfully used in the first National Youth Games in 2015.The test result shows that the operation is stable,the video released is smooth and the design meets the needs of information release for the integrated sports meeting.
Video Release;IP Camera;Nginx Server;Streaming Server;HLS Protocol;Crossplatform
10.3969/j.issn.1002-2279.2016.05.020
TP31
A
1002-2279(2016)05-0084-05
❋国家体育总局体育信息中心委托项目—2015年第一届全国青年运动会竞赛信息发布系统
缪刚(1992-),男,江苏省兴化市人,硕士研究生,主研方向:智能信息处理理论与技术。
2016-02-02