import fonts.fontAwesome; import win.ui; /*DSG{{*/ var winform = win.form(text="调用 MPV 视频播放器";right=856;bottom=483;bgcolor=16515070;) winform.add( btnFullScreen={cls="plus";text='\uF047';left=811;top=452;right=852;bottom=482;color=1938422;db=1;dr=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;repeat="center";z=4}; btnPlay={cls="plus";text='\uF04B';left=10;top=456;right=42;bottom=479;color=1938422;db=1;dl=1;font=LOGFONT(h=-19;name='FontAwesome');notify=1;repeat="scale";z=5}; btnSubtitles={cls="plus";text='\uF03A';left=639;top=455;right=664;bottom=478;color=1938422;db=1;dr=1;font=LOGFONT(h=-19;name='FontAwesome');repeat="scale";z=8}; lbTime={cls="plus";text="00:00:00";left=579;top=455;right=632;bottom=475;db=1;dr=1;z=7}; plus={cls="plus";text='\uF027';left=666;top=454;right=691;bottom=477;color=1938422;db=1;dr=1;font=LOGFONT(h=-19;name='FontAwesome');repeat="scale";z=2}; trackbar={cls="plus";left=49;top=460;right=576;bottom=472;bgcolor=-2512093;border={radius=-1};color=23807;db=1;dl=1;dr=1;foreRepeat="expand";foreRight=13;forecolor=-14911489;notify=1;paddingBottom=5;paddingTop=5;z=1}; video={cls="custom";left=8;top=6;right=848;bottom=447;bgcolor=0;db=1;dl=1;dr=1;dt=1;z=6}; volume={cls="plus";left=696;top=460;right=812;bottom=472;bgcolor=-2512093;border={radius=-1};color=23807;db=1;dr=1;foreRepeat="expand";foreRight=13;forecolor=-14911489;notify=1;paddingBottom=5;paddingTop=5;z=3} ) /*}}*/ import mpvPlayer; var mplayer = mpvPlayer(winform.video ); //在视频上写字,所有配置参数文档:http://mpv.io/manual/master/#options mplayer.setOption("osd-msg1","MPV播放器是极好的"); //订阅播放进度属性变更事件,所有属性参考文档 http://mpv.io/manual/master/#properties mplayer.observeProperty("time-pos");//播放进度 mplayer.observeProperty("duration");//视频长度 mplayer.observeProperty("track-list");//加载字幕 //属性变更后触发此事件 mplayer.onPropertyChange = function(name,value){ if( name == "time-pos" ){ if( !winform.trackbar.state.active ){ if(value) winform.trackbar.progressPos = value; } } elseif(name == "duration"){ if(value) { winform.trackbar.setTrackbarRange(1,value); winform.btnPlay.disabledText = null; } } elseif(name == "track-list"){ //winform.cbSubtitles.trackList();//获取视频加载的字幕 } } //获取反馈信息 mplayer.requestLogMessages("info"); mplayer.onLogMessage = function(text,prefix,level,levelId){ } //文件播放结束触发此事件 mplayer.onEndFile = function(reason,err){ winform.btnPlay.checked = false; } //启动一个定时器用于分发播放器事件(不然不会触发任何事件) var tmId = winform.setInterval( function(){ event = mplayer.waitEvent(0); if( event.id == 8/*_MPV_EVENT_FILE_LOADED*/){ //winform.cbSubtitles.trackList();//获取视频加载的字幕 winform.text = mplayer.getMediaTitle(); winform.btnPlay.disabledText = null; } },10 ) import fsys.dlg; winform.btnPlay.oncommand = function(id,event){ if( winform.btnPlay.checked ){ if(!mplayer.filename() ){ mplayer.loadFile("http://download.aardio.com/demo/video.aardio"); winform.btnPlay.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'} } mplayer.play(); } else { mplayer.stop(); winform.trackbar.progressPos = 0; } } import win.debounce; var seekDebounce = win.debounce( function(pos){ mplayer.seek( pos ) },50) winform.trackbar.onPosChanged = function( pos,triggeredByUser ){ if(triggeredByUser){ seekDebounce(pos); } winform.lbTime.text = time(pos,"!%H:%M:%S"); } import win.ui.menu; winform.btnSubtitles.oncommand = function( id,event ){ var subCount = 0; var count = mplayer.getTrackCount(); var menu = win.ui.popmenu(winform); for(i=1;count){ if( mplayer.getTrackType(i) == "sub" ){ subCount ++; var id = menu.add(mplayer.getTrackTitle(i),function(){ mplayer.setSubtitle( mplayer.getTrackId(i) ); }) menu.check(id,mplayer.getTrackSelected(i),0); } } if(!subCount){ return winform.msgboxErr("无字幕") } menu.popup(); } winform.volume.setTrackbarRange(1,100) winform.volume.progressPos = mplayer.getVolume(); winform.volume.onPosChanged = function( pos,triggeredByUser ){ if(triggeredByUser){ mplayer.setVolume(winform.volume.progressPos) } } winform.volume.skin({ background={ default=0xFF23ABD9 }; foreground={ default=0xFFFF771C; hover=0xFFFF6600 }; color={ default=0xFFFF5C00; hover=0xFFFF6600 } }) winform.trackbar.setTrackbarRange(1,100); winform.trackbar.skin({ background={ default=0xFF23ABD9 }; foreground={ default=0xFFFF771C; hover=0xFFFF6600 }; color={ default=0xFFFF5C00; hover=0xFFFF6600 } }) winform.btnFullScreen.skin({ color={ active=0xFF00FF00; default=0xFFF6931D; disabled=0xFF6D6D6D; hover=0xFFFF0000 } }) winform.btnSubtitles.skin({ color={ active=0xFF00FF00; default=0xFFF6931D; disabled=0xFF6D6D6D; hover=0xFFFF0000 } }) winform.btnPlay.skin({ color={ active=0xFF00FF00; default=0xFFF6931D; disabled=0xFF6D6D6D; hover=0xFFFF0000 } checked={ text = '\uF04D' } }) winform.btnFullScreen.oncommand = function(id,event){ winform.video.fullscreen(); } winform.show() win.loopMessage();