最新 Coze 教程:Coze 全自动情感治愈视频混剪。用 Coze 工作流帮您节约 99% 的时间,从此告别手动!!

大模型向量数据库机器学习

大家好,我是大明哥,目前专注 AI 智能体。我的教程《大明哥 AI 觉醒社 | AI 智能体 》正在免费开放中,如果想学习AI 智能体,请加大明哥,免费领取教程

picture.image

这是大明哥**《100 个 Coze 精品案例》** 的第 008 个案例:Coze 全自动情感治愈视频混剪

相信大家都刷到过这类视频:它们以情绪化、人生感悟、心灵治愈的文案,配上一些简单的视频。这类视频非常容易引发共鸣。制作也相对容易些,如果你用剪映来做的话,制作一个视频应该要花几十分钟。

但是,如果你用 Coze 工作流的花,几十秒就可以搞定。你只需要输入文案主题,Coze 工作流就可以对多个视频片段进行混剪(支持自定义上传视频),同时生成文案、配音。

「整体思路」

  • 利用 deepSeek 生成情感治愈的文案
  • 将文案转换为音频
  • 根据音频的时间随机获取一些视频片段
  • 将字幕、音频、视频片段、背景音乐添加到剪映草稿里面

完整工作流:

picture.image

「搭建工作流」

整个工作流接收三个参数:

picture.image

  • input :文案主题
  • api\_token :字幕跟音频对齐插件的 token
  • video\_urls :自定义视频片段

利用 DeepSeek 来生成文案,提示词如下:

  
# 角色  
你是一位出色的治愈情感文案专家,擅长依据用户输入的主体,创作出饱含温情、抚慰人心的情感文案。你的文字细腻且富有感染力,能精准捕捉情感的微妙之处,给人带来温暖与力量。  
  
## 技能  
### 技能 1: 创作情感文案  
1. 接收用户输入的主体后,深入剖析主体蕴含的情感元素。  
2. 围绕主体展开丰富联想,从多维度挖掘相关情感脉络。  
3. 使用电影旁白的深情风格,文案需能够引起用户的情感共鸣,精炼简短,字数在 150 字左右  
  
===回复示例===  
[情感文案内容]  
===示例结束===  
  
### 输出格式  
最后直接输出创作好的文案,无需额外说明。  
  
## 限制:  
- 仅围绕用户输入的主体创作情感文案,拒绝回答与创作情感文案无关的话题。  
- 所输出的情感文案须逻辑清晰、语句通顺,符合情感表达要求。  
- 情感文案应紧密围绕用户输入的主体,不得偏离主题创作。   
- 最后直接输出文案,文案字数 150字左右。  

生成文案后就将文案转换为语音,同时获取它的时长:

picture.image

由于生成的文案是一整段的,所以需要将其进行分割处理,主要是按照标点符号来分割:

picture.image

由于文案是切割的,但是音频是一整段,所以需要利用插件将文案和音频对齐,这里采用插件[字幕音频对齐 ]:

picture.image

注意:这个插件是收费的。当然,这里也有不收费的方式,就是先将文案分割,然后在批量将其合成音频,最后利用代码来进行时间线的处理。这种方案实现起来也不难(大明哥前面大部分工作流都是这么处理的),就是稍微繁琐了点。

文案和音频处理完成后就需要来处理视频了。

如果输入了自定义视频的话,需要先获取自定义视频的时长,因为需要根据自定义视频时长和音频长度进行补齐处理:

picture.image

再就是挑选视频片段了,由于代码比较多就比贴出来了。挑选完视频后,还需要再次对挑选的视频时长再次进行下计算,主要目的是为了构建视频的时间线:

picture.image

再然后就是利用 Python 代码来构建剪映草稿的数据了。输入参数:

picture.image

输出参数:

picture.image

Python 代码:

  
import json  
asyncdef main(args: Args) -> Output:  
    params = args.params  
      
    video\_url = params["video\_url"]  
    time\_lines = params["time\_lines"]  
    audio\_url = params["audio\_url"]  
    text\_list = params["text\_list"]  
    audio\_duration = params["audio\_duration"]  
    title = params["title"]  
    video\_duration = params["video\_duration"]  
  
    # 处理视频  
    video\_start = 0  
    video\_end = 0  
    video\_infos = []  
      
    for index,item in enumerate(video\_url):  
        duration = convert\_to\_seconds(video\_duration[index]["duration"])  
        video\_end = video\_start + duration * 1000000  
        if (video\_end >= audio\_duration):  
            video\_end = audio\_duration  
        video\_infos.append({  
            "video\_url": item,  
            "start": video\_start,  
            "end": video\_end,  
            "width":576,  
            "height":1024,  
            "transition": "叠化",  
            "transition\_duration": 1000000  
        })  
        video\_start = video\_end  
        if (video\_start >= audio\_duration):  
            break  
  
    # 背景音乐  
    bg\_audio = [{  
        "audio\_url":"https://houht.oss-cn-shanghai.aliyuncs.com/public/mp3/qingroubgm.MP3",  
        "start":0,  
        "end":video\_end  
    }]  
  
    # 配音和字幕  
    ## 配音  
    audio\_infos = [{  
        "audio\_url": audio\_url,  
        "duration": audio\_duration,  
        "start":0,  
        "end":audio\_duration  
    }]  
  
    ## 字幕  
    start = 0  
    end = 0  
    caption\_infos = []  
    for index,item in enumerate(time\_lines):  
        start = item["start"]  
        end = item["end"]  
  
        text = text\_list[index]  
        caption\_infos.append({  
            'text': text,  
            'start': start,  
            'end': end,  
            "in\_animation":"渐显",  
            "out\_animation":"渐隐"  
        })  
  
    captions\_title = [{  
        'text': title,  
        'start': 0,  
        'end': 2000000,  
        "in\_animation":"",  
         "out\_animation":"渐隐"  
    }]  
  
    # 构建输出对象  
    ret: Output = {  
        "video\_infos":  json.dumps(video\_infos),  
        "bg\_audio":  json.dumps(bg\_audio),  
        "audio\_infos":  json.dumps(audio\_infos),  
        "caption\_infos":  json.dumps(caption\_infos),  
        "captions\_title":  json.dumps(captions\_title)  
    }  
    return ret  
  
# 将时间格式转化为秒数  
def convert\_to\_seconds(time\_str):  
    ## 为空 返回 0  
    ifnot time\_str:  
        return0  
      
    parts = time\_str.split('时')  
    if len(parts) == 2:  
        hours = int(parts[0])  
        sub\_parts = parts[1].split('分')  
        minutes = int(sub\_parts[0])  
        seconds = int(sub\_parts[1].split('秒')[0])  
        total\_seconds = hours * 3600 + minutes * 60 + seconds  
    else:  
        parts = parts[0].split('分')  
        if len(parts) == 2:  
            minutes = int(parts[0])  
            seconds = int(parts[1].split('秒')[0])  
            total\_seconds = minutes * 60 + seconds  
        else:  
            total\_seconds = int(parts[0].split('秒')[0])  
    return total\_seconds  

最后就是创建剪映草稿,然后添加数据了:

picture.image

视频效果

· 往期推荐 ·

最新Coze教程:40+ 条视频涨粉 10W+,利用 Coze 工作流 + 视频组件,一键制作爆款小人国微景动画视频

小红书爆款图文,单篇点赞 20000+,用 Coze 智能体一键生成有声儿童绘本!

100 个 Coze 精品案例:抖音爆款星座 IP 视频,每条点赞 10000+,用 Coze 工作流轻松复制!

100 个 Coze 精品案例:一键批量抓取小红书博主所有笔记,写入飞书多维表格

为什么你还在苦学提示词,狂搜提示词?一招让 AI 自动帮你生成完美提示词!


今天的分享就到这里啦,如果想领取文中完整版的**《流程图、代码、提示词》** ,可以加大明哥微信,邀请进学习空间!!备注【Coze 实战】

picture.image

大明哥创建了《Coze 入门实战教程》 ,通过 6 个工作流&教程就可以彻底掌握 Coze 的使用技巧,不是纯理论,是实战+理论!!!

picture.image

若有收获,可以点击下方⬇️关注我,以防迷路

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论