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 格式