当前位置:编程学习 > VB >>

我做的播放器为什么要一直动主音量里面的波形才能听到声音?

如题:我做的播放器不知道为什么要一直动主音量里面的波形才能听到声音?歌是一直在放的,但是就是听不到声音,一定要一直动那个主音量里面的波形才能听到。。。。
我是新手,啥都不会,请大家帮帮忙好吗?如果需要查看源程序才能知道的话,加QQ:150972046谢谢~我今晚就要用到了,请大家帮帮忙哦~ --------------------编程问答-------------------- 让别人猜谜? --------------------编程问答-------------------- 程序在此,请大家帮忙看看好吗?
还有我不会不知道怎么匹配那个歌词和MP3的文件名
Private Sub cmdadd_Click() '添加按钮
    '功能在于把列表中的音乐文件放入Mp3的播放列表中
    Dim i As Integer
    Call mp3_Click
    sound_count = 0                     'Mp3播放列表中的文件个数,初始为0
    For i = 0 To Lstwavefilename.ListCount - 1
        If Lstwavefilename.Selected(i) = True Then
           If s_first = False And sound_count = 0 Then
              sound_count = 0
              s_first = True
           Else

   sound_count = sound_count + 1
           End If
           ReDim Preserve temp_sound(sound_count) As iSound
           temp_sound(sound_count).sFileLoad = Lstwavefilename.List(i)
        End If
    Next
    
    money.Tag = STR(sound_count)
    File_Save = False
    
End Sub

Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu qq
End If
End Sub
Private Sub help_Click()
Form1.Show 1
End Sub
Private Sub mp3_Click()             '打开按钮
    '添加文件到列表中
   Dim w_file_name As String
   Dim pStr As String
   Dim aStr As String
   Dim space_place As Integer           '空格
   Dim file_load As String              '用于标识选取的一个文件
  
   C.Flags = cdlOFNAllowMultiselect       '可选多个文件
   C.Filter = "mp3 file(*.mp3)|*.mp3|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;*.mpg|All File(*.*)|*.*"           '过滤器
   C.ShowOpen
   w_file_name = C.FileName
   
   aStr = w_file_name
       
   space_place = InStr(aStr, " ")
   
   If space_place = 0 Then              '只选了一个文件
      pStr = aStr
      Lstwavefilename.AddItem pStr       'a_index

 Else
   '如果选取多个文件,比如选取了C:\Music下的a.mp3、b.mp3、c.mp3三个文件,则获得的字符
'串为"C:\Music\ a.mp3 b.mp3 c.mp3",目录路径与文件名之间有个空格,文件名之间也有空格
      file_load = Left(aStr, space_place - 1)       '取文件所在文件夹的路径
      aStr = Right(aStr, Len(aStr) - space_place)
        '选取的文件
   
   Do While (aStr <> "")                    '反复从aStr中提取文件名
   
       space_place = InStr(aStr, " ")
 If space_place = 0 Then                '最后一个文件名
          pStr = aStr
          aStr = ""
         ' Lstwavefilename.AddItem file_load & "\" & pStr ', a_index

       Else                             '反复取文件名
          pStr = Left(aStr, space_place - 1)
          aStr = Right(aStr, Len(aStr) - space_place)
         
          Lstwavefilename.AddItem file_load & "\" & pStr ', a_index     ' 添加到列表
           End If
       w_file_name = file_load & "\" & pStr
    Loop
  End If
  wave_file_name = w_file_name
'最后一个文件放入wave_file_name中,以供mp3控件播放

End Sub

Private Sub moneystop_Click()                '暂停按钮
   Mp3Play1.Pause
   
   If Timer.Enabled = False Then
      Timer.Enabled = True
      Command1.Caption = "||"
   Else
       Timer.Enabled = False
       Command1.Caption = "■"
   End If
End Sub
Private Sub begin_Click()             '播放按钮
   Dim inputfile As String                          '要播放的文件名
   Dim err
   Dim ret
 
  
   Dim iLine As String
   Dim iSumL As String
   Open "I:\多媒体\作业\money\素材\王光良-第一次.txt" For Input As #1
   While Not EOF(1)
      Line Input #1, iLine
      iSumL = iSumL + iLine & vbNewLine
   Wend
   Text1.Text = iSumL


  Text1.Top = Picture1.ScaleHeight
   Text1.Visible = True

   inputfile = wave_file_name '播放的是上次打开的文件
   

   ret = Mp3Play1.Authorize("LightBringer", "1441658209")
   
   Mp3Play1.Stop                                '先停止
   
   ret = Mp3Play1.open(inputfile, "")                   '打开音乐文件
   
   err = Mp3Play1.Play                          '播放
 money.Caption = "mymp3play-----" & wave_file_name  '设置窗口标题
    
   Sdplaytime.Value = 0                             '设置slider的值
  
   Sdplaytime.Max = Mp3Play1.GetWaveLengthSecs      '设置slider的最大值
   t.Text = Mp3Play1.GetWaveLengthSecs
  
   sdleft.Value = Mp3Play1.GetVolumeLeft                '显示左声道的音量
   sdright.Value = Mp3Play1.GetVolumeRight          '显示右声道的音量
 err = Lstwavefilename.ListIndex
   Timer.Enabled = True                             '开始计时,更新slider和TxtPT的值

End Sub
Private Sub delect_Click()                       '删除按钮
   Dim i As Integer
   Dim SELECTCOUNT As Integer
   
   SELECTCOUNT = Lstwavefilename.ListCount
   
   For i = 0 To SELECTCOUNT - 1
     If i = SELECTCOUNT Then                        '如果已经全删了
       Exit For
     End If
   If Lstwavefilename.Selected(i) = True Then            '删除所选文件
       Lstwavefilename.RemoveItem i
       i = 0
     End If
     
     SELECTCOUNT = Lstwavefilename.ListCount
   
   Next
End Sub


Private Sub time_Click()                      '设置播放开始时间
   Dim err
    
   Mp3Play1.Stop                                '先停止播放
   err = Mp3Play1.open(wave_file_name, "")          '打开文件
   
  t.Text = Mp3Play1.GetWaveLengthSecs
  
   Sdplaytime.Value = CInt(TxtPt.Text)              '设置slider的值

 err = Mp3Play1.PlayFromToS(TxtPt.Text, t.Text)
   
   Sdplaytime.Max = Mp3Play1.GetWaveLengthSecs      '设置slider的最大值
   
   sdleft.Value = Mp3Play1.GetVolumeLeft                '显示左声道的音量
   sdright.Value = Mp3Play1.GetVolumeRight          '显示右声道的音量
      
   Timer.Enabled = True                             '开始更新slider 和TxtPT
   
   Do While Sdplaytime.Value > Sdplaytime.Max
      Timer.Enabled = False
   Loop
   
End Sub
Private Sub back_Click()                     '停止按钮
   Mp3Play1.Stop                                '停止播放
   Timer.Enabled = False                            '停止timer控件
End Sub

Private Sub Form_Load()                         '窗体载入时的事件
   Dim file_nUmber As Integer
   Dim mp3_file_name As String          'mp3列表文件
   Dim i As Integer
   Dim LST_INDEX As Integer
   Dim F_ENTER As Boolean
   Dim ret
 On Error GoTo A0:
   
 
    ret = Mp3Play1.Authorize("LightBringer", "1441658209")
   
   file_nUmber = FreeFile
   
   mp3_file_name = App.Path & "\ini.kkk"        '打开目录下面的mp3列表文件
   
   Open mp3_file_name For Binary As file_nUmber
   
   Get #file_nUmber, , Lstfilename          '获取音乐文件的顺序和文件名
   
   F_ENTER = False
   
   For i = 0 To Lstfilename.ID              '把mp3列表显示到list控件中
   If Lstfilename.STR(i) <> "" Then
          
          If F_ENTER = False And LST_INDEX = 0 Then
              F_ENTER = True
              LST_INDEX = 0
          Else
             LST_INDEX = LST_INDEX + 1
          End If
          Lstwavefilename.AddItem Lstfilename.STR(i)
      End If
   Next
   
   Close (file_nUmber)
A0:
   
   Close (file_nUmber)
   
End Sub

Private Sub Form_Unload(Cancel As Integer)          '关闭窗体事件
   Dim file_nUmber As Integer
   Dim mp3_file_name As String
   Dim i As Integer
   '所完成的功能是把列表里的内容以文件形式存储到目录下的ini.kkk文件里
   For i = 0 To Lstwavefilename.ListCount
      
      ReDim Preserve Lstfilename.STR(i) As String
      
      Lstfilename.STR(i) = Lstwavefilename.List(i)
  Next
   Lstfilename.ID = i
   
   file_nUmber = FreeFile
   
   mp3_file_name = App.Path & "\ini.kkk"
   
   Open mp3_file_name For Binary As file_nUmber
   
   Put #file_nUmber, , Lstfilename
   
   Close (file_nUmber)
    
End Sub
Private Sub Lstwavefilename_Click()          '列表点击(单击)事件
   
   current_index = Lstwavefilename.ListIndex     '点击的是哪一个项
   wave_file_name = Lstwavefilename.List(Lstwavefilename.ListIndex)   '获取文件名及地址
End Sub

Private Sub Lstwavefilename_DblClick()           '列表点击(双击)事件
   current_index = Lstwavefilename.ListIndex
   wave_file_name = Lstwavefilename.List(Lstwavefilename.ListIndex)
       
   Call begin_Click                   '播放选中的音乐
   
End Sub


Private Sub Sdplaytime_Change()             '播放时间
    
    TxtPt.Text = Sdplaytime.Value
   
End Sub

Private Sub Sdplaytime_Click()              '点击
    Dim err
    Dim endtime
    
   Mp3Play1.Stop                        '先停止播放
   err = Mp3Play1.open(wave_file_name, "")      '再重新打开
endtime = Mp3Play1.GetWaveLengthSecs    '获取音乐的长度(时间)
   err = Mp3Play1.PlayFromToS(Sdplaytime.Value, endtime) '根据slider上的值重新定位播放
   
   'Sdplaytime.Value = 0
   Sdplaytime.Max = Mp3Play1.GetWaveLengthSecs
   
   sdleft.Value = Mp3Play1.GetVolumeLeft        '左声道
   sdright.Value = Mp3Play1.GetVolumeRight  '右声道
      
   Timer.Enabled = True
'下面的这个while循环的功能是播放到结尾后,停止播放
   'Do While Sdplaytime.Value > Sdplaytime.Max
    'Timer.Enabled = False
     'Loop
   
End Sub

Private Sub Sdright_Change()                '右声道的值变化
    Dim err
    
    err = Mp3Play1.SetVolume(sdleft.Value, sdright.Value)
End Sub
Private Sub Sdright_Click()                     '点击右声道
    Dim err
    
    err = Mp3Play1.SetVolume(sdleft.Value, sdright.Value)
End Sub

Private Sub timer_Timer()                   '时间控件
     Dim iStep As Integer
iStep = 20
Text1.Top = Text1.Top - iStep


      sdleft.Value = Mp3Play1.GetVolumeLeft '左声道值
      sdright.Value = Mp3Play1.GetVolumeRight   '右声道值
      Sdplaytime.Value = Sdplaytime.Value + 1   '更新slider值
      
 Do While Sdplaytime.Value >= Int(Sdplaytime.Max)
         If Lstwavefilename.List(Lstwavefilename.ListIndex + 1) = "" Then
                '如果播放到最后一首,则从头开始播放
            wave_file_name = Lstwavefilename.List(0)
      
            Lstwavefilename.Selected(Lstwavefilename.ListIndex) = False
 
            Lstwavefilename.Selected(0) = True
         Else                           '否则播放列表的下一首
            wave_file_name = Lstwavefilename.List(Lstwavefilename.ListIndex + 1)
  Lstwavefilename.Selected(Lstwavefilename.ListIndex) = False

            Lstwavefilename.Selected(Lstwavefilename.ListIndex + 1) = True
         End If
   
      Call begin_Click                    '播放
 
   Loop
   
   
End Sub

--------------------编程问答-------------------- 这么长,什么要一直动主音量里面的波形才能听到声音?不明白什么意思,贴个图看看 --------------------编程问答-------------------- 电脑桌面右下角那个声音喇叭,双击之后出来那个主音量的波形那一条进度条,要一直调那个値才可以听到声音~搞了很久都不知道是什么问题~ --------------------编程问答-------------------- 关注。。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 你既要用 sdleft.Value = Mp3Play1.GetVolumeLeft 显示声道的音量,
又用 Mp3Play1.SetVolume(sdleft.Value, sdright.Value) 设置音量。
两者相互之间循环影响。
补充:VB ,  多媒体
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,