C#winform如何判断Media Player是否播放完毕?
4个回答
展开全部
window media player 控件里有一个属性,可以判断是否在 播放 是否停止 是否暂停,通过这三种状态可以判断是否播放完毕,具体说明如下:
属性/方法名: 说明:
[基本属性]
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; 上一曲
属性/方法名: 说明:
[基本属性]
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; 上一曲
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键看你的Media Player是用什么来实现的。
如果是使用Microsoft.DirectX中的Video类来实现,该类有一个事件Ending,订阅该事件即可。
Video MyVideo;
// 打开一个新的Video文件
MyVideo = new Video(path);
MyVideo.Ending += new EventHandler(MyVideo_Ending);
如果是使用Microsoft.DirectX中的Video类来实现,该类有一个事件Ending,订阅该事件即可。
Video MyVideo;
// 打开一个新的Video文件
MyVideo = new Video(path);
MyVideo.Ending += new EventHandler(MyVideo_Ending);
追问
我是通过工具箱新建控件项拖拽进窗体的
追答
你看看设计代码中,该播放器的具体类型。应该是Video
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mediaplayer控件有个播放状态属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用PlayStateChange事件,EndOfStream事件在新的MediaPlayer版本上已经被废弃了。
但是扯蛋的PlayStateChange会触发一堆的事件,所以需要过滤,凡是_WMPOCXEvents_PlayStateChangeEvent.newState不等于8和10的事件,都过滤掉。
这样遇到8的事件后,表示播放结束了,然后代码处理要播放的下一首歌的URL,然后调用Ctlcontrols.play()方法,然后media play会重新连接和缓冲媒体,但它不会自动播放,需要等媒体连接并完成缓冲,然后再次触发PlayStateChange事件,这时候newState会变成10,这个状态值意思是“媒体准备就绪”,这时候再调用一次play()方法就ok了。
但是扯蛋的PlayStateChange会触发一堆的事件,所以需要过滤,凡是_WMPOCXEvents_PlayStateChangeEvent.newState不等于8和10的事件,都过滤掉。
这样遇到8的事件后,表示播放结束了,然后代码处理要播放的下一首歌的URL,然后调用Ctlcontrols.play()方法,然后media play会重新连接和缓冲媒体,但它不会自动播放,需要等媒体连接并完成缓冲,然后再次触发PlayStateChange事件,这时候newState会变成10,这个状态值意思是“媒体准备就绪”,这时候再调用一次play()方法就ok了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询