都客直播录屏,一款开源免费的直播监控录制工具

都客直播录屏,直播监控录屏工具,支持抖音、快手、哔哩哔哩等平台自动批量监控和录制,并且支持自动根据时长分解视频、设置封面、添加画中画等功能,特别适合直播切片,团购带货视频制作。
 

  1. 支持抖音、快手、哔哩哔哩直播监控并录制。
  2. 批量自动监控录制。
  3. 支持设置封面和按时长分割。
  4. 支持画中画功能,可以结合剪映实现各种复杂的效果。

下面是实现的核心源码:

import win.ui;
import dook;
import comm;
import fsys;
import fsys.config;
import inet;
import inet.downBox;
import inet.http;
import console;
import process;
import process.ffmpeg;
import process.popen
import win.taskScheduler;
import fsys.update.simpleMain;
import dookvideoapi;
/*DSG{
  
  {*/
var winform = win.form(text="都客直播录屏1.0旗舰版 官方:www.dukey.cn ";right=1035;bottom=621;exmode="none")
winform.add(
btnadd={cls="button";text="添加链接";left=32;top=18;right=160;bottom=52;dl=1;dt=1;z=6};
button={cls="button";text="设置保存位置";left=424;top=21;right=526;bottom=46;dl=1;dt=1;z=2};
button2={cls="button";text="打开位置";left=547;top=21;right=631;bottom=45;dl=1;dt=1;z=3};
button3={cls="button";text="选目录";left=767;top=229;right=837;bottom=254;dr=1;dt=1;z=14};
button4={cls="button";text="Button";left=643;top=558;right=734;bottom=600;hide=1;z=15};
button6={cls="button";text="选文件";left=850;top=231;right=920;bottom=256;dr=1;dt=1;z=16};
button7={cls="button";text="选目录";left=766;top=330;right=836;bottom=355;dr=1;dt=1;z=18};
button8={cls="button";text="选文件";left=849;top=330;right=919;bottom=355;dr=1;dt=1;z=19};
checkbox={cls="checkbox";text="添加画中画";left=767;top=275;right=854;bottom=303;dr=1;dt=1;z=11};
checkbox10={cls="checkbox";text="抠黑色";left=946;top=449;right=1018;bottom=473;dr=1;dt=1;z=42};
checkbox11={cls="checkbox";text="抠其它";left=946;top=473;right=1018;bottom=497;dr=1;dt=1;z=43};
checkbox7={cls="checkbox";text="画中画静音";left=754;top=489;right=842;bottom=513;checked=1;dr=1;dt=1;z=34};
checkbox8={cls="checkbox";text="原视频静音";left=850;top=489;right=938;bottom=513;dr=1;dt=1;z=35};
checkbox9={cls="checkbox";text="抠绿幕";left=946;top=425;right=1018;bottom=449;dr=1;dt=1;z=41};
edit={cls="edit";left=770;top=126;right=931;bottom=155;border=1;dr=1;dt=1;multiline=1;z=10};
edit11={cls="edit";text="0";left=781;top=364;right=837;bottom=388;dr=1;dt=1;edge=1;z=21};
edit12={cls="edit";text="0";left=781;top=396;right=837;bottom=420;dr=1;dt=1;edge=1;z=23};
edit13={cls="edit";text="0";left=877;top=364;right=909;bottom=388;dr=1;dt=1;edge=1;z=25};
edit14={cls="edit";text="0";left=941;top=364;right=973;bottom=388;dr=1;dt=1;edge=1;z=27};
edit15={cls="edit";text="1";left=949;top=396;right=973;bottom=420;dr=1;dt=1;edge=1;z=29};
edit17={cls="edit";text="0";left=802;top=521;right=842;bottom=545;dr=1;dt=1;edge=1;z=36};
edit18={cls="edit";text="20";left=890;top=521;right=930;bottom=545;dr=1;dt=1;edge=1;z=37};
edit19={cls="edit";text="000000";left=946;top=495;right=1010;bottom=519;border=1;disabled=1;dr=1;dt=1;z=44};
groupbox={cls="groupbox";text="设置";left=745;top=69;right=1026;bottom=571;db=1;dr=1;dt=1;edge=1;z=8};
lbltips={cls="static";text="欢迎使用都客直播录屏!";left=28;top=573;right=678;bottom=596;color=255;db=1;dl=1;transparent=1;z=4};
lblver={cls="static";text="当前版本:";left=882;top=585;right=978;bottom=609;color=6710886;db=1;dr=1;transparent=1;z=5};
listcol={cls="listview";left=19;top=73;right=734;bottom=546;db=1;dl=1;dr=1;dt=1;edge=1;fullRow=1;gridLines=1;z=7};
radiobutton5={cls="radiobutton";text="按比例";left=754;top=425;right=818;bottom=449;checked=1;dr=1;dt=1;group=1;z=30};
radiobutton6={cls="radiobutton";text="拉伸";left=826;top=425;right=890;bottom=449;dr=1;dt=1;z=31};
radiobutton7={cls="radiobutton";text="随机模式";left=754;top=457;right=834;bottom=481;checked=1;dr=1;dt=1;group=1;z=32};
radiobutton8={cls="radiobutton";text="顺序模式";left=834;top=457;right=914;bottom=481;dr=1;dt=1;z=33};
static={cls="static";text="名称:";left=768;top=99;right=940;bottom=127;dr=1;dt=1;transparent=1;z=9};
static11={cls="static";text="左";left=757;top=364;right=781;bottom=388;dr=1;dt=1;transparent=1;z=20};
static12={cls="static";text="顶";left=757;top=396;right=781;bottom=420;dr=1;dt=1;transparent=1;z=22};
static13={cls="static";text="宽";left=853;top=364;right=869;bottom=388;dr=1;dt=1;transparent=1;z=24};
static14={cls="static";text="高";left=917;top=364;right=933;bottom=388;dr=1;dt=1;transparent=1;z=26};
static15={cls="static";text="透明度(0.01~1)";left=853;top=396;right=941;bottom=420;dr=1;dt=1;transparent=1;z=28};
static16={cls="static";text="到";left=858;top=521;right=874;bottom=537;dr=1;dt=1;transparent=1;z=38};
static17={cls="static";text="秒";left=938;top=521;right=962;bottom=545;dr=1;dt=1;transparent=1;z=39};
static18={cls="static";text="出现在";left=754;top=521;right=794;bottom=545;dr=1;dt=1;transparent=1;z=40};
static2={cls="static";text="封面目录:";left=766;top=176;right=820;bottom=200;dr=1;dt=1;transparent=1;z=13};
static3={cls="static";text="画中画模板关注抖音号:  xiuxiulaoniu";left=765;top=22;right=992;bottom=51;color=16711680;dr=1;dt=1;font=LOGFONT(underline=1);transparent=1;z=45};
txtOutDir={cls="edit";text="d:\录屏\";left=201;top=21;right=408;bottom=47;dl=1;dt=1;edge=1;multiline=1;z=1};
txtcover={cls="edit";left=768;top=199;right=990;bottom=225;border=1;dr=1;dt=1;z=12};
txthzh={cls="edit";left=767;top=300;right=989;bottom=326;border=1;dr=1;dt=1;z=17}
)
/*}}*/

//更新检测程序----------------------------------------------------
if( fsys.update.simpleMain(
	"都客直播录屏",
	"http://www.dukey.cn/update/dlive/version.txt", /*网址也可以改用目录名,并使用服务端代码动态返回version.txt*/
	"/download/update-files" /*绿色软件建议改为 io.appData("/软件厂商名/软件名字/update-files") */
	)){
	return 0; //必须退出 main.aardio 以启动更新
}
fsys.update.simpleMain.onStatusChanged(function(version,description,status){
	/*注意此回调可捕获到调用前或调用后的更新状态变更*/
	if(status=="ready")
	{
		fsys.update.simpleMain.checkUpdate(true);
		//win.msgbox("发现新版本,下次启动将自动更新!","温馨提示");		
	}
	elseif(status=="updated")
	{
		/*已更新到新版本并准备启动新版,可使用_ARGV.oldmain获得更新之前的主程序路径,_ARGV.main取得更新后主程序路径*/
	}
	elseif(status=="complete" or status=="failed")
	{
		/*当前已启动新版本主程序*/
		//console.log(status)
		//console.log(io._exedir+"\download\")
		if(io.exist(io._exedir+"\download\"))
		{
			try
			{	
				fsys.delete(io._exedir+"\download\");
			}
		}
	}	
})

//-----------------------------------------------------------------------------------

winform.listcol.insertColumn("平台",80);
winform.listcol.insertColumn("主播",180);
winform.listcol.insertColumn("状态",160);
winform.listcol.insertColumn("录制状态",80);
winform.listcol.insertColumn("循环检测",-1);
winform.listcol.insertColumn("",0.01);//6
winform.listcol.insertColumn("",0.01);//7
winform.listcol.insertColumn("",0.01);//8
winform.listcol.insertColumn("",0.01);//9
winform.listcol.insertColumn("",0.01);//10
winform.show();

var ischeckreg=false;





var wbjs="";


winform.getImg=function(url)
{	
	if(url)
	{
		import console;
		if(string.startWith(url,"//",true))
		url="http:"+url;
		var http=..inet.whttp("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36");
		http.setTimeouts(60000,60000,60000);	
		http.referer=url;
		//console.log(url);
		var s=http.get(url);	
		if(!s)
		{
			http.referer="";
			s=http.get(url);
		}	
		try
		{		
			import zlib;
			s = zlib.gzUncompress(s);		
		}
		catch(e)
		{}
		http.close();
		return s;
	}
	else
	{
		return null; 
	}
}



winform.rename=function(curdir,path,i)
{//重命名文件
	if(io.exist(path))
	{		
		path=(curdir+tostring(i));		
		i=i+1;
	}
	else 
	{
		return path;
	}	
	return winform.rename(curdir,path,i);
}
winform.rename2 = function(filePath) {
    var fileInfo = io.splitpath(filePath);
    var fileName = fileInfo.name;
    var fileExt = fileInfo.ext;
    var newFileName = fileName;
    var counter = 1;

    while (io.exist(filePath)) {
        newFileName = fileName ++ counter ++ fileExt;
        filePath = fileInfo.dir ++ newFileName;
        counter++;
    }

    return filePath;
}


winform.button2.oncommand = function(id,event){
	thread.invoke( 
    	function(url){
    		import process;
    		process.execute(url); 
    	},string.trim(winform.txtOutDir.text)
    );
}

winform.button.oncommand = function(id,event){
	import fsys.dlg;
	var dir=fsys.dlg.opendir();
	if(dir)
	winform.txtOutDir.text=dir;
}


winform.getVersion = function(){//获取版本信息
	import fsys.version;
	var r = fsys.version.getInfo(io._exepath)
	return r.productVersion; 
	//return string.join({r.productVersion.major; r.productVersion.minor;  r.productVersion.build; r.productVersion.revision}, "."); 
}

init=function()
{	
	winform.lblver.text="当前版本:"+tostring(winform.getVersion());
		
	winform.setTimeout(function(){
		if(ischeckreg==false)
		{
			checkReg();
			ischeckreg=true;
		}
				
		//加载列表
		comm.loadset();
		comm.tblive=comm.myset.tblive;
		for(k,v in comm.tblive)
		{
			winform.listcol.addItem({v.plat,v.name,v.islive,v.remark,v.ischeck,v.id,v.pid,v.url,v.coverdir,v.hzhdir});		
		}
		
	}
	,2000);
 //---------------------------------------------------------------------
}

thread.set("init",init());
/*DSG{
  
  {*/
checkReg=function()
{
	
	var version="1.0.0.01";
	import win;		
	console.log("fds")
	//检查是否已经注册.如果没注册--------------------
	import fsys.config;
	import comm;
	
	G_config=comm.initConfig();	

	var email=G_config.email;
	var hasVideo=G_config.hasvideo;
	if(hasVideo) winform.chkHasVideo.checked=true;
	var isneedreg=dook.isneedreg();
	if(isneedreg=="0")
	return false; 
	
	elseif(isneedreg!="0" && isneedreg!="1")
	{
		//支持试用
		var limittimes=tonumber(isneedreg);//限制使用次数
		if(limittimes==null) limittimes=0;
		var usetimes=G_config.usetimes;//使用次数
		if(usetimes==null or usetimes<limittimes)
		{
			winform.linkLogin.hide=false;
			return false; 
		}		
	}	
	
	if(#email==0)
	{
		isreg=false;
		if(isneedreg!="0" && isneedreg!="1")
			win.msgbox("你的试用次数已用完,如有需要请先注册!");
		var child= winform.loadForm("\ui\RegFrm.aardio");
		result = child.doModal(winform.hwnd);
		if(!result || result!="ok")
		{
			winform.close();
			return;
		}
	}
	else//说明已经注册过. 
	{
		
		var regkey=G_config.regkey;
		var email=G_config.email;
		var signkey=dook.GetSignKey();
		var token=dook.GetToken(signkey,email,regkey,"210");
		select(token)
		{
			case "expire"
			{
					if(email=="1902976602@qq.com")
					{
						var child= winform.loadForm("\ui\regfrm.aardio");
						result = child.doModal(winform.hwnd);
						if(!result || result!="ok")
						{
							win.quitMessage();
							return;
						}
					}
					else
					{
						win.msgbox("你的账号已经过期,请续费!");
						//点此自助购买
						var url="http://www.dukyun.com/plugins/dfpay/pay.aspx?signkey=%s";
						url=string.format(url,signkey);							
						var frmChild = winform.loadForm("\dlg\view.aardio");
						publish("url",url);
						frmChild.doModal();
						winform.close();
						return;
					}
			}
			case "nouser" 
			{
				win.msgbox("无此账号,请先购买或者检查你的email是否正确!");			
				var child= winform.loadForm("\ui\regfrm.aardio"); 
				result = child.doModal(winform.hwnd);
				if(!result || result!="ok")
				{
					win.quitMessage();
					return;
				}
				return ; 
			}
			case "ok"
			{
				
				var tip=dook.GetExpireDate(email,version);			
				select(tip)
				{
					case "destroy"
					{
						import sys;
						sys.restart();
					}
					case "needupdate"
					{
						win.msgbox("发现新版本,请升级后使用,官方:http://www.dukey.cn");
						process.execute("http://www.dukey.cn/");
						winform.close();
					}					
				}				
				
			}
			case "error"
			{
				win.quitMessage();
				return;
			}
			else 
			{	
				isreg=false;
				var child= winform.loadForm("\ui\regfrm.aardio");
				result = child.doModal(winform.hwnd);
				if(!result || result!="ok")
				{
					win.quitMessage();
					return;
				}				
			}
		}
		select(token) {
		case "nologin" {
			winform.text+=" [未登录]";
		}
		case "ok" {
			winform.text+=" [已登录:"+G_config.email+"]";
					
		}
		case "expire"{
			winform.text+=" [已登录:"+G_config.email+" 已过期]";				
			}
		}
	}
}
/*}}*/



winform.btnadd.oncommand = function(id,event){
var frmChild = winform.loadForm("\dlg\view.aardio");
frmChild.doModal();
}

winform.listcol.onnotify = function(id,code,ptr){
	
	 select(code) {    	
    	case 0xFFFFFFFB/*_NM_RCLICK*/  {
    		var x,y = win.getCursorPos();
    		winform.popmenu.popup(x,y,true);//弹出菜单
    	}
    	case 0xFFFFFFFE/*_NM_CLICK*/{
    	    var dd=	winform.listcol.getItem();
    	    //console.dump(dd)
    	    }
    	case 0xFFFFFFF4/*_NM_CUSTOMDRAW*/
    	{
    	    var lvcd = winform.listcol.getNotifyCustomDraw(code,ptr);
			if( lvcd.nmcd.dwDrawStage == 0x10001/*_CDDS_ITEMPREPAINT*/)
				return 0x20/*_CDRF_NOTIFYSUBITEMDRAW*/
			elseif( lvcd.nmcd.dwDrawStage == 1/*_CDDS_PREPAINT*/ ){
				return 0x20/*_CDRF_NOTIFYITEMDRAW*/;
			}
			elseif( lvcd.nmcd.dwDrawStage == ( 0x10001/*_CDDS_ITEMPREPAINT*/ | 0x20000/*_CDDS_SUBITEM*/) ){ 
				//注意这里 iSubItem 的索引自0开始( 其他函数通常自1开始 )
				lvcd.clrText = lvcd.iSubItem ==3 ? gdi.RGB(255,0,0) : gdi.RGB(0,0,0);				
				lvcd.update()				
				return 0/*_CDRF_DODEFAULT*/
			}
    	}
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值