用VB实现视频的实时回放

Author: Date: 2001年 44期

?牐犎缃瘢悠捣矫娴娜砑晌绞鞘皇な热缥⑷砉镜腗ediaPlayer、超级解霸、东方影都等等,它们都是十分优秀的视频软件,功能很强大,可以播放各种格式的视频节目,如十分流行的MPEG2和MPEG4、AVI、MIDI、MOV等。但是笔者却发现几乎没有一个软件有视频回放功能,即从当前的视频图像帧向已经播放的视频图像帧回退播放。这个功能很有用,举个很简单的例子,在足球比赛中,为了判断球员是否越位,经常需要慢镜头的正放和回放,又比如在银行的监控系统中,就需要回放功能来准确判断可疑人物的行为。所以,本文的目的就是实现这一功能,以弥补那些优秀软件留下的遗憾吧!
  ?牐牱匣吧偎担梦颐窍壤纯纯碫B中的MediaPlay控件的功能吧!MediaPlay控件可以控制媒体的播放、停止、快进、后退及视频的一些属性等。本文中主要用到了它的Play(播放)、Pause(暂停)、Rate(控制速度)、Currentposition(当前的帧或时间位置)以及Displaymode(播放模式以帧方式或以时间方式显示)属性等。
  ?牐犑紫龋赩B的Form中加一个MediaPlay控件和一个Timer控件。然后采用控件的Click方法控制视频的显示方式:1.正常播放;2.慢速回放,同时在TIMER控件中控制回放的速度。下面是源代码,让我们一起来剖析它的功能。
  ?牐牐?MediaPlay的Click方法
  ?牐燩rivate Sub Media1_Click(Button As Integer,ShiftState As Integer,X As Single,Y As Single)
  ?牐燚im Isinverse As Boolean '控制显示方式和Timer控件的使能与否
  ?牐營f Isinverse=False Then '正常方式显示
  ?牐燭imer1.Enabled=False 'Timer控件失效
  ?牐營sinverse=True
  ?牐燤edia1.Rate=1 '视频的播放速率
  ?牐燤edia1.Play '开始播放
  ?牐燛lse '回放方式显示
  ?牐燤edia1.Pause '播放停止
  ?牐營sinverse = False
  ?牐營f Media1.DisplayMode!=mpFrames Then '变成帧显示模式
  ?牐燤edia1.DisplayMode=mpFrames
  ?牐燛nd If
  ?牐燭imer1.Enabled = True 'Timer控件有效
  ?牐燛nd If
  ?牐燛nd Sub
  ?牐牐?Timer控件定时中断方法
  ?牐燩rivate Sub Timer1_Timer() '使视频以每秒5帧的速度慢镜头回放(正常速度为每秒25帧)
  ?牐燭imer1.Interval = 200 '每0.2秒中断一次
  ?牐燤edia1.CurrentPosition = Media1.CurrentPosition - 1 '每0.2秒倒退(回放)一帧
  ?牐燛nd Sub
  ?牐犑褂梅椒?:在MediaPlay显示窗口中左键点击奇数次时以方式1显示(正常播放),点击偶数次时以方式2显示(慢速回放),当然你也可以在Timer控件中控制回放速度(修改Timer.interval的值)。同时也可以在MediaPlay控件中添加显示模式(比如快速/慢速播放等),有兴趣的朋友不妨试一试。本程序在Windows 98/VB 6.0环境中调试通过。