aardio 文档

aardio 范例: 万能视频播放器 - 调用 libvlc

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="万能视频播放器 - 调用 libvlc";right=856;bottom=483;bgcolor=16515070;)
winform.add(
btnFullScreen={cls="plus";text='\uF047';left=811;top=453;right=852;bottom=483;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};
lbTime={cls="plus";text="00:00:00";left=602;top=455;right=655;bottom=475;db=1;dr=1;z=7};
plus={cls="plus";text='\uF027';left=666;top=457;right=691;bottom=480;color=1938422;db=1;dr=1;font=LOGFONT(h=-19;name='FontAwesome');repeat="scale";z=2};
trackbar={cls="plus";left=49;top=460;right=595;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=461;right=812;bottom=473;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 libvlc; 

//初始化vlc引擎,可用参数:https://wiki.videolan.org/VLC_command-line_help/ 
var vlcEngine = libvlc(
    "--subsdec-encoding=GB18030",//字幕默认使用中文编码
    _WINXP ? "--freetype-font=宋体" : "--freetype-font=DFKai-SB",//WIN7可用字体:Arial Unicode MS,DFKai-SB, Microsoft JhengHei, MingLiU, MingLiU-ExtB, MingLiU_HKSCS, MingLiU_HKSCS-ExtB, PMingLiU, PMingLiU-ExtB
    "-I","dummy","--ignore-config"//,"--extraintf=logger" ,"--verbose=2" 
    )

//创建播放器
var vlcPlayer = vlcEngine.mediaPlayer( winform.video ); 
winform.video.orphanWindow();
vlcPlayer.setKeyInput(true);

var eventManager = vlcPlayer.getEventManager()
eventManager.mediaPlayerTimeChanged = function(event){ 
    if( !winform.trackbar.state.active ){
        winform.trackbar.progressPos = event.newTime;
    }   
} 

eventManager.mediaPlayerLengthChanged = function(event){ 
    winform.btnPlay.disabledText = null;
    winform.trackbar.setTrackbarRange(1,vlcPlayer.length);
    winform.trackbar.progressPos = 0;
    //vlcPlayer.spuLoad("字幕路径");
}  

import fsys.dlg;
winform.btnPlay.oncommand = function(id,event){  

    if( winform.btnPlay.checked ){ 
        if(!vlcPlayer.isStopped() && !vlcPlayer.isPaused() &&  !vlcPlayer.isEnded() ){
            //vlcPlayer.loadMediaFile(fsys.dlg.open(,"请指定视频文件")); 
            vlcPlayer.loadMedia("http://download.aardio.com/demo/video.aardio"); 
            winform.btnPlay.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
        }

        vlcPlayer.play();   
    }
    else {
        vlcPlayer.pause(); 
    } 
} 

winform.volume.setTrackbarRange(1,100);
winform.trackbar.onMouseUp = function(){
    vlcPlayer.time = winform.trackbar.progressPos; 
} 

winform.trackbar.onPosChanged = function( pos,thumbTrack ){
    winform.lbTime.text = time(pos/1000,"!%H:%M:%S");
}

winform.volume.setTrackbarRange(1,100);
winform.volume.progressPos = 100;
winform.volume.onMouseUp = function(){
    //不要写在 onPosChanged 事件里,过于密集调用这接口有可能会卡
    vlcPlayer.volume = winform.volume.progressPos ;
}

winform.btnFullScreen.oncommand = function(id,event){
    winform.video.fullscreen(true);
} 

// 关闭窗体时退出播放器
winform.onClose = function(hwnd,message,wParam,lParam){
    vlcPlayer.release()
}

//按回车、空格暂停
winform.isDialogMessage = function(hwnd,msg){ 
    if(  msg.wParam == 0xD/*_VK_RETURN*/ || msg.wParam == 0x20/*_VK_SPACE*/ ){
        msg.hwnd = winform.btnPlay.hwnd;
        return;
    }
    return win.isDialogMessage(hwnd,msg);
}

//全屏快捷键
winform.video.translateAccelerator = function(msg){ 
     if(  msg.wParam == 0xD/*_VK_RETURN*/ || msg.wParam == 0x20/*_VK_SPACE*/ ){
          msg.hwnd = winform.btnPlay.hwnd;
     }
     if(  msg.wParam == 0x1B/*_VK_ESC*/ ){
         winform.video.fullscreen(false); 
     }
}

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.btnPlay.skin({
    color={
        active=0xFF00FF00;
        default=0xFFF6931D;
        disabled=0xFF6D6D6D;
        hover=0xFFFF0000
    }
    checked={
        text = '\uF04D'
    }
})

winform.show(); 
win.loopMessage();
Markdown 格式