倪朔东,施 佺
(南通大学现代教育技术中心,江苏南通226019)
作为信息时代的产物,网络教学在高校教育中取得突飞猛进的发展。为了能够充分发挥传统教学中教学情境丰满、师生交互频繁、学习氛围浓厚的优势,全面展示实践性教学内容的操作过程,将这些最优质的教学实景资源突破时间和空间的约束,真实高效地在网络上还原,必须依靠视频手段来呈现给更多的学习者。所以,作为网络教学中的一项主要功能,视频教学已越来越得到教学管理工作者的重视。
高校网络建设经历了漫长的阶段,从传输介质到中继设备出现了性能参差不齐的现象,而视频传输对于网络带宽的要求极高,采用单一的单播或组播等网络传输模式已经不能很好地满足视频传输,构建智能数据流传输的网络视频教学系统可以有效地利用网络带宽,充分发挥视频教学在网络教学中的作用。
目前,国内外都是采用流化本地视频文件,通过合适的传输协议在网络上进行视频传送,大多数高校的网络教学视频采用以下几种数据流传输模式:单播、组播、P2P[1]。
由于校园网是用于教学、科研、学校管理、信息资源共享和远程教学等方面工作的计算机局域网系统[2],所以在教学视频传输的同时,必须兼顾到整个网络的运行,满足学校其他工作的需求。结合校园网本身的特点,对以上3种传输模式进行比较分析:
1)单播是最简单原始的客户端/服务器(Client/Server,C/S)模式,采用单点对单点的数据传输模式,即一台服务器发出N个数据包给N个客户端使用。现在高校的师生基本都有自己的计算机,而且终端接入的带宽也比较高(一般是10M/100M),所以当巨额数量的用户发出请求时,势必对服务器的负载造成很大的压力,甚至出现瘫痪的现象。为此,学校只能通过不断增加服务器的数量,采用负载均衡来支撑整个需求,极大地增加了硬件成本。
2)组播也是一种客户端/服务器(Client/Server,C/S)模式,采用单点对多点的数据传输模式,即一台服务器发出1个数据包同时复制给N个客户端使用,这种模式极大地提高了数据传输的效率,同时也减轻了服务器的负载和骨干网络的拥塞。但是,组播要求从核心层到用户接入层的每个路由器交换机必须支持组播功能,且不同厂商的设备之间达到组播联调也同样存在困难[3],而在校园网长期的建设过程中必然会购入不同厂商的设备,每个应用系统对组播设计的算法要求差别也很大,这对于非盈利性的校园网来说,在组播设计管理上的开销将远大于组播在带宽上带来的优势。
3)P2P是一种新型的客户端/客户端(Peer to Peer)模式,采用单点对单点的数据传输模式,即每台机器既充当服务器也充当客户端的角色。P2P的原理是在用户获取数据的同时也作为服务器向其他用户提供数据,这些众多的提供者取代中心服务器提供稳定的数据服务,从而节省中心服务器带宽。P2P技术如果要有比较稳定的应用,那么大量的数据提供者就成为了关键,也就是说在同一时间内大量的数据提供者成了P2P传输数据的质量保证[4]。由于校园网是提供教学、科研、学校管理等多项工作的一个网络,不是单纯地服务一个应用,大量的用户在校园网中同时接收和分发数据,势必会对局域网中的其他应用造成拥堵,成为网络拥塞的罪魁祸首,所以目前很多高校对基于P2P的应用都做了限制。
不难看出,在校园网中仅靠单纯的改善网络传输模式来提高网络视频的传输质量会带来诸多的问题。构建一个智能数据流(即源文件)来适应复杂的网络环境,满足不同的网络传输是本课题研究的重点。
在网络视频教学服务中,学员的学习质量在很大程度上取决于视频的观看质量,而在网络环境中决定视频质量的一个重要指标是网络的传输性能[5],网络视频的传输性能指标主要表现在接收延时、音画同步和网络环境自适应性等方面,智能流传输技术是一个新提出的高性能传输技术,可以很好地提高网络视频的传输性能。
要实现高性能视频传输的关键技术在于设计一个性能优越的服务程序,服务软件设计时就要考虑服务器对本身资源的调度算法。资源分配池技术的思路即在服务器为客户机提供服务之前预先分配相关的资源,在服务器接收到客户请求以后从池中调度资源,而不是在服务器接收客户机请求以后再分配资源。资源分配池技术包括线程池与内存池技术。
1)线程池技术
在视频服务器初始化时,预先创建足够的服务线程,当用户发出数据请求时能最快时间地响应并提供使用,使得服务器能满足大量用户并发请求,提高整体的服务性能[6-7]。如图1所示,服务器在启动时预先创建N个服务线程,也就是线程池,N个服务线程处于休眠状态,然后服务器等待客户机的服务请求,一旦服务器接收到客户机请求,服务器将首先检查服务线程池中的线程是否有空闲者,如果有,则调度该空闲线程执行服务;否则在池中再创建N个线程,然后选取一个线程执行服务,线程执行完服务后不会被销毁,而是重新回收到池中以备下次再用。线程池中的线程在运行过程中不会被销毁,而是在服务进程终止时一次性被销毁。因此,线程池技术是网络视频快速响应服务请求的关键实现技术。
图1 线程池技术
2)内存池技术
视频服务器在处理客户请求时要分配许多小块内存用于中间操作,如果每次由操作系统来处理内存分配,一方面操作系统执行分配内存算法需要消耗时间,另一方面,操作系统是按页来分配内存的,即使分配一个字节的内存,也会导致操作系统从内存空间提交一个页面的内存,这就会导致内存的浪费[8]。在分配次数无限增多的情况下,就会导致进程内存碎块过多,进一步降低系统在分配内存时的搜索速度。系统采用内存池技术,预先分配一定的内存块在池中,当用户发出数据请求时先使用内存池中的内存块,在池中内存够用的情况下就不会调用系统内存,减轻了服务器的负载。
如图2所示,在接收到客户的请求后,服务线程预先分配一个粒度(例如4 096)的内存于池中,然后每次有新的内存分配要求,则首先从池中切割一块内存,如果池中的内存不够分配,再请求系统分配一个粒度的内存块,直到池中的空闲内存空间满足分配请求为止,内存使用完毕,只须将内存块回收到池中为后续重复利用即可,而不是释放并返回操作系统,在整个服务过程结束后,一次释放池,则所有分配的内存也被一次释放,这样减轻了操作系统管理内存的负担。
视频属于多媒体文件,而多媒体文件都是一些比较复杂的结构化文件,通常包括文件头、媒体数据与媒体索引数据[9]。视频流文件还有一个重要的属性,就是文件的码率,即文件正常播放时单位时间里解码器需要读入的数据量。目前,大多数流媒体系统都是在实际播放多媒体文件时分析每个媒体文件的结构,再调用相应的解码模块去解码,在网络状况不好或者用户重新定位媒体播放进度时,由于响应不及时,影响观看效果。
图2 内存池技术
文件的结构预解析技术的原理是在添加视频教学内容时预先获取媒体文件的结构信息,通过获取文件的码率,就可以自动计算文件在点播时要缓冲的数据量。通过预先分析提取文件的索引信息块就可以避免在后续拖动进度时重新解析文件索引信息,大大减少重新定位文件播放进度的时间;通过结构预解析技术也可以减少播放端的差错率,迅速确定用正确的解码器解码媒体。
数据流半缓存技术依赖于结构预解析技术获得的信息,在用户点播视频教学内容时根据视频的本身属性计算出需要缓存的数据量,在视频播放过程中建立一个视频流的滑动缓存窗口,滑动缓存窗口是建立在物理内存中,随着播放的进度总是预先缓存部分准备要解码的数据,通常为两秒到几十秒的数据量;如果用户在播放过程中改变了播放进度,通过计算,如果改变播放进度后的流指针恰好在缓存的滑动缓存窗口范围内,则可以不必向服务器发送SEEK请求,仅仅简单地移动读取指针即可;如果数据流指针超出播放滑动窗口的范围,则废弃现有的缓存数据,向服务器发送SEEK请求后创建新的滑动窗口,虽然有部分数据被废弃,但它们浪费的网络资源几乎可以忽略。
如图3所示,数据流半缓存技术的核心实现是一个滑动窗口,滑动窗口实际是一个环形缓存,维持一个写入指针与一个读取指针,读取线程从网络读取数据写入环形缓存区,并向右移动写入指针,当写入指针被溢出环形缓存区的范围时,写入指针将重新环绕到环形缓存的起点位置;解码线程从环形缓存中读取数据,并向右移动读取指针,当读取指针移到环形缓存终点时,重新环绕读取指针到环形缓存的起点。
图3 数据流半缓冲实现原理图
众所周知,接收延时在网络视频直播中是最重要的一项网络传输性能指标,为此实验主要从这项指标来进行直播性能的比较。服务器上装有两个实验直播软件,Windows Media Encode(WME)和采用智能数据流传输的网络视频教学系统(以下简称智能流系统),在相同实验环境和信号源的前提下,分别用这两个软件进行直播,采集实验数据。
在一台客户端PC上安装一个秒表软件和一个屏幕录像软件,用一台摄像机对着秒表,摄像机通过采集卡(本次实验采用osprey 450卡)作为信号源连接到直播服务器上。这时候在客户端打开直播播放器,播放器窗口中显示的视频就是本机的秒表,用屏幕录像软件录下视频后,在某一时间点截下画面,“客户端计算机秒表显示时间”与“客户端直播窗口秒表显示时间”的差值即为接收延时,如图4、图5所示,直播实验时间为60 min。
图4 Windows Media Encode直播时的接收延时
图5 本系统直播时的接收延时
分别截取了 1 s,1 min,5 min,10 min,30 min,60 min的实时画面。从图4可看出,采用WME进行直播的接收延时最多的是1 s画面时的281 ms,最少的是1 min画面时的0 ms。为了得到更客观的平均接收延时,笔者随机采集了60个时间点的数据,经计算平均接收延时约为248 ms。从图5可看出,采用智能流系统进行直播的接收延时最多的是30min画面时的205ms,最少的是1 s画面时的136 ms,笔者同样随机采集了60个时间点的数据,经计算平均接收延时约为163 ms。
经比较,采用本系统直播的平均接收延时比Windows Media Encode少85 ms,这是因为智能数据流传输技术在视频直播时采用的预判断,主要是资源分配池技术在信号源传输前进行了资源的合理分配,结构预解析技术在播放器接收视频流时进行了快速正确的解码,使得传输延迟尽可能地降到最小。
本文提出了一种新的智能数据流传输模式,详细阐述了资源分配池技术、结构预解析技术和数据流半缓存技术这3种关键技术。最后通过实验和WME系统比较接收延时这项重要网络直播指标,发现平均接收延时显著减少,有效地提升了网络视频的性能。
[1]凌燕,蓝善祯,徐品,等.P2P流媒体系统关键技术概述[J].电视技术,2012,36(3):58-61.
[2]王竹林.校园网组建与管理[M].北京:清华大学出版社,2002.
[3]成吉思.组播技术在网络教育上的应用[J].电脑知识与技术,2012(19):4731-4732.
[4] JONATHAN S,OMER L,RAPHAEL G.An optimal topology for a static P2P live streaming network with limited resources[C]//Proc.IEEE 17th International Conference on Parallel and Distributed Systems.Tainan:IEEE Press,2011:729-734.
[5]王明伟,王奇,杨洁,等.视频流传输性能的研究与分析[J].电视技术,2010,34(12):30-33.
[6]贺杰.线程池技术应用研究[J].网络安全技术与应用,2011,10(5):58-60.
[7]张垠波.线程池技术在并发服务器中的应用[J].计算机与数字工程,2012,40(7):153-156.
[8]甘彪,凌小峰,宫新保.基于动态内存池和WinpCap的高速数据捕获技术[J].信息技术,2012,35(1):70-74.
[9] 柳薇,马争鸣.网络视频编码技术[J].通信学报,2005,26(9):85-92.