短视频批量剪辑软件源码开发必读

  1. AI全自动批量处理

一键导入多段素材,AI智能全自动视频剪辑,支持自动剪辑,自动配音,自动添加字幕,自动添加关键词图标等。

  1. AI视频自动分段

导入多个视频后,根据选择的视频剪辑模式,自定义剪辑策略,设置多段视频段数。自定义设置视频的时长,支持多种视频格式。

  1. AI全自动自动配音

一键导入文本内容,即可自动生成对应的语音,多种语音模式,音频音色,可自动选择 1. 自动生成字幕

快速导入文本/输入文本内容,即可自动生成字幕。大量精美字幕样式可选择,支持自定义字外观,如:阴影,背景色,文字样式等

展示样例:

/*

* 开始创作

*/

public function startProjectAction() {

//面包屑

$breadcrumbs = [

['title' => 'AI视频创意', 'link' => '#'],

['title' => '开始创作', 'link' => ''],

];

$this->buildBreadcrumbs($breadcrumbs);

//搜索专用

$keyword_type = $this->request->getStrParam('keyword_type');

$keyword = $this->request->getStrParam('keyword');

$this->output['keyword_type'] = $keyword_type;

$this->output['keyword'] = $keyword;

$dv_id = $this->request->getIntParam('dv_id'); //视频工程ID

$this->output['dv_id'] = $dv_id;

$type = $this->request->getIntParam('type',0); //素材类型

$scene = $this->request->getIntParam('scene',1);

$this->output['scene'] = $scene;

//获取视频信息

$video_model = new App_Model_Douyin_MysqlVideoStorage();

$video_info = $video_model->getRowByIdSid($dv_id, $this->sid);

if(empty($video_info)){

plum_redirect_with_msg('视频创意工程不存在');

}

$mixed_video_mode = $video_info['dv_video_mode'];

if (in_array($mixed_video_mode, [11])) { //智能图片组合

$type = in_array($type, [0,1]) ? 3 : $type; //默认为图片素材类型

} else {

$type = in_array($type, [0, 3]) ? 1 : $type; //默认为视频素材类型

}

//获取素材列表

$where = [

['name' => 'dvm_ds_id', 'oper' => '=', 'value' => $this->sid],

['name' => 'dvm_dv_id', 'oper' => '=', 'value' => $dv_id],

['name' => 'dvm_material_type', 'oper' => '=', 'value' => $type]

];

//视频类型,区分混剪模式

if ($type == 1) {

$where[] = ['name' => 'dvm_video_mixed_mode', 'oper' => '=', 'value' => $video_info['dv_video_mode']];

}

if(!empty($keyword_type)){

$where[] = ['name' => $keyword_type, 'oper' => 'like', 'value' => "%{$keyword}%"];

}

//智能场景组合,视频素材加场景值筛选

if($type==1 && $mixed_video_mode==4){

$scene_model = new App_Model_Douyin_MysqlVideoSceneStorage();

$scene_count = $scene_model->getCountByDvid($dv_id);

if ($scene_count == 0 && $video_info['dv_video_use'] > 0) {

for($i=1; $i<=$video_info['dv_video_use']; $i++) {

$indata = [

'dvs_ds_id' => $this->sid,

'dvs_dv_id' => $dv_id,

'dvs_name' => "场景".$i,

'dvs_duration' => $video_info['dv_video_shot']*1000,

'dvs_scene' => $i,

'dvs_create_time' => time(),

];

$scene_model->insertValue($indata);

}

}

$where[] = ['name' => 'dvm_scene', 'oper' => '=', 'value' => $scene];

}

$sort = [ 'dvm_create_time' => 'DESC'];

$material_model = new App_Model_Douyin_MysqlVideoMaterialStorage();

$material_list = $material_model->getAttachList($where,$this->index,$this->count,$sort);

foreach ($material_list as &$item) {

$item['dsa_bit_rate'] = empty($item['dsa_bit_rate']) ? 0 : plum_compute_byte($item['dsa_bit_rate']);

$item['dsa_cover'] = empty($item['dsa_cover']) ? '/public/dydqt/img/video-edit.png' : $item['dsa_cover'];

}

//计算分页

$material_list_all = $material_model->getCount($where);

$page_libs = new Libs_Pagination_Paginator($material_list_all,$this->count,'jquery',true);

$pageHtml = $page_libs->render();

$video_info['dv_platform'] = json_decode($video_info['dv_platform'], true);

if (!empty($video_info['dv_platform']['bgcolor'])) {

$video_info['dv_platform']['last_bgcolor'] = array_pop($video_info['dv_platform']['bgcolor']);

} else {

$video_info['dv_platform']['last_bgcolor'] = '';

}

// var_dump($material_list);

$this->output['video_info'] = $video_info;

$this->output['material_list'] = $material_list;

$this->output['pageHtml'] = $pageHtml;

$this->output['video_mixed_mode'] = plum_parse_config('project_mixed_mode','dydqt/project');

//左侧素材类型导航输出

$this->output_materail_link($dv_id, $type, $video_info);

$this->renderCropTool('/dydqtshoppc/index/uploadImage');

$this->displaySmarty('dydqtshoppc/video/edit-project.tpl');

}

/*

* 素材类型输出

*/

private function output_materail_link($da_id, $type, $video_info){

$material_model = new App_Model_Douyin_MysqlVideoMaterialStorage($this->sid);

$template_model = new App_Model_Douyin_MysqlVideoTempVideoStorage($this->sid);

$temp_video_count = $template_model->getTempVideoCountByItem($da_id);

$type_list = [

'video' => [

'type' => 1,

'title' => '镜头素材',

'count' => $material_model->getMaterialCountByVideo($da_id, 1),

'top' => 33,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=1",

],

'image' => [

'type' => 3,

'title' => '镜头素材',

'count' => $material_model->getMaterialCountByVideo($da_id, 3),

'top' => 33,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=3",

],

'audio' => [

'type' => 2,

'title' => '背景音乐',

'count' => $material_model->getMaterialCountByVideo($da_id, 2),

'top' => 133,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=2",

],

'title' => [

'type' => 4,

'title' => '标题字幕',

'count' => $material_model->getMaterialCountByVideo($da_id, 4),

'top' => 233,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=4",

],

'write' => [

'type' => 5,

'title' => '配音字幕',

'count' => $material_model->getMaterialCountByVideo($da_id, 5),

'top' => 333,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=5",

],

/*

'dubin' => [

'type' => 6,

'title' => '配音选择',

'url' => "/dydqtshoppc/video/materialList?dv_id={$da_id}&type=6",

],

*/

'background' => [

'type' => 7,

'title' => '创意背景',

'count' => $material_model->getMaterialCountByVideo($da_id, 7),

'top' => 433,

'url' => "/dydqtshoppc/video/startProject?dv_id={$da_id}&type=7",

],

'mixcut' => [

'type' => 0,

'title' => '视频仓库',

'count' => $temp_video_count,

'top' => 'calc(100% - 86px)',

'url' => "/dydqtshoppc/video/cacheVideo?dv_id={$da_id}&type=0",

],

];

$video_mode = $video_info['dv_video_mode'];

switch ($video_mode) {

case 1 :

case 2 :

case 3 :

case 4 :

unset($type_list['image']);

break;

case 11 :

unset($type_list['video']);

$type = $type == 1 ? 3 : $type;

break;

default :

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值