上面说了那么多,还没有进入正题,其实在Windows\System下有一个Windows中自带的用于控制运动图像播放的动态链接库Quatrz.dll,它实现了对DirectShow的简单封装,或者说它是当今流行的DirectShow技术的前身,在该库中定义了IBasicAudio,IbasicVideo、IBasicVideo2,IMediaEvent 、IMediaEventEx、ImediaPosition、ImediaControl和IVideoWindow等类,程序开发人员可以利用它们方便地控制和操作各种格式的流媒体。例如,直接调用ImediaControl类的无参函数Run、Pause、Stop等就可以控制流媒体的播放进程;利用IMediaPosition类对具体播放细节进行定位操作等。对于流媒体的数据输出显示并不需要特别的控件,在VisualBasic编程中可以简单的选择一个窗体作为容器或一个PictureBox控件作为容器。为了使用该动态连接库,你需要作的仅仅是在生成一个项目后,点击VB开发环境的工程/引用菜单,在弹出的对话框中选择ActiveMovie Control type library就可以了。 二、VB开发流媒体的播放技术
为了是说明如何在VB中利用ActiveMovie Control type library实现流媒体的播放,下面给出了一个名为VBDemo的项目实现代码,该程序可以以不同的速率来播放wav、avi、mepg等多种格式的多媒体文件,同时显示多媒体文件的长度、播放速率等信息。 在这个项目的窗体上定义一个FILE(名字为mnu_File)的主菜单,它包含OPEN(名字为mnu_FileOpen)和EXIT(名字为mnu_FileExit)子菜单,分别用于打开流媒体文件和退出应用程序;工具条tbControlBar上定义三个按钮,分别为实现流媒体的"播放"、"暂停"、"停止"功能的按钮;名为picVideoWindow的PictureBox控件用来作为播放流媒体视频数据的容器;slBanlance和slVolume两个Slider控件分别用来控制媒体流的声音大小和平衡度,它们的最大最小值分别为(-10000,0)和(-5000,5000);在界面的信息栏中,txtDuration和txtBox这两个TextBox控件分别用来显示正在播放的流媒体的时间长度和播放速率;关于播放速率,用户可以通过optplaybackR单选框来选择正常播放、两倍速率播放还是半速播放。程序编译后的界面如下(抱歉,使用考屏的方法无法将播放的图像一同考贝下来):