主要实现了两大功能,软件已经发布,可以点这里找到.

软件介绍:该软件是一款用来批量混剪视频的工具,傻瓜式操作一键生成上百部二次原创作品,通过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();