100 个 Coze 精品案例:抖音爆款星座 IP 混剪视频,用 Coze 工作流轻轻松松日更 100 条

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


这是大明哥《100 个 Coze 精品案例 》的第 009个案例:抖音爆款星座 IP 混剪视频

在前面两篇文章《抖音爆款星座 IP 视频,每条点赞 10000+,用 Coze 工作流轻松复制!》和《Coze 全自动情感治愈视频混剪。用 Coze 工作流帮您节约 99% 的时间,从此告别手动!》。一篇是生成星座 IP 视频,一条是情感治愈视频混剪。其实在下图中,该博主最近的视频都是混剪,所以这里就来实现下星座 IP 混剪视频。

视频效果:

整体思路

完整流程图:

执行过程:

搭建工作流

整个工作流和抖音爆款星座 IP 视频,每条点赞 10000+,用 Coze 工作流轻松复制!有 80% 的相同之处,大明哥只介绍不同的地方:处理视频。即下图:

由于支持自定义视频,所以在开始节点会多一个参数:

这样在获取视频时就需要判断用户是否已上传了视频,如果上传了则需要先获取视频的时长,也就是这段:

在筛选视频时,需要传入三个参数:

  • input_video_list:用户输入视频
  • input_video_duration:用户输入视频时长
  • audio_duration:音频时长。这里是需要保证整个视频时长和音频时长一致

再就是代码处理了:

ini 复制代码
import random
import math
async def main(args: Args) -> Output:
    params = args.params

    input_video_list = params["input_video_list"]
    input_video_duration = params["input_video_duration"]
    audio_duration = params["audio_duration"]

    # 计算总时长
    max_video_duration = 2000000
    max_audio_duration = 0
    for duration in audio_duration:
        max_video_duration += duration["duration"]
        max_audio_duration += duration["duration"]

    video_url_list = []
    if input_video_list:
        video_url_list.extend(input_video_list)

    video_duration = 0
    if input_video_duration:
        for video in input_video_duration:
            duration = video["data"]["duration"]
            video_duration += duration

    # 判断用户输入的视频是否够文案长度
    diff_duration = max_video_duration - video_duration * 1000000
    if diff_duration > 0:
        clip_duration = 6 * 1000000
        total_duration = math.ceil(diff_duration)
        video_num = total_duration // clip_duration
        if total_duration % clip_duration != 0:
            video_num += 2
        ## 获取随机视频
        random_video = get_random_videos(video_num)
        video_url_list.extend(random_video)

        # 开场音效
    open_audio_url = ["https://sike.skjava.com/ai/1748396216512_ojzmqyqa0t.mp3"]

    # 构建输出对象
    ret: Output = {
        "video_url_list": video_url_list,
        "max_video_duration":max_video_duration,
        "max_audio_duration":max_audio_duration,
        "open_audio_url":open_audio_url
    }
    return ret


# 随机挑选视频
def get_random_videos(num):
    video_urls = [
        "https://sike.skjava.com/ai-sucai/xxxx.mp4",
        "https://sike.skjava.com/ai-sucai/xxxx.mp4",
        "https://sike.skjava.com/ai-sucai/xxxx.mp4",
        // 资源比较多就不列举了....
       ]
    # 随机抽取所需的视频片段
    return random.sample(video_urls, num)

筛选完视频后,再一次获取筛选视频的时长,然后再利用 Python 代码将视频的时间线处理下:

输入参数:

  • video_url_list:筛选视频
  • video_duration:筛选视频时长
  • max_duration:最大音频时长
  • main_role_duration:主星座图片时长。这个主要是为了保证视频和开场图片的时间线连贯

输出参数:

  • video_infos:视频数据
  • bg_video_infos:背景视频数据
  • opening_video_infos:开场背景视频数据
  • opening_effect_infos:开场背景视频数据特效(用于处理转场)

代码也不是很难:

ini 复制代码
import json
async def main(args: Args) -> Output:
    params = args.params

    video_url_list = params["video_url_list"]
    video_duration = params["video_duration"]
    max_duration = params["max_duration"]
    main_role_duration = params["main_role_duration"]

    video_start = 2000000 + main_role_duration

    # 计算视频时长
    video_duration_list = []
    for duration in video_duration:
        duration1 = duration["data"]["duration"]
        video_duration_list.append(duration1 * 1000000)

    # 获取开场视频
    open_video_url = ""
    for index,duration in enumerate(video_duration_list):
        if (duration >= video_start):
            open_video_url = video_url_list[index]
            del video_url_list[index]
            del video_duration_list[index]
            break
    
    opening_video_infos = [{
        "video_url": open_video_url,
        "start": 0,
        "end": video_start,
        "width":1024,
        "height":1024
    }]

    # 开场特效
    opening_effect_infos = [{
        "effect_title":"方形开幕",
        "start":video_start,
        "end":video_start + 1000000
    }]

    # 构建视频数据
    start = video_start
    end =  0
    video_infos = []
    for index,item in enumerate(video_url_list):
        duration2 = video_duration_list[index]
        end = start + duration2
        if (end > max_duration):
            end = max_duration
        
        video_infos.append({
            "video_url": item,
            "start": start,
            "end": end,
            "width":1024,
            "height":1024
        })

        start = end
        if start > max_duration:
            break
    
    # 纯黑背景视频
    bg_video_url = "https://sike.skjava.com/ai/1748928397635_qha7zbgz1.mp4"
    bg_video_infos = [{
        "video_url":bg_video_url,
        "start":video_start,
        "end": end,
        "width":1024,
        "height":1024,
    }]

    # 构建输出对象
    ret: Output = {
        "opening_video_infos":json.dumps(opening_video_infos),
        "bg_video_infos":json.dumps(bg_video_infos),
        "video_infos":json.dumps(video_infos),
        "opening_effect_infos":json.dumps(opening_effect_infos)
    }
    return ret

处理完视频数据后,就处理开场音效和背景音乐。

背景音乐的话,我们利用 [search_bgm] 插件获取即可,在处理背景音乐的时候,由于也需要与音频的时间线保持一致,所以我们需要获取第一个时长比音频时长要长的背景音乐,代码如下:

ini 复制代码
async def main(args: Args) -> Output:
    params = args.params

    bg_audio = params["bg_audio"]
    max_audio_duration = params["max_audio_duration"]

    bg_audio_url = [bg_audio[0]["bgm_url"]]
    for item in bg_audio:
        if item["duration"] > max_audio_duration:
            bg_audio_url = [item["bgm_url"]]
            break


    bg_time_lines = [{
        "start":2000000,
        "end":max_audio_duration
    }]

    # 构建输出对象
    ret: Output = {
        "bg_audio_url":bg_audio_url,
        "bg_time_lines":bg_time_lines
    }
    return ret

到这里,整个视频、背景音乐都处理好了,最后就是将他们和其他数据,如文案、十二星座图片、文案音频都添加到剪映草稿中:


相关推荐
ai2things3 小时前
Generative agents 代码分析 一
agent
大模型教程5 小时前
一文速通提示词工程Prompt Engineering
程序员·llm·agent
AI大模型5 小时前
大模型炼丹术(八):手把手教你玩转 LLM 的指令微调
程序员·llm·agent
聚客AI6 小时前
🛠️从架构到部署:企业级多Agent系统开发百科全书
人工智能·llm·agent
GitLqr1 天前
AI洞察 | 一周动态: Manus 裁员、Kimi K2 开源、混元 3D 创作、Qwen Chat 桌面客户端
人工智能·agent·ai编程
柠檬豆腐脑1 天前
构建高效智能体(Building Effective Agents)
llm·agent
聚客AI1 天前
🔥 大模型开发进阶:基于LangChain的异步流式响应与性能优化
人工智能·langchain·agent
后端小肥肠1 天前
效率革命!10分钟用Dify+Spring Boot打造AI热点雷达,自媒体选赛道再不难!(附保姆级教程)
人工智能·spring boot·agent
静Yu1 天前
蚂蚁百宝箱|快速搭建会讲故事、读新闻的智能体
前端·agent