《利用VB实现多媒体播放器.docx》由会员分享,可在线阅读,更多相关《利用VB实现多媒体播放器.docx(52页珍藏版)》请在三一办公上搜索。
1、利用VB实现多媒体播放器实验计划学时:6学时实验性质:验证性一、实验目的1. 通过实验学习多媒体技术有关知识,增进对多媒体技术的认识和体会。2. 掌握VB处理中经常用到的基本概念和名词。3. 学习使用VB编写多媒体播放器。 二、实验内容和要求1. 掌握VB中需要经常接触的基本概念。2. 练习使用VB,尝试它的各项功能。要求掌握基本处理功能,学会使用控件制作播放器。三、实验环境(硬件环境和软件环境)1. 带有声卡、麦克风、音箱或耳机的多媒体计算机。2. Windows XP以上操作系统。3. 工具软件VB。四、实验报告要求实验报告应包括实验名称、实验目的、实验内容、实验环境、操作方法和实验步骤、
2、实验数据记录和处理、实验结果分析、体会质疑建议。具体请参阅实验报告模板。五、操作方法与实验步骤参阅下面实验指导进行实验,请学员各自写下操作方法与实验步骤。(注意不要全抄下来,以各自理解的写,如何出现一样的报告,将给予0分处理)六、实验讲义实验1 API_ 音频播放器 本节主要介绍了利用 API 函数制作 WAV 音频播放器,首先来介绍一下 PlaySound() 函数。它的声明形式如下所示: Private Declare Function PlaySound Lib winmm.dll Alias PlaySoundA( ByVal lpszName As String , ByVal hM
3、odule As Integer , ByVal dwFlags As Integer ) As Integer 字符串 lpszName 为声音文件的全名。 长整型 hModule 为程序模块的句柄,通常设置为 0 。 长整型 dwFlags 标志设置,在使用文件名时设置为 &20000 。 添加控件 新建一个项目,在项目里添加 windows 窗体“ form1 ”,把它的“ Text ”属性改为“ API_ 音频播放”。 在“ form1 ”上添加一个 DriveListBox 控件做为驱动器列表框,一个 DirListBox 控件做为目录列表框,一个 FileListBox 控件做为文
4、件列表框,一个 Button 控件做为命令按钮,五个 Label 控件做为标识。 把 Label1 的 Text 属性改成“驱动器”来标识 DriveListBox 控件,把 Label2 的 Text 属性改成“目录”来标识 DirListBox 控件,把 Label3 的 Text 属性改成“文件”来标识 FileListBox 控件,再把 FileListBox 控件的 Pattern 属性设置为 *.WAV ,这样就能过滤掉其他类型的文件, Label4 的 Text 属性改成“所选的声音文件全名”, Label5 的 Text 属性显示声音文件的完全路径。把 Button 的 Tex
5、t 属性改成“播放”。 参见图 1 图 1 添加代码 双击 DriveListBox1 控件后进入代码编辑窗口,首先添加如下所示的程序声明代码: Option Strict Off Option Explicit On Friend Class Form1 Inherits System.Windows.Forms.Form 播放声音的 API 函数 Private Declare Function PlaySound Lib winmm.dll Alias PlaySoundA ( ByVal lpszName As String , ByVal hModule As Integer , B
6、yVal dwFlags As Integer ) As Integer Dim strSound As String 函数声明 在“ Private Sub DriveListBox1_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged ”与“ End Sub ”之间添加代码: 驱动器改变 DirListBox1.Path = DriveListBox1.Drive 双击 DirListBox1
7、控件,添加代码: 目录改变 FileListBox1.Path = DirListBox1.Path 双击 FileListBox1 控件,添加代码: 文件改变 strSound = DirListBox1.Path & & FileListBox1.FileName 双击 Label5 控件,添加代码: strSound = DirListBox1.Path + + FileListBox1.FileName Label5.Text = strSound 双击 Button1 控件,添加代码: 播放音频文件 Dim lngRet As Integer If strSound = Then 不
8、选择声音文件直接播放 lngRet = PlaySound(c:WindowsMediaThe Microsoft Sound, 0, &H20000) Else 选择声音文件后播放 lngRet = PlaySound(strSound, 0, &H20000) End If 在“ Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load ” 与 “ End Sub ” 之间添加代码 : 为文件名赋初值 strSound = 3. 运行 完成
9、所有的代码书写后,保存文件并运行程序。运行后的程序大致如图 2 所示, 图 2 各个框框里的内容也许因人而异,但结构差不多相同,如果不选择文件,直接单击“播放”,则播放的我们所熟悉的 Windows98 启动的声音。当然你也可以选择自己喜欢的音乐文件进行播放,但是文件名必须是 *.WAV 。 实验2 MP3 播放器 1. 添加控件 新建一个 Windows 应用程序,把 Form1 的“ Text ”属性改为“ MP3Player ”。 添加一个 MainMenu 控件,选中控件 MainMenu1 ,点击鼠标右键,在弹出的菜单里选择“编辑菜单”进入菜单编辑窗口,如图: 选中 MenuItem
10、1 ,点击鼠标右键,选择“新插入”,共插入 4 个 MenuItem ,它的属性如下表: 控件类别 控件名称 属性 设置结果 MainMenu MenuItem1 Text 文件 MenuItem2 Text 打开文件 MenuItem3 Text 清除列表 MenuItem4 Text 退出 添加一个 ListBox 控件,把 Name 属性改为“ List ”,用于显示曲目列表。 添加 3 个 Button 控件,它们的属性如下表: 控件类别 控件名称 属性 设置结果 Button Button1 Text 播放 Button2 Text 暂停 Button3 Text 停止 添加一个 O
11、penFileDialog 控件,用于显示打开对话框。 添加一个 MMControl 控件,把 Visible 属性设置为“ False ”,这样就把 MMControl 控件隐藏了。 MMControl 控件通常不在“工具栏”里,可以通过 点击菜单栏上的“工具”“添加 / 移除工具箱项” ,在 COM 组件里找到“ Microsoft Multimedia Control ”项,选中然后确定即可。如图: 添加控件完毕后的界面如图: 添加代码 双击“打开文件”菜单,添加如下代码: Dim pathNames() As String 定义多选文件路径 Dim sFile As String 定义
12、选取的文件路径 Dim flag As Boolean = False 判断用户双击的区域是否在列表项上 Private Sub MenuItem2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click With Me .OpenFileDialog1 .Title = 打开音乐文件 .Multiselect = True .Filter = 音乐文件 (*.mp3)|*.mp3|(*.mid)|*.mid .ShowDialog() pathNames = .Fil
13、eNames End With Dim path As String For Each path In pathNames Me .List.Items.Add(path) Next 添加文件路径到播放列表中 End Sub 双击“清除列表”菜单,添加如下代码: Private Sub MenuItem3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click Me .List.Items.Clear() End Sub 双击“退出”菜单,添加如下代码: Private
14、 Sub MenuItem4_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click Me .MCIControlxmand = Stop Me .MCIControlxmand = Close Me .Close() End Sub 双击 ListBox 控件, 在代码编辑窗口的右上的下拉菜单中,选择“ DoubleClick ”,如图: 添加如下代码: Private Sub List_DoubleClick( ByVal sender As Object , By
15、Val e As System.EventArgs) Handles List.DoubleClick flag = True flag = True On Error Resume Next Me .MCIControlxmand = Stop Me .MCIControlxmand = Close sFile = Me .List.SelectedItem Me .MCIControl.FileName = sFile Me .MCIControlxmand = Open Me .MCIControlxmand = Play End Sub 双击“播放”按钮,添加如下代码: Private
16、 Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me .MCIControlxmand = Play End Sub 双击“暂停”按钮,添加如下代码: Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me .MCIControlxmand = Pause End Sub 双
17、击“停止”按钮,添加如下代码: Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me .MCIControlxmand = Stop Me .MCIControlxmand = Prev Me .MCIControlxmand = Stop End Sub 运行 完成代码后,保存文件,并按 F5 调试运行,打开音乐文件( *.mp3 ),可以同时打开多个文件,在列表框将出现所选择的文件列表,双击任意一首歌曲,就能进行播放,运行
18、结果如图所示: 实验3 CD 播放器 1. 添加控件 新建一个 Windows 应用程序,把 Form1 的“ Text ”属性改为“ CDPlayer ”。 添加一个 MainMenu 控件,选中控件 MainMenu1 ,点击鼠标右键,在弹出的菜单里选择“编辑菜单”进入菜单编辑窗口,如图: 选中 MenuItem1 ,点击鼠标右键,选择“新插入”,共插入 4 个 MenuItem ,它的属性如下表: 控件类别 控件名称 属性 设置结果 MainMenu MenuItem1 Text 唱片 MenuItem2 Text 载入 MenuItem3 Text 弹出 MenuItem4 Text
19、退出 添加一个 ListBox 控件,把 Name 属性改为“ Tracks ”。 添加一个 StatusBar 控件,把 ShowPanels 属性设为“ True ”,再添加两个 StatusBarPanel ,并讲它们的 Alignment 属性都改为“ Center ”, AutoSize 属性都改为“ Spring ”。 添加一个 Timer 控件,把 Interval 属性设为“ 1000 ”, Enable 属性设为“ True ”。 添加一个 MMControl 控件,把 Name 属性改为“ MCIControl ”,所有按钮的 Enable 属性都设为“ True ”。可通
20、过如下的方法设置按钮的属性: 选中 Form1 上的 MMControl 控件, 点击鼠标右键,在弹出的菜单里选择“ ActiveX 属性” , 点击“控件”选项,然后把所有控件的“ * 有效”选项都选中如图: 如果你在“工具栏”里找不到 MMControl 控件,可以通过 点击菜单栏上的“工具”“添加 / 移除工具箱项” ,在 COM 组件里找到“ Microsoft Multimedia Control ”项,选中然后确定即可。如图: 添加控件完毕后的界面如图: 添加代码 双击 ListBox 控件,添加如下代码: Private Sub Tracks_SelectedIndexChang
21、ed( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tracks.SelectedIndexChanged flag = True End Sub 在代码编辑窗口的右上下拉菜单中,选择 DoubleClick ,如图: 然后添加如下代码: Private Sub Tracks_DoubleClick( ByVal sender As Object , ByVal e As System.EventArgs) Handles Tracks.DoubleClick 实现双机更改曲目功能 Try If Me
22、.Tracks.SelectedIndex = 0 And flag = True Then flag = False Me .MCIControlxmand = Stop Me .MCIControl.Track = Me .Tracks.SelectedIndex + 1 Me .MCIControl.From = Me .MCIControl.TrackPosition Me .MCIControlxmand = Play End If Catch ex As Exception End Try End Sub 双击“载入”控件,添加如下代码: Private Sub MenuItem2
23、_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Dim i As Integer Try Me .MCIControlxmand = Open 选取豪秒作为时间单位 Me .MCIControl.TimeFormat = 0 Me .MCIControl.Track = 1 从第 1 首的开始位置起播放 Me .MCIControl.From = Me .MCIControl.TrackPosition If MCIControl.Error Then Mes
24、sageBox.Show(CD ERROR) Exit Sub End If Me .MCIControl.EjectEnabled = True 将所有曲目列于表中 For i = 1 To MCIControl.Tracks Tracks.Items.Add(track & i) Next If Tracks.Items.Count 0 Then Me .Tracks.SelectedIndex = 0 Else MessageBox.Show(CD ERROR) Exit Sub End If Catch ex As Exception MessageBox.Show(CD ERROR)
25、 Exit Sub End Try Timer1.Enabled = True Me .MCIControlxmand = Play End Sub 双击“弹出”控件,添加如下代码: Private Sub MenuItem3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click Me .MCIControlxmand = Eject End Sub 双击“退出”控件,添加如下代码: Private Sub MenuItem4_Click( ByVal sender
26、As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click Me .Close() End Sub 双击 MMControl 控件,选择“ StatusUpdate ” 添加如下代码: Private Sub MCIControl_StatusUpdate( ByVal sender As Object , ByVal e As System.EventArgs) Handles MCIControl.StatusUpdate If Me .MCIControl.Mode = 526 Then Timer1.En
27、abled = True Else Timer1.Enabled = False End If End Sub 双击 Timer 控件,添加如下代码: Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 更新状态栏 Me .StatusBarPanel1.Text = CD 共有曲目 & Me .MCIControl.Tracks & 首 Me .StatusBarPanel2.Text = 现在正在播放第 & Me .MCIContro
28、l.Track & 首 End Sub 双击 Form 窗体,进入代码编辑界面,添加如下代码: 判断用户双击的区域是否在列表项上 Dim flag As Boolean = False Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load Me .FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me .MaximizeBox = False MCICont
29、rol.RecordVisible = False MCIControl.EjectEnabled = False 设置设备类型 MCIControl.DeviceType = CDAudio Me .StatusBarPanel1.Text = 等待 Me .StatusBarPanel2.Text = 请放入 CD 并加载 End Sub 然后在代码编辑窗口的右上下拉菜单中, 选择“ Closing ”,添加如下代码: Private Sub Form1_Closing( ByVal sender As Object , ByVal e As SystemxponentModel.Canc
30、elEventArgs) Handles MyBase .Closing MCIControlxmand = Stop MCIControlxmand = Close End Sub 运行 完成代码后,保存文件,并按 F5 调试运行,放入一张 CD 到 CDROM 中,运行的结果如图: 实验4 视频播放器 在这一例中,我们将利用 MCI 控件制作一个播放视频文件的程序,程序具备以下功能: 具有播放视频文件的能力。 选择并打开将播放的文件。 播放文件,具备 Play (播放)、 Stop (停止)等常见的播放功能。 有进度条指示目前的播放进度。 具备被循环播放功能。 具备静音功能。 1. 添加控
31、件 新建一个 Windows 应用程序,把 Form1 的“ Text ”属性改为“ MediaPlayer ”。 添加一个 MainMenu 控件,选中控件 MainMenu1 ,点击鼠标右键,在弹出的菜单里选择“编辑菜单”进入菜单编辑窗口,如图: 选中 MenuItem1 ,点击鼠标右键,选择“新插入”,共插入 3 个 MenuItem ,它的属性如下表: 控件类别 控件名称 属性 设置结果 MainMenu MenuItem1 Text 文件 MenuItem2 Text 打开 MenuItem3 Text 退出 添加一个 PictureBox 控件,把 Name 属性改为“ Pictu
32、re1 ”,用于显示播放的画面。 添加一个 MMControl 控件,用于实现播放的各种功能。把 Name 属性改为“ MCIControl ”,所有按钮的 Enable 属性都设为“ True ”。可通过如下的方法设置按钮的属性: 选中 Form1 上的 MMControl 控件, 点击鼠标右键,在弹出的菜单里选择“ ActiveX 属性” , 点击“控件”选项,然后把需要用到的控件设置为“可视”,其它设置为“隐藏”,如图所示: 添加一个 TrackBar 控件,用于控制和指示播放的进度。 添加一个 CheckBox 控件, Name 属性为“ CheckBox1 ”,把 Text 属性改为
33、“静音”,用于实现静音功能。 添加一个 CheckBox 控件, Name 属性为“ CheckBox2 ”,把 Text 属性改为“循环”,用于实现循环播放的功能。 添加一个 OpenFileDialog 控件,用于显示打开对话框。 MMControl 控件通常不在“工具栏”里,可以通过 点击菜单栏上的“工具”“添加 / 移除工具箱项” ,在 COM 组件里找到“ Microsoft Multimedia Control ”项,选中然后确定即可。如图: 添加控件完毕后的界面如图: 添加代码 双击“打开”菜单,添加如下代码: Dim FileName As String Private Sub
34、 MenuItem2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click With Me .OpenFileDialog1 .Title = 打开视频文件 .Filter = 视频文件( *.avi)|*.avi|(*.mpg)|*.mpg|(*.mpeg)|*.mpeg .ShowDialog() FileName = .FileName End With If FileName Then Me .MCIControl.Enabled = True Me .MCI
35、Control.FileName = FileName Me .MCIControl.hWndDisplay = Me .Picture1.Handle.ToString Me .MCIControlxmand = Open Me .TrackBar1.Minimum = 0 Me .TrackBar1.Maximum = Me .MCIControl.Length Else MsgBox( 请选择文件 ) End If End Sub 双击“退出”菜单,添加如下代码: Private Sub MenuItem3_Click( ByVal sender As System.Object, By
36、Val e As System.EventArgs) Handles MenuItem3.Click Me .MCIControlxmand = Stop Me .MCIControlxmand = Close Me .Close() End Sub 双击 MMControl 控件, 在代码编辑窗口的右上的下拉菜单中,选择“ StatusUpdate ”,如图: 添加如下代码 Private Sub MCIControl_StatusUpdate( ByVal sender As Object , ByVal e As System.EventArgs) Handles MCIControl.
37、StatusUpdate If Me .CheckBox1.Checked Then 如果复选了 静音 框 Me .MCIControl.Silent = True 无声播放 Else Me .MCIControl.Silent = False 正常播放 End If Me .TrackBar1.Value = Me .MCIControl.Position End Sub 在代码编辑窗口的右上的下拉菜单中,选择“ Done ” , 添加如下代码: Private Sub MCIControl_Done( ByVal sender As Object , ByVal e As AxMCI.Dm
38、ciEvents_DoneEvent) Handles MCIControl.Done If Me .MCIControl.Position = Me .MCIControl.Length Then 如果到了文件末尾 Me .MCIControlxmand = prev Me .MCIControlxmand = Stop 返回文件头 If Me .CheckBox2.Checked Then Me .MCIControlxmand = play 如果复选了“循环”框,开始重新播放 End If End If End Sub 在代码编辑窗口的右上的下拉菜单中,选择“ StopClick ” ,
39、 添加如下代码: Private Sub MCIControl_StopClick( ByVal sender As Object , ByVal e As AxMCI.DmciEvents_StopClickEvent) Handles MCIControl.StopClick Me .MCIControlxmand = Stop Me .MCIControlxmand = Prev Me .MCIControlxmand = Stop End Sub End Class 双击 TrackBar 控件,添加如下代码 : Private Sub TrackBar1_Scroll( ByVal
40、sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll If Me .MCIControl.Enabled = True Then Me .MCIControl.Position = Me .TrackBar1.Value 响应进度条的拖动 End If End Sub 运行 完成代码后,保存文件,并按 F5 调试运行,打开一个视频文件( *.avi,*.mpg,*.mpeg ),在“文件类型”的下拉菜单中,可以选择不同的文件类型,运行的结果如图: 实验5 Flash 动画播放器 本例介绍如何
41、使用 ShockWaveFlash 控件来制作 Flash 动画播放器的。首先将 ShockWaveFlash 控件的命令、属性、和事件简单介绍如下 Play :播放。 Stop :停止播放。 StopPlay :停止播放当前的播放文件,以能播放新的动画。 Movie 属性:设置播放的文件路径。 Loop 属性:设置该属性为 Ture ,表示循环播放。 CurrentFrame 属性:当前帧。 TotalFrames 属性:动画总的帧数。 1. 添加控件 新建一个 Windows 应用程序,把 Form1 的“ Text ”属性改为“ FlashPlayer ”。 在 Form1 上添加一个
42、GroupBox 控件,将它的 Dock 属性设置为“ Bottom ”。 添加一个 MainMenu 控件,选中控件 MainMenu1 ,点击鼠标右键,在弹出的菜单里选择“编辑菜单”进入菜单编辑窗口,如图: 点击鼠标右键,选择“新插入”,共插入 9 个 MenuItem ,它的属性如下表 控件类别 控件名称 属性 设置结果 MainMenu MenuItem1 Text 文件 MenuItem2 Text 打开文件 MenuItem3 Text 播放列表 MenuItem4 Text - MenuItem5 Text 退出程序 MenuItem6 Text 控制 MenuItem7 Tex
43、t 继续播放 MenuItem8 Text 暂停播放 MenuItem9 Text 添加一个 OpenFileDialog 控件。 添加一个 Timer 控件,把 Interval 属性改为“ 100 ”。 添加一个 TrackBar 控件。 添加一个 Label 控件,把 Text 属性改为“播放状态显示”。 添加一个 AxShockwaveFlash 控件,把 Dock 属性改为“ Fill ”,把 BackgroundColor 属性改为“ 0 ” 。如果在“工具箱”中未找到 AxShockwaveFlash 控件,则可以通过以下方法添加:点击菜单栏上的“工具”“添加 / 移除工具箱项”
44、 ,在 COM 组件里找到“ Shockwave Flash Object ”项,选中然后确定即可。 添加控件完毕后的界面如图: 添加代码 双击“打开文件”菜单,进入代码编辑状态,添加如下代码: 定义变量 Dim PathNames() As String 定义文件路径数组 Dim count As Integer 定义打开多文件的文件数目 Dim i As Integer 定义循环变量 Private Sub MenuItem2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuIte
45、m2.Click With Me .OpenFileDialog1 .Title = 打开 Flash 动画文件 .CheckFileExists = True .CheckPathExists = True .Multiselect = True .Filter = Flash 动画 (*.swf)|*.swf .ShowDialog() PathNames = .FileNames End With If PathNames Is Nothing Then Exit Sub End If count = PathNames.GetUpperBound(0) 选取文件数目 Me .MenuItem3.MenuItems.Clear() 清空所有已有的菜单项 For i = 0 To count Dim mitem As New MenuItem