主要实现了两大功能,软件已经发布,可以点这里找到.
软件介绍:该软件是一款用来批量混剪视频的工具,傻瓜式操作一键生成上百部二次原创作品,通过AI智能分析视频中的场景分拆多个视频方便二次创作,非常符合创作带货视频、短剧解说等作品。
1.视频分解.
通过场景自动分拆视频,达到二次原创效果
2.随机分解.
按照随机分拆多个片段.
3.一键合成
目前已经实现可以随机抽取分解的视频素材进行组合.还可以设置每个素材的使用片段最大数为多少.非常的方便.
如图:我可以把分解的视频存放不同文件夹.然后随机组合片段数.
第一种:分解素材.
第二大功能:自动批量混剪.
以下核心代码:
import win.ui;
import dook;
/*DSG{{*/
mainForm = win.form(text=&34;都客混剪工厂&34;;right=959;bottom=619;border=&34;none&34;)
mainForm.add(
bk={cls=&34;bkplus&34;;left=0;top=0;right=960;bottom=92;background=&34;\res\images\bg.png&34;;dl=1;dr=1;dt=1;z=1};
bkplus={cls=&34;bkplus&34;;text=&34;都客混剪工厂&34;;left=16;top=16;right=160;bottom=64;color=15793151;dl=1;dt=1;font=LOGFONT(h=-20);z=4};
bkplus2={cls=&34;bkplus&34;;text=&34;Ver 1.0旗舰版&34;;left=24;top=48;right=168;bottom=96;color=15793151;dl=1;dt=1;z=5};
btnNav1={cls=&34;plus&34;;text=&34;分解视频&34;;left=184;top=8;right=330;bottom=89;bkBottom=3;bkLeft=7;bkRight=8;bkTop=2;color=16777215;dl=1;dt=1;foreground=&34;\res\images\icon_2.png&34;;iconColor=128;notify=1;paddingBottom=7;paddingLeft=5;paddingRight=5;paddingTop=5;valign=&34;bottom&34;;x=0.5;y=0.2;z=6};
btnNav2={cls=&34;plus&34;;text=&34;一键合成&34;;left=336;top=8;right=488;bottom=89;background=&34;\res\images\icon_bg.jpg&34;;bkBottom=3;bkLeft=7;bkRight=8;bkTop=2;color=16777215;dl=1;dt=1;foreground=&34;\res\images\icon_3.png&34;;notify=1;paddingBottom=7;paddingLeft=5;paddingRight=5;paddingTop=5;valign=&34;bottom&34;;x=0.5;y=0.2;z=2};
custom={cls=&34;custom&34;;left=0;top=96;right=960;bottom=616;db=1;dl=1;dr=1;dt=1;z=3};
lblEmail={cls=&34;static&34;;left=744;top=48;right=952;bottom=72;color=15793151;transparent=1;z=7}
)
/*}}*/
// 添加自定义的标题栏、窗口边框、阴影等
import win.ui.simpleWindow;
win.ui.simpleWindow(mainForm );
// 创建高级选项卡
import win.ui.tabs;
// 至少要添加2个创建好的选项卡作为设计模板
var tbs = win.ui.tabs(
mainForm.btnNav1,
mainForm.btnNav2,
mainForm.btnNav3,
);
// 指定选项卡的外观样式
tbs.skin( {
background = {
hover = &34;/res/images/main-nav-bg-hover.png&34;;
active = &34;/res/images/main-nav-bg-active.png&34;;
default = &34;/res/images/main-nav-bg.png&34;;
}
checked = { // 指定选中状态的样式
background = {
default = &34;/res/images/main-nav-bg-active.png&34;;
}
}
} )
// 加载窗口,绑定第一个选项卡
var tb1=tbs.loadForm(1,&34;\UI\SplitVideo.aardio&34; );
// 加载窗口, 绑定第二个选项卡
var tb2=tbs.loadForm(2,&34;\UI\makeFrm.aardio&34; )
//更新检测程序----------------------------------------------------
win.setTimeout(
function(){
//检测文件是否存在。
if(io.exist(&34;updater.exe&34;))
{
process.executeInvoke(&34;updater.exe&34;);
}
else
{
import thread.dlManager;
var dlmgr = thread.dlManager(5/*最多允许五个线程同时下载*/);
dlmgr.push(
id =1 ;
url = &34;http://www.dukey.cn/updatezip/dkcut/updater.exe&34;;
savedir = &34;./&34;;
);
dlmgr.push(
id =2 ;
url = &34;http://www.dukey.cn/updatezip/dkcut/update.xml&34;;
savedir = &34;./&34;;
)
}
},1000
)
//-----------------------------------------------------------------------------------
// 动态添加更多选项卡,可以直接用第2个参数同时加载并绑定一个窗体
/*
tbs.add({
text=&34;关于软件&34;;
foreground=&34;\res\images\rss.png&34;;
hasCloseButton = true; // 允许关闭
},&34;\forms\page3.aardio&34; )
*/
// 必须指定默认选中项
tbs.selIndex = 1;
// 这个函数会查询并获取选项卡绑定的子窗口,如果子窗口没有加载将会立即加载
//tbs.query(text = &34;关于软件&34;).openUrl(&34;http://bbs.aardio.com&34;)
// 单击选项卡触发此事件,strip为被单击的选项卡
tbs.oncommand = function(strip,id,event){
}
// 切换选项卡会触发此事件,strip为选中的选项卡
tbs.onSelchange = function(idx,strip,form)
{
}
CheckPlugins=function(){
//下载插件
try{
import zlib.httpFile;
//检查是否有ffmpeg
var path =fsys.getCurDir()+&34;\ffmpeg.exe&34;;
if(!..io.exist(path))
{
..inet.refreshOption();
var url;
var bootdir=fsys.getCurDir();
url = &34;https://registry.npmmirror.com/@ffmpeg-installer/win32-ia32/download/@ffmpeg-installer/win32-ia32-4.1.0.tgz&34;;
if( !..zlib.httpFile.download(url,&34;首次启动正在下载 ffmpeg插件,请稍候...&34;,bootdir+&34;\res\down&34;,bootdir+&34;\&34;)){
return;
}
else{
fsys.copy(bootdir+&34;\package\ffmpeg.exe&34;,bootdir+&34;\ffmpeg.exe&34;);
}
}
}
catch(ex)
{}
}
CheckPlugins();
thread.set(&34;CheckPlugins&34;,CheckPlugins());
mainForm.onClose = function(hwnd,message,wParam,lParam)
{
process.kill(&34;ffmpeg.exe&34;);
win.quitMessage();
}
thread.set(&34;init&34;,init());
mainForm.show()
win.loopMessage();