我想播放一个MP3文件中的某一段(如第10秒到第50秒这段),请尽量祥细些。

解决方案 »

  1.   

    Option Explicit
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    Dim Res As Integer, Ret As String * 1024Private Sub Form_Load()
    Dim A as Integer, path As String, APPPATH As String
    '获得当前路径8.3格式的短路径名
    If Right(App.path, 1) = "\" Then path = App.path Else path = App.path & "\"
    APPPATH = String$(165, 0)
    A = GetShortPathName(path, APPPATH, 164)
    APPPATH = Left(APPPATH, InStr(APPPATH, Chr(0)) - 1)
    End Sub
    Private Sub Form_Click()
    Dim Res As Integer, Ret As String * 1024
    Res = mciSendString("play " & APPPATH & "Shili.wav from 3000 to 8000", Ret, 1024, 0)
    'Res = mciSendString("play " & APPPATH & "Shili.wav", Ret, 1024, 0)'整首播放
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Res = mciSendString("close all", Ret, 1024, 0)
    End
    End Sub   播放语名中的“from”(从)和“to”(到)均以毫秒为单位,可以用变量代码。
      

  2.   

    Option Explicit
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
    Dim Res As Integer, Ret As String * 1024
    Dim path As String
    Dim APPPATH As StringPrivate Sub Command1_Click()
    Dim Res As Integer, Ret As String * 1024
    Res = mciSendString("play " & APPPATH & "music.mp3 from 3000 to 8000", Ret, 1024, 0)
    'Res = mciSendString("play " & APPPATH & "music.mp3", Ret, 1024, 0)'整首播放End SubPrivate Sub Form_Load()
    Dim A As Integer
    '获得当前路径8.3格式的短路径名
    path = "E:\music\"
    APPPATH = String$(165, 0)
    A = GetShortPathName(path, APPPATH, 164)
    APPPATH = Left(APPPATH, InStr(APPPATH, Chr(0)) - 1)
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Res = mciSendString("close all", Ret, 1024, 0)
    End
    End Sub
      

  3.   

    另外,我也刚用控件作了一段。
    1、注册Mp3play.ocx控件
    2、播放
       Private Sub play_Click()
           a = Mp3Play.Open("C:\Word.MP3", ″″)   
           a = Mp3Play.Authorize("ufo2000", "1208686909")   '注册
        
           start = Timer  '系统时间(秒)
           Mp3Play.play
           ''返回当前播放的帧位置,声音开始为秒
           Mp3Play.Seek (Int(声音开始 * 1000 / Me.Mp3Play.MsPerFrame))  
       End Sub
    3、检查时间是否到。如果时间到则停止播放。
       Private Sub Form_Timer()
           If Timer - start >= 声音结束 - 声音开始 Then
               Mp3Play.Close   '关闭
           End If
       End Sub