如题:我做的播放器不知道为什么要一直动主音量里面的波形才能听到声音?歌是一直在放的,但是就是听不到声音,一定要一直动那个主音量里面的波形才能听到。
我是新手,啥都不会,请大家帮帮忙好吗?如果需要查看源程序才能知道的话,加QQ:150972046谢谢~我今晚就要用到了,请大家帮帮忙哦~
我是新手,啥都不会,请大家帮帮忙好吗?如果需要查看源程序才能知道的话,加QQ:150972046谢谢~我今晚就要用到了,请大家帮帮忙哦~
解决方案 »
- [求助]如何用VB封装连接字符串
- 对界面上N个输入框进行特殊字符的屏蔽,有什么快速有效的办法没?
- 在VB中执行sql语句时出现一些错误
- 急!急!急!msChart画饼形图,能否直接在图上显示各个成分所占比率?
- 我刚学习vb,我想问一下,怎么判断一个string字符串是否是整数?
- 一个关于Crystalreport的问题,请指教!
- 怎样实现,运行时用鼠标拖动修改用户控件的大小,并在拖动时显示轮廓线
- 怎么写能用系统当前的日期减输入的日期,得到两个日期之间的天数?
- 求助!有关右键的问题!
- 各位老师如何把JPG图象WINSOCK群发给客户(多台,同时)的机器?
- 重大问题,生成exe就不能运行
- 小弟新手 vb 连接access问题
还有我不会不知道怎么匹配那个歌词和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 SubSub 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate 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
又用 Mp3Play1.SetVolume(sdleft.Value, sdright.Value) 设置音量。
两者相互之间循环影响。