MediaPlayer播放文件的总时间一直困扰好久了,搜索了好久也尝试了好久,最终才找到了适合我的版本的获取播放总时间的方法。
看msdn文档duration属性就可以获取播放的总时间,但是,运行语句axWindowsMediaPlayer1.currentMedia.duration后得到的却是0(“00:00”),当时极度的困惑,想想,应该是播放后还无法及时获取当前文件的duration,但是如果要写一个延时去控制那也有些不值了。呵呵,终于皇天不负有心人啊,只要mp.newMedia(URL).duration;就可以了。这样获得的是以毫秒为单位的double型的数值,下面是我所获得的当前播放文件总播放时间,以毫秒为单位int型数值。
例如:
int plt = (int)axWindowsMediaPlayer1.newMedia(FileUrl ).duration;
既然谈到了播放总时间问题,那就顺便把获取当前播放位置也说说吧!O(∩_∩)O哈哈~
axWindowsMediaPlayer1.controls.currentPosition://得到值类型double
axWindowsMediaPlayer1.controls.currentPositionString://得到值类型string,如“00:11”
哈哈,下面是搜到了windows 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; | 上一曲 |
[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 |