如何用VB实现MP3播放功能

www.hackbase 2004-9-29 黑客基地
 本文作者曾经读过不少关于如何用VB实现播放MP3格式音乐文件的文章。这些文章所介绍的方法都具有一个相同的特点,即要借助某个第三方提供的具有专门的MP3解码功能的控件。能不能直接利用VB自身所提供的多媒体控件来实现MP3播放功能呢?答案是肯定的。任何一种编码格式的音、视频文件都要通过其相应的解码器解码后才能实现播放的目的,MP3也不例外。Microsoft在Win9x系统中已经内置了MP3的解码驱动,因此我们完全可以利用它直接对MP3进行解码,从而实现播放MP3的目的。在编码上,我们只需在C:\windows\system.ini文件的[MCI]项目中添加命令行:mp3audio=mciqtz.drv 使VB自身所提供的多媒体控件能够正确调用相应的解码器对MP3进行解码就足够了。

  下面就让我们利用VB自带的MMControl控件做一个MP3播放器实例。

  实现步骤如下:

  一、 绘制窗体:(见下图)

 

燕麦  1.新建一个工程,在窗体中加入

  MMControl控件,名称为MP3Player(通过在工具箱上单击鼠标右键弹出的菜单中选择[部件],并在弹出的部件对话框中选中Microsoft Multimedia Control 6.0 可以将MMControl控件添加至工具箱中备用)。

  CommonDialog控件,名称为CommonDialog1。

  两个Label控件,名称分别为TitleWnd、FileNameWnd。

  2.利用菜单编辑器建立菜单[文件],创建两个菜单项,一为[打开](名为file_open),一为[退出](名为file_exit)

  二、 在工程中加入一个模块,编写播放MP3的过程代码以备调用

  三、 程序编码



  1.form1中的代码:


Option Explicit
Private boPause As Boolean  '用于暂停/播放按钮的逻辑判断
Private Declare Function
  WritePrivateProfileString Lib "kernel32" _
    Alias "WritePrivateProfileStringA"
      (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpString As Any,
      ByVal lpFileName As String) _
    As Long                  '写ini文件的API函数声明
Private Sub file_exit_Click(Index As Integer) '菜单"退出"处理
    Unload Form1 '终止,退出
End Sub
Private Sub file_open_Click(Index As Integer)
'功能:菜单"打开"处理
    With OpenFileDlg            '设置CommonDialog控件
      .Flags = 0                    '只允许打开单个文件
      .MaxFileSize = 10000          '设置最大文件数
      .Filter = "(*.mp3)|*.mp3"      '只显示.mp3文件
      .FileName = ""                '设置初始文件路径名
      .ShowOpen                      '显示对话框
    End With
    If OpenFileDlg.FileName = "" Then
王亚彬个人资料      Exit Sub                '若未选中文件则退出本过程陈乔恩男朋友
    Else                        '若选中文件则设置提示文字并启动MCI设备
      TitleWnd.Caption = "选中一个音乐文件[请点击播放按钮播放音乐]"
全程都在做的动漫      FileNameWnd.Caption = OpenFileDlg.FileName '显示音乐文件路径名
      PlayMP3 MP3Player, OpenFileDlg.FileName '启动MCI设备播放音乐
      MP3Player.Command = "stop" '通过stop、prev两命令使面板上的play按钮
      MP3Player.Command = "prev" '有效等待用户通过鼠标单击方式发出播放命令
    End If
 
End Sub
Private Sub Form_Load()
'功能:载入面板初始设置
    With Form1                '设置面板标题及边框样式
      .Caption = "MP3播放实例[Written by Minipuss]"
      .BorderStyle = 1
    End With
    With TitleWnd            '设置提示窗口标题及前景(GREEN)
      .Caption = "目前无音乐文件被选中[请通过菜单进行选择]"
      .ForeColor = RGB(0, 255, 0)
    End With
    With FileNameWnd          '设置路径名窗口标题及前景(GREEN)
      .Caption = ""
      .ForeColor = RGB(0, 255, 0)
    End With
    '调用写ini文件的函数在C:\windows\system.ini的[MCI]中添加
    'mp3audio=mciqtz.drv使得系统MCI设备可MP3格式文件进行解码
    '从而播放该格式音乐文件
    WritePrivateProfileString "MCI",
      "mp3audio", "mciqtz.drv", "C:\windows\system.ini"
    boPause = False          '初始化boPause=False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'功能:Aplication结束前善后处理
    With MP3Player            'Aplication结束时停止播放音乐并关闭MCI设备
      .Command = "stop"
      .Command = "close"
    End With
End Sub
郁可唯个人资料Private Sub MP3Player_PauseClick(Cancel As Integer)
'功能:暂停按钮点击事件处理
    boPause = boPause Xor True 'boPause异或1
    If boPause = True Then  '第一次点击暂停按钮时暂停播放音乐
      MP3Player.Command = "stop"
    Else                    '第二次点击暂停按钮时从中止处继续播放音乐
      MP3Player.Command = "sound"
    End If
End Sub
Private Sub MP3Player_PlayClick(Cancel As Integer)
'功能:播放按钮点击事件处理
    MP3Player.Command = "sound" '点击播放按钮时从头播放音乐
End Sub
Private Sub MP3Player_PlayCompleted(Errorcode As Long)
'功能:音乐播放完毕事件处理
    MP3Player.Command="prev" '音乐播放完毕后回到播放始点使播放按钮有效
End Sub
Private Sub MP3Player_StopClick(Cancel As Integer)
'功能:停止按钮点击事件处理
    With MP3Player    '停止播放音乐并回到播放始点使播放按钮有效
      .Command = "stop"
      .Command = "prev"
    End With
End Sub


  2.模块中的代码:


Option Explicit
Public Sub PlayMP3(TheObject As Object, ByVal FileName As String)
'功能:开启一个MCI设备,播放音乐
'TheObject为对象名,这里须为MMControl对象
seanopry'FileName为音乐文件路径名
    With TheObject
      .Command = "close"        '预处理,关闭曾经开启的MCI设备
      .DeviceType = "mp3audio"  '指定多媒体设备类型为mp3audio
      .FileName = FileName      '指定要播放的音乐文件路径名
      .Command = "open"        '开启一个MCI设备
      .Command = "play"        '发送命令播放音乐
    End With
End Sub


  关于MMControl控件的详细使用方法请参考MSDN,本程序调试环境:Win98SE,Visual Basic 6.0企业版。
(完)


【加入VIP会员】【我要投稿】【关闭本页】
添加一个 WindowsMediaPlayer,一个CommonDialog,一个list ,一个command