基于人才交流网的视频直播系统的实现
2017-05-30李华菲
李华菲
摘 要:随着互联网技术不断地发展,人才招聘交流等网站越来越普遍。本课题通过介绍视频直播的技术及安全性策略、直播系统后台架构采用的协议以及推流方式,完成了视频源直接推流的测试。
关键词:视频流;推流;重缓冲
人才交流网的视频直播系统在用户播放时,第一个用户可能需要等待比较长的时间,因为视频转码需要一定的时间,这样用户播放时才能获取到视频流,考虑流媒体文件第一个的观众主观感觉来衡量与评价系统服务性能,可以定义为基于应用层(用户)的Streaming测量技术[1]。在此推流用户推流的时候可以首先启动原始码率,开启VLC media player播放器进行性能测试,测试的数据结果是用户满意程度的直接反馈。
根据以上情况,总结出衡量应用层(用户)为基础的直播视频播放效果:
第一,缓冲的时间:当用户进入网站点击直播播放url时,至用户可以正常观看到直播视频文件时,此指标可以评估服务器的转码性能以及数据传输在网络上的延迟等。
第二,播放时的码率:此标准主要是取决于画面精细程度、流媒体原始数据的帧率、编码形式以及网络环境等。
第三,重缓冲:用户直播流媒体视频文件数据时,如果缓冲区中数据资源并没有满足直播视频播放的要求的话,得必需重复完成缓冲。
第四,画面的质量问题:在视频直播时,直播播放的效果最终还是以用户的主观感受为直接依据,并且衡量系统性能的视觉指标以最终画面质量的好坏为参考。
1 视频直播的技术及安全性策略
人才交流网的视频直播系统相关的所有功能,包括码率,水印,以及推流,播放等相关信息都是通过调度控制模块完成,通过网站web端调用接口设置相关信息。 当接受到前端发来消息后,根据参数判断操作何种类型,然后读写mysql数据库。
1.1 cache的设计
网站的访问人员(如求职人员)观看视频直播招聘会的时候,会通过访问url,跳转到拉取直播视频源的服务器上下载观看视频。首先从缓存(cache)中获取视频源信息。
1.1.1 cache的数据结构
THashMap是第一级管理结构,包括了总的配置参数、针和桶。通过这个数据结构实际上管理了3个THashNode的链表:add_list、free_list、bucket。
add_list:为了实现lru算法,将所有使用了的THashNode串起来,双向链表,用add_next_和add_prev_串接。
free_list:空闲的THashNode,等待被使用,单向链表用node_next_串接。
bucket:根据md5和bucket_size大小分配的桶,便于THashNode的查找。
1.1.2 算法选型
根据模拟用户并发访问的数据主要包括用户数和请求数。目前的缓存算法主要有:LRU算法、LFU算法、LRU-2算法。本课题分别用3种算法测试了整个流水的实验结果。据模拟的测试数据来看,选择LRU-2,命中率:2.53%。
1.1.3 优化
算法设计最主要涉及的是时间复杂度和空间复杂度的一对矛盾体。根据实际的业务场景,需要进行不同的处理。目前随着硬件水平的不断发展,在很多服务器应用场景中,往往都是空间容量充足,而谋求更快的处理速度。即牺牲空间复杂度,以获取更快的访问速度[2-3]。
1.2 网站安全策略
通常的Web网页攻击主要包括两类:一类是利用Web网页依赖的服务器存在的各类漏洞进行攻击,常用的有CGI缓冲区溢出等攻击;另外一种情况直接攻击网页前端自身遗留的安全漏洞,常用的方法是跨站脚本攻击方式。
(1)常规防范Web应用的攻击方式:a、数据量过于庞大容易产生缓冲区的溢出——黑客通过构造的多位进制的代码以及通过超出机器的存储缓冲区容量,使网站服务器随意完成一些恶意指令,危害网站的服务器轻易瘫痪。b、采用SQL注入方式——入侵用户开发SQL代码,想办法迫使网站服务器运行时,导致服务器产生漏洞,便可得到相关重要数据。
大部分网页能产生服务器缓存的数据,是客户浏览网页时,浏览器解释是HTML 和文本产生的。如動态页面缓存了非法信息,不管是客服端或服务器端,要是无充足的能力去鉴别这样的入侵,或期间,一般的用户只要点击了,之后的程序跟着就会在点击者的机器上自动运行,此时目标机的相关信息便会被盗用,黑客就能更改用户的配置、上传假的广告以及修改cookie 等形式的不同攻击行为。
(2)HTTP Referer安全与反盗链:加入反盗链机制后,从其他非服务提供者指定的来源的HTTP请求就得不到正常结果了。
2 视频直播系统后台的设计与测试
常用的流媒体协议主要有 HTTP,RTMP/RTMPS等。
HTTP是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。但是HTTP协议因为存在小数据流的规则从而导致大量的文件,且需要消耗很多资源去处理或者是存储这些较小的文件。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速,因此,HLS协议对存储I/O要求相当苛刻。
RTMP协议全称为实时消息传输协议。此协议基于TCP,是一个协议族。RTMP本身为一种实现通信的网络协议,一般用在Flash/AIR平台以及支持RTMP协议的交互服务器或是流媒体服务器间完成数据的通信以及音、视频数据的转换。
新型点播服务器系统,独创了内存缓存数据实时切片技术,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:将TS切片文件存到内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。
3 ffmpeg的安装使用以及推流过程
3.1 ffmpeg的安装
3.1.1 首先安装lame
./configure--prefix=/usr--mandir=/usr/share/man --with-gtk-prefix=/usr &&
make &&
make install
3.1.2 安装ffmpeg
./configure --prefix=/usr/local --enable-memalign-hack --enable-libmp3lame --enable-shared --disable-yasm
make
make install
3.2 ffmpeg推流过程
进入人才交流网页面,上传直播数据源。推流客服端首先打开电脑摄像头,如主播介绍人才的需求视频,现场讲说,在此选择频道号,和推流时间,上传视频数据,后台便开始推流。
接着,在后台服务器上的ffmpeg便开始工作了。在Linux系统上,ffmpeg比较适合支持V4L2的视频设备,通过登录服务器后台运行的脚步程序及运行情况如下:可见数据正在往推流服务器上上传。客服端采用ffmpeg推流时,为了避免黑客入侵或是其他攻击,以及限制非注册本课题设计的人才招聘网站的直播用户,特设置了refer黑白名单,允许特定的url可以通过refer头部传递来控制访问。
4 总结
本课题的基于人才交流网的视频直播系统的实现,采用分层结构化的方案完成此课题的设计,便于数据与指令的转发分离开来,成功的避免因网络复杂情况下数据随意性的转发,并且可以降低数据冗余、提高数据的传输效率。虽然,流媒体转码在理论层面上有一定的理解,但其实际表现如添加水印转码平台是怎么实现,在直播数据源转码的时怎样蓝关。保存索引的Mysql数据库怎么实现容灾,以及负载均衡等,同时关于处理系统的瓶颈以及系统安全方面的知识相对薄弱,这些都是以后的科研或工作中需要进一步研究的地方。
參考文献
[1]STOICA I,MORRIS R,KARGER D,et al.Chord:A Scalable Peer-to-peer Lookup Service for Internet Applications[J].Computer Communication Review,2001,31(4):149-160.
[2]TANG Y,LUO J,ZHANG Q,et al.Deploying P2P Networks for Large-Scale Live Video-Stre aming Service[J].IEEE Communications Magazine,2007,45(6):100-106.
[3]张红兵,陈永健.一种基于数据库的数据广播系统的实现与性能分析[J].电视技术,2004,(1):36-38.
(作者单位:国网湖南省电力公司新田县供电分公司)