播放器连续播放列表文件时错误
我用windowsmediaplay些写了一个mp3播放器,是用windowsMediaplay10版本开发的,其中:
播放文件的代码:
Private Sub MenuSubFile_Click()
'打开文件并播放,同时清除播放列表里的文件名并在列表里加入打开的文件
CommonDialog1.Filter = "mp3音乐文件|*.mp3"
CommonDialog1.ShowOpen
mp3FileName = CommonDialog1.FileName
MediaPlayer.settings.autoStart = True
MediaPlayer.URL = mp3FileName
List1.Clear
List1.AddItem mp3FileName
End Sub
往列表里加入文件的代码:
Private Sub MenuSubAdd_Click()
'在播放列表里添加文件
CommonDialog1.Filter = "mp3音乐文件|*.mp3"
CommonDialog1.ShowOpen
mp3FileName = CommonDialog1.FileName
List1.AddItem mp3FileName
End Sub
连续播放列表文件的代码:
Private Sub MediaPlayer_PlayStateChange(ByVal NewState As Long)
'按播放列表的顺序自动播放
MediaPlayer.settings.autoStart = True
If MediaPlayer.playState = wmppsStopped Then
If List1.ListIndex < List1.ListCount - 1 Then
List1.ListIndex = List1.ListIndex + 1
MediaPlayer.URL = List1.Text
Else
List1.ListIndex = 0
MediaPlayer.URL = List1.Text
End If
End If
End Sub
在播放时有一个错误,连续播放时总是会跳过一个文件,就是播放完1号文件后,播放3号文件,播放完3号后,播放5号文件,……
而且不是自动播放,必须按一下播放按钮,我明明是设置了自动播放啊,不知如何连续自动播放,请指教?谢谢高手
另:不知windowsMediaplay10版本的详细属性,方法,事件是什么
[解决办法]
wmp.dll控件常用属性 wmp.dll控件常用属性
本人在网上收集到windows media player 控件的一些属性,望对有需要的朋友有所帮助。(在计算机中装了wmp9以上,就会有wmp.dll控件,属性如下所示)
属性/方法名: 说明:
[基本属性]
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单
fullScreen:boolean; 是否全屏显示
[controls] wmp.controls //播放器基本控制
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
[settings] wmp.settings //播放器基本设置
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数
[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.duration:double; 媒体总长度
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性
currentPlaylist.count:integer; 当前播放列表所包含媒体数
currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia
//2...
==========WindowsMediaPlayer的常用属性和方法===========
[基本属性]
URL:string 可以指定媒体位置
enableContextMenu:Boolean 显示/不显示播放位置的右键菜单
fullScreen:boolean 全屏显示
stretchToFit:boolean 非全屏状态时是否伸展到最佳大小
uMode:string 播放器的模式,full:有下面的控制条; none:只有播放部份没有控制条
playState:integer 当前控件状态,下面是三种基本状态:
3:正在播放
2:暂停
1:已停止
状态变化时会触发OnStatusChange事件
[controls]
可通过WindowsMediaPlayer.controls对播放器进行控制并取得相关的一些信息:
controls.play; 播放
controls.stop; 停止
controls.pause; 暂停
controls.currentPosition:Double 当前播放进度
controls.currentPositionString:string 时间格式的字符串 "0:32"
[currentMedia]
可以通过WindowsMediaPlayer.currentMedia取得当前媒体的信息
currentMedia.duration Double 总长度
currentMedia.durationString 时间格式的字符串 "4:34"
[settings]
可以通过WindowsMediaPlayer.settings对播放器进行设置,包括音量和声道等。
settings.volume:integer 音量 (0-100)
settings.balance:integer 声道,通过它应该可以进行立体声、左声道、右声道的控制。
-->
<input type="button" value='换文件' onclick="MediaPlayer.controls.src='d:\xx.mid';">
[解决办法]
用我的代码改了给你用吧
'添加 Command1 Command2 List1 Timer1 CommonDialog1 WindowsMediaPlayer1
'CommonDialog已设置可以复选
Dim i%, jj%, SelFile
Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = False
Command1.Caption = "添加歌曲"
Command2.Caption = "播 放"
End Sub
Private Sub Command1_Click()
On Error GoTo errhandler
With CommonDialog1
.CancelError = True
.InitDir = App.Path
.Filter = "多媒体文件(*.MP3;*.MID;*.WAV)|*.MP3;*.MID;*.WAV"
.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
.ShowOpen
End With
SelFile = Split(CommonDialog1.FileName, Chr(0))
Call AddListSong
errhandler:
If Err > 0 Then Exit Sub
End Sub
Sub AddListSong()
If UBound(SelFile) = 0 Then
List1.AddItem SelFile(0)
Else
For i = 1 To UBound(SelFile)
List1.AddItem SelFile(0) & "\" & SelFile(i)
Next i
End If
If WindowsMediaPlayer1.playState = wmppsUndefined Or WindowsMediaPlayer1.playState = wmppsStopped Then Call Playmusic(0)
End Sub
Private Sub Command2_Click()
If Command2.Caption = "停 止" Then
Command2.Caption = "播 放"
Timer1.Enabled = False
Call Stopmusic
Else
If List1.ListCount > 0 Then
Call Playmusic(0)
End If
End If
End Sub
Private Sub List1_Click()
If List1.ListCount > 0 Then
jj = List1.ListIndex
Call Playmusic(jj)
End If
End Sub
Sub Playmusic(Sno As Integer)
Timer1.Enabled = False
Call Stopmusic
WindowsMediaPlayer1.URL = List1.List(Sno)
List1.RemoveItem Sno
If List1.ListCount <= 0 Then Call AddListSong
Timer1.Enabled = True
Command2.Caption = "停 止"
End Sub
Sub Stopmusic()
If WindowsMediaPlayer1.playState = wmppsPlaying Then WindowsMediaPlayer1.Controls.stop
End Sub
Private Sub Timer1_Timer()
If WindowsMediaPlayer1.playState = wmppsStopped Or WindowsMediaPlayer1.playState = wmppsMediaEnded Then Call Playmusic(0)
End Sub