用VB 5.0实现多画面播放功能
2008-04-09 04:39:54来源:互联网 阅读 ()
所谓动态画中画,指的是在大画面视频播放时,小画面在大画面中也播放另外的画面,或者是两个画面都在做某种活动。
笔者前段时间用VB 5.0开发了一个VCD播放程序,可以实现以下功能:
(1)可以多屏播放,也就是画中画功能,可同时播放几个不同的画面;
(2)可以同时播放CD-ROM中的视频音频文件(当然,在硬盘中播放速度会更快些);
(3)支持多种文件格式(如.dat、.wav、.avi、.mov、.mmm、.mid、.rmi、.mpeg、.mpg、.mpa、.mpv等);
(4)自带画面美观且功能齐全的CD播放程序;
(5)增强了鼠标的右键功能,用它可以控制各画面的大小(1/16、1/4、1/2、1、2倍和全屏)、播放、暂停等;
(6)控制声音、图像、时间/帧显示转换、自动重播等;
(7)控制条随意拖动播放,再加上定时播放、自定义播放时间等播放方式,可使您更加惬意地控制VCD;
(8)屏幕可随意拖动,画面可任意放缩。
VCD中的影像文件都在光盘的MPEGAV目录下,文件名只有两种:AVSEQ01.DAT或MUSIC01.DAT(如果是音乐版的卡拉OK,则还有MUSIC02.DAT等。)。
可视动画控件ActiveMovie是Microsoft公司的控件,从不成熟的1.0、1.2到2.0,每次都有了很大的改进,如1.0版本中有几个属性是只读的(例如,DisplayMode 只能为 amvTime,而不能改为amvFrames)。该控件支持音频文件(.wav、.mid、.rmi)、影片文件(.avi、.mov、.mmm、.mpeg、.mpg、.mpa、.mpv)和VCD文件(.dat)等。播放时若用鼠标右键单击画面,则可以直接对画面的播放、暂停、停止等进行控制,读者还可以自行在“属性”栏中对影片播放进行控制设置,诸如设置“播放次数”、“音量”、“影片大小(1/16、1/4、1/2、1、2倍和全屏)”、“面板”、“颜色”、“过滤器”等。这种技术的实现实际上是VB调用ActiveMovie控制器来完成的,而ActiveMovie控制器内嵌了Microsoft MPEG 音频解码器和Microsoft MPEG 视频解码器。
首先,我们建立一个“项目”,依次选择“项目|部件”,然后添加Microsoft ActiveMovie Control(Amovie.OCX)、Microsoft Commondialog Control(COMDLG32.OCX),控件即出现在“工具箱”中。将上述两个控件加进窗体,再单击“菜单”工具栏,建立一个主菜单项:“文件”(FILE)及其子菜单项:“打开A画面”(OPENA)。
在OPENA中? 如下代码:
Private Sub OPENA_Click()
On Error Resume Next
CommonDialog1.Filter = "Video File (*.dat)|*.dat|Wave File (*.wav)|*.wav|AVI File (*.avi)|*.avi|Movie File (*.mov)|*.mov|Media File (*.mmm)|*.mmm|Mid File (*.mid;*.rmi)|*.mid;*.rmi|MPEG File (*.mpeg)|*.mpeg|All File (*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
ActiveMovie1.filename = CommonDialog1.filename
ActiveMovie1.Height = Form1.Height
ActiveMovie1.Width = Form1.Width
ActiveMovie1.Run
End Sub
这是对单个的ActiveMovie1进行控制。还可以在“文件”(FILE)中依次加入子菜单:“打开B画面”(OPENB)、“打开C画面”(OPENC),并相应地加入ActiveMovie2、ActiveMovie3等多个画面,并把上述程序代码略为改动后加入。这样,当您按下F5键即运行程序,打开您想要播放的VCD文件就可以欣赏VCD了。在屏幕上单击右键,还可以控制画面呢!
现在是否就满足了呢?不行!我们再增加一个用鼠标任意拖动屏幕的功能:
Private Sub ActiveMovie1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ActiveMovie1.Drag 1
X1 = X
Y1 = Y
End Sub
我们还增加了一个定义任意播放时间的主菜单项:“时间”(TIME)及其子菜单项:“画面A时间”(SETTIMEA):
Private Sub SETTIMEA_Click()
On Error Resume Next
Dim R As Integer
R = InputBox("请输入时间(分钟:0-60)")
R = R * 60
ActiveMovie1.CurrentPosition = Int(R)
ActiveMovie1.Run
End Sub
CurrentPosition是控制VCD播放的时间:(1)ActiveMovie1.CurrentPosition = 0(从头开始);(2)ActiveMovie1.CurrentPosition = 900(15分钟后);(3)ActiveMovie1.CurrentPosition = 1800(30分钟后)。依此类推,但是不能超过60分钟。
我们再增加一个主菜单项:“屏幕”(SCREEN)及其子菜单项:“全屏A”(FULLSCREENA),用来控制屏幕大小:
Private Sub FULLSCREENA_Click()
On Error Resume Next
ActiveMovie1.FullScreenMode = True
ActiveMovie1.Run
ActiveMovie1.MovieWindowSize = amvMaximized
End Sub
FullScreenMode用来控制画面是否为全屏,当它为TRUE时则以全屏方式播放VCD,为FALSE时则取消全屏方式。
MovieWindowSize也是控制屏幕的大小:(1)全屏大小:ActiveMovie1.MovieWindowSize = amvMaximized;(2)正常大小:ActiveMovie1.MovieWindowSize = amvOriginalSize;(3)倍屏:ActiveMovie1.MovieWindowSize = amvDoubleOriginalSize;(4)1/2屏:
ActiveMovie1.MovieWindowSize = amvOneHalfScreen;(5)1/4屏:ActiveMovie1.MovieWindowSize = amvOneFourthScreen;(6)1/16屏:ActiveMovie1.MovieWindowSize = amvOneSixteenthScreen。
我们可以随意控制屏幕,下面让我们再把声音控制一下吧!
Microsoft ActiveMovie控件2.0版的确比1.2、1.0改善不少!1.2、1.0版在我的创新AWE64顶级声卡中的表现很不尽人意,但2.0版却把我的“科达”音箱功能在创新AWE64的驱动下发挥得淋漓尽致!想必Microsoft 公司对ActiveMovie控制器中内嵌的MPEG 音频解码器下了苦功!
我们在菜单中增加主菜单项:“声音” 及其子菜单项:“增加”(SOUNDADD??快捷键设置为F4)和“减少”(SOUNDDUCE??快捷键设置为F5),分别用来控制声音的增强:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:万年梨吃法之我见
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash