多流媒体播放器ActiveX控件开发
目前视频播放器很多,可以播放各种各样的文件和流,但大多只支持一个文件或一个流播放,若要播放多个文件就需手工打开多个播放器。在现实的应用中,为了实现多流播放,实际上是直接将媒体流打包输入到计算机的通信接口上,由多个播放器进程进行播放,这样做只适应于播放无关联的媒体流(如多路视频监控,多人会议系统等)。而对于相关联的媒体流,这种播放器就不能实现多个视频文件流的控制和同步。本文在对多流媒体同步播放技术研究的基础上,通过对流媒体服务器的设置,进行了多流媒体播放器的开发。该多流媒体播放器可以接收多流媒体服务器的码流并对其进行解码和控制,同时对相关流进行同步,改进了播放器的内部结构和播放器的用户界面。将其移植成Active控件后,在网页上调用,通过对4个媒体流的同步播放测试,证实该播放器运行性能良好。
1 ActiveX介绍
ActiveX是一种技术集合。利用ActiveX,开发者几乎可以利用任何熟悉的工具产生多媒体效果、交互式功能及复杂的应用程序。其优点在于开放的跨平台支持,可以运行在Macintosh,Windows 和UNIX操作系统上,支持Visual Basic、Visual C++、Borland Delphi、Borland C++、java and Java-enabled tools等各种工具,支持HTML,TCP/IP,Java,COM和其他工业标准。
ActiveX的技术包括用户能够在浏览器之中看非HTML文档(如word、excel文档);能够被插入网页或任何称作控件容器库的应用程序之中的对象(如按钮、股票计数器和直方图);可以在整个客户区域以框架形式显示文档;能够定制来源于数据库或是一个在服务器上运行的程序的网页内容;可以将处理过程从服务器方移至客户方[1]。
2 同步方法、模型、技术
2.1 流媒体同步方法
目前流行的同步方法有分层同步法、时间戳同步法两种。
分层同步法把多媒体流看成一个树型结构,由串并行演示子树组成。有基于动作的串行同步和并行同步两种操作。其优点是易于计算存储和处理,因此得到了广泛的应用。
时间戳同步法是把多个具有时间关系的媒体流依附于一个公共的时间轴上,去掉或更改一个对象不影响其他对象的同步。在运行期间,研究公共的时间轴与局部时间的误差是否超出指定的范围,如果超出则需同步。Quick Time就用此方法。其优点是使得单一媒体对象和嵌套媒体对象的内部结构能有更好的抽象。
2.2 流媒体同步模型
目前,流媒体同步模型采用RTP/RTCP协议,并且将分层同步法和时间戳同步法结合使用,其模型结构如图1所示。人机交互同步即用户对媒体操作,媒体做出相应反应,这种操作的特点是发生时间不确定。媒体间同步即流媒体对象根据时间相关性分为时间无关媒体和时间相关媒体。媒体内的同步指某个时间相关媒体流中各媒体元素之间的时间同步关系[2]。
2.3 流媒体同步解决技术
目前,流媒体播放同步技术有3种:(1)Windows Media Tools同步法,此法利用ASFINDEXER工具在ASF流中设定标记,每个标记都有相应的名称,在导航区中点击标记名称并利用相应的调用语句,就能使媒体播放器跳到标记所在位置开始播放;(2)Microsoft Producer法,此法用工具将视频导入,将其分割成若干片断(create clips),依次把片断拖拽到时间线上,然后点击同步按钮自动生成标题、音视频等信息的同步;(3)SMIL语言法,此法使用SMIL(Synchronized Multimedia Integration Language)语言,描述各种媒体之间的时间同步关系和空间编排关系,将各种媒体文件如音频、视频、文字、图片等关联起来实现同步[3]。
3 多流播放器的设计
3.1 流媒体服务器的架设
Windows Media Server是微软免费提供的一个流媒体服务端软件,可在安装Windows 2003时选择这个服务,也可在Windows安装好后在"添加删除程序"里选择添加该服务。
Media Services 9可将asf、wmv等流文件添加到C:\WMPub\WMRoot中,然后用"mms://地址/文件名"的方式来访问,也可以重新建立访问目录。
3.2 多流播放器构想
多流播放器应具备的功能为:多个相关文件/流输入到播放器,经过解码,使多个文件/流能够同时显示在播放器窗口播放。系统结构如图2所示。
经过一段时间开发后,发现每个Filter的PIN输出和PIN输入只能是单个的。一个播放器只能对一个流文件进行编码/解码。因此,不能通过这种方式实现多个画面的播放。
对图2进行了改进,图3为改进后系统结构图。
这种方式是在一个播放器的外壳下,包含了多个播放器,实际上每一个视频窗口都是一个独立的视频播放器。多个媒体在同一外壳的播放器下播放,外形上是一个播放器,内部是由多个播放器在播放,通过设置一些应用属性,
- 基于Mobile的手机流媒体实时图像浏览客户端的软件设计(09-25)
- 基于J2ME的手机相册系统(10-29)
- DIY小发明:打造你自己的流媒体播放器,解决方案、硬件框图(06-04)
- 嵌入式流媒体携带式系统的设计及改进(03-23)
- 基于Mobile的手机流媒体实时图像浏览客户端设计(09-26)
- 基于ARM平台的嵌入式家庭网关服务器平台(06-09)