一种多流媒体播放同步机制的研究
2010-09-13邹羚
邹 羚
(南京铁道职业技术学院苏州校区 信息工程系,江苏 苏州 215137)
0 引言
流媒体技术是一种新兴的网络媒体传输技术,它可以将音频、视频和其他多媒体在网络上以实时的、无需下载等待的方式进行播放。其传输音像文件时具有“占用硬盘小、速度快、高保真”等性能,并具有播放功能、交互功能和缓冲区功能,因此得到了广泛的使用。多流媒体播放技术是指多个媒体流,如音频、视频流等同时传输和播放的技术。这些媒体流在时间和空间上彼此关联,互相约束。在连续的视频流或音频流中,少数数据帧的丢失或不及时处理,并不会导致播放质量的明显下降,但是,如果各媒体流不同步则会造成相关画面中语音和动作的不协调,或者不同画面之间存在相对时延等。因此,多流媒体的同步技术是一个值得研究的问题。在教学研究的实验平台上,对教学过程中教师使用的电子教案,老师上课的实况录像,教室的学生学习情况等多种逻辑关联音视频流进行录制、传输,保证这些媒体流传输后播放时仍然要保持它们之间的同步关系[1-2]。利用所提出的算法,对四种流媒体进行同步测试,确定同步时间为1000 ms。测试结果表明,该算法对多流媒体实现同步播放是有效的。
目前研究流媒体技术的公司分别是Real Networks公司的Real System、Microsoft公司的Windows Media Technology和Apple公司的QuickTime,它们拥有着流媒体传输系统的主流技术[3]。
1 流媒体同步解决技术
目前流媒体播放的同步技术大致有三种。
1.1 利用Windows Media Tools实现同步
此法需要在ASF流中利用ASFINDEXER工具设定标记,每个标记有相应的名称说明标记的内容,在导航区中点击标记名称并利用相应的调用语句,就能使媒体播放器跳到标记所在位置开始播放。
Microsoft公司的Windows Media Technology技术中Media Tools主要提供了创建工具和编辑工具帮助用户生成.asf格式的多媒体流,即把实时视频/音频信息、现有的声音文件、图片以及AVI或MOV文件转换为ASF文件,也可以将转换成ASF格式的多媒体流信息进行编辑与管理,如增加有关流的名称(Title)、描述(Description)、作者(Author)、版权(Copyright)、速率(Rating)等信息,这些信息在ASF流播放时会显示在播放器的信息窗口中。利用这些信息,设定的标记,能够实现各种视频、音频、导航区标题等之间的同步。
1.2 用Microsoft Producer实现同步
此法是用工具将视频导入,并将其分割若干片断(Create Clips),依次把片断拖拽到时间线上,然后点击同步按钮自动生成标题、音视频等信息的同步。
1.3 使用SMIL语言实现同步
同步多媒体集成语言(SMIL,Synchronized Multimedia Integration Language),属于扩展型标记语言XML的范畴。可以用任何文本编辑器编写,是一种标准的纯文本文件,很方便实现编辑和修改。采用SMIL可以方便地描述各种媒体之间的时间同步关系和空间编排关系,是Internet上用于集成多媒体节目,尤其是流媒体的主要语言工具。SMIL语言是通过编辑SMIL文件将各种媒体文件如音频、视频、文字、图片等关联起来,它没有将它们融为一体,当想要重新组合生成新的多媒体节目时,只需要重新编辑而无需对各媒体文件做任何改变,这样可以极大程度地提高媒体素材的重用性。可见,通过SMIL语言可以实现各种视频、音频、导航区标题等之间的同步[4-5]。
此法微软的Media是不支持的。
2 基本思想
这里所设计的同步思想是:设定一个多流媒体标记文件,其中定义了流媒体文件的数量、名称、路径,并通过一个Common Dialog来打开流媒体文件及同步文件。利用同步文本文件记录的同步信息,读取同步时间头后,在流媒体播放起始时间进行同步,然后在播放器中设置函数每1 000 ms检测一次同步信息,通过播放时间与同步时间数组对比,如果发现多个流媒体播放时间点与文本文件中记录同步信息一致,则无需同步,如果不同就需按文本文件记录的同步信息调整。图1为同步实现机理实现图[6-8]。
2.1 编写多流媒体标记文件
多流媒体标记文件是用来记录多个流媒体文件的基本信息,以便播放器进行调用。记录格式如下:流媒体数量,流媒体名称,流媒体1的路径,流媒体2的路径,流媒体3的路径,流媒体4的路径,流媒体1的起始时间,流媒体2的起始时间,流媒体3的起始时间,流媒体4的起始时间,流媒体的同步文件路径。
文档示例为:
4,教学演示,F:微格教室教师授课.wmv,F:微格教室课堂情况.avi,F:微格教室反馈.mpg,F:微格教室授课讲义.rm,0,0,0,0,F:微格教室XMediaPlayersyc.dat。
2.2 编写流媒体同步文件(以流媒体1为参考时间轴)
流媒体同步文件是用来记录多个流媒体文件需要进行同步的时间和同步的次数。其格式如下:
我国的经济建设正处于快速发展的轨道,科学技术和行业发展日新月异。建筑行业在寻找新型的技术手段进行改革创新的同时,流水施工作业作为一种行之有效的组织管理方法,有利于加快施工进度,保证建筑工程质量,保证施工过程中每个环节的流畅性和均衡性,一直在现代施工项目管理中有着不可替代的独特作用。
同步点数量。
流媒体1需同步时间,流媒体2需同步时间,流媒体3需同步时间,流媒体4需同步时间。
文档示例为:
2
10,10,2 ,10
20,20,2 ,20
图1 同步机理实现
3 同步机理的算法实现
3.1 基本算法
根据同步技术思想,笔者对设置同步点、播放时间和同步点比较、同步多个媒体等方面进行程序设计。设有四个播放文件,其算法如下:
①打开同步文件sycFile,设定动态数组WMP1time(sycQt),WMP2time(sycQt),WMP3time(sycQt), WMP4time(sycQt);
②读取同步文件中的各流媒体的同步时间,将其读入到动态数组中;
③关闭文件,并设置第一个同步点,将sycponit置1;
④读取流媒体标记文件中的多个流媒体的路径,持续播放;
⑤检测每个流媒体文件播放时间curtime,并将它和同步文件中的各流媒体的同步时间相比较,以第一个流媒体文件为主;
⑥当WMP1time(sycpoint) =curtime时,将流媒体播放文件1暂停,流媒体播放文件2、3、4停止,即将文件的Controls属性设置为stop;
⑦将流媒体播放文件2、3、4的播放时间转到同步点,将currentPosition设置为同步时间点;
⑧同时将暂停的流媒体文件同时播放;
3.2 算法性能
通过实验来对比流媒体播放不同步和采用同步技术的性能差异。实验中,选取多比特率编码的MV作为媒体源。播放300 s,选取10个同步点。其间观察各个流媒体播放和同步情况;实验重复20次,采用同步技术的流媒体播放比较流畅、未出现流媒体不同步现象,平均播放帧可达28.6左右;而没有采用同步技术的流媒体播放时明显出现不同步现象,平均播放帧只能到19.3左右。性能差异非常明显。
4 同步扫描时间的确定及模拟实验
在确定同步扫描时间时,最早使用200 ms进行播放测试,即200 ms检测一次同步,其同步时间需要820 ms,运行时由于太过于频繁的同步导致四个流媒体不能协调,后来测试了300 ms、500 ms、800 ms、1200 ms、1500 ms等不同测试时间。图2就是在不同扫描时间所测得的同步时间,其中1t为扫描时间,2t为同步时间。
图2 同步时间实测
可以发现,在同步扫描时间1 000 ms处即无过多同步开销,也能做到媒体间很好的同步,因此,文中确定采用1000 ms。
该实验对于不同的硬件配置数据略有不同,同步点的选取对于实现流媒体同步具有比较重要的意义:首先,必须合理的确定同步点的数量,过多会增加系统开销导致不能很好的同步,过少可能会起不了作用;其次,必须合理的确定同步点时间(第一流媒体为时间轴),它可以根据系统配置好坏、资源状况作一合理确定。
5 结语
流媒体技术有着广泛的应用前景,在教学、会议和娱乐领域已得到很好的例证。基于声音流、图像流、文字流、音频流等多种媒体流的同步播放是多流媒体播放的关键技术。在多流媒体同步技术方面,提出利用文本文件记录同步信息和跟踪跳转时间以实现多个流媒体之间同步,设计出同步播放算法以实现同步播放,确定同步扫描时间以优化媒体间的同步,这种新的解决多流媒体同步播放问题的技术,十分简便,又是一个比较方便和廉价的解决方案。
[1] 李晓燕,严殊.嵌入式流媒体播放器的设计与实现[J].通信技术,2007,40(12):403-404;410.
[2] 曹靖,陆琳琳,邢雪峰,等.基于媒体技术的远程教育平台的设计与实现[J].中国环境管理干部学院学报,2007,17(03):91-94.
[3] 王儒昇.流媒体技术综述[J].中华素质教育,2004(09):55-57.
[4] 胡晓,高鹰,余群,等.移动数字化校园中流媒体的实现[J].通信技术,2008,41(12):399-401.
[5] 张炳卓,苏恭.建立Real流媒体技术的网络教学系统[J].中国电化教育,2004(06):83-85.
[6] 钟玉琢,向哲,沈洪.流媒体和视频服务器[M].北京:清华大学出版社,2003:183-186.
[7] 陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003:1-3.
[8] 李海.Visual Basic编程晋级,ActiveX控件[M].北京:清华大学出版社,2000:100-120.