AI Video Automation · Case 01

把 553 条云南素材,整理成一条可复用的自动剪辑链路

这不是一次“让 AI 随机拼视频”的演示。我从参考片拆解、真实素材筛选和合规文案开始,把配音、字幕、镜头时长、画面质检做成一套可以继续批量化的流程。

成片时长
43.5 秒
画面规格
1080 × 1920
语音分段
12 段
素材规模
553 条
Final output · 30 fps

豆包现成音色 · 新青年体字幕 · 真实云南素材

1305最终帧数
0内部异常跳帧
0黑帧 / 冻结帧
12 / 12字幕描边通过

Production Pipeline

从参考视频到最终成片

每一步都留下机器可读的中间结果,方便重做单句、替换单个镜头,或者把同一套规则用于下一条视频。

  1. 01

    参考片拆解

    读取 5 条参考视频的时长、帧率和镜头密度,提炼“钩子—路线—体验—收尾”的内容结构。

    FFprobe · scene detect
  2. 02

    文案与合规

    控制在 35–45 秒,使用短句和路线信息,避开绝对化承诺与不必要的价格表达。

    script.txt
  3. 03

    真实素材匹配

    从昆明、大理、丽江、香格里拉等分类中抽帧筛选,排除水印、原生字幕和素材内部跳切。

    OpenCV · NumPy
  4. 04

    逐句语音生成

    每句单独调用豆包语音,再读取真实音频时长;画面和字幕不再靠字数估算。

    doubao_tts.py
  5. 05

    固定帧率合成

    素材先裁入稳定区间,再统一为 30fps;字幕直接烧入各自片段,最后按精确帧数拼接。

    build_optimized.py
  6. 06

    逐帧质量检查

    检查字幕安全边距、描边像素、黑帧、冻结帧、重复帧和镜头内异常突变。

    qa_final/report.json

Scripts & API

实际调用了什么

页面只公开实现方式,不暴露 API Key、应用凭证或用户数据。

Core scripts

自动化脚本

  • scripts/doubao_tts.py连接豆包语音并生成分句 MP3
  • build_optimized.py选稳定镜头、渲染字幕、合成成片
  • recipe.json记录素材、起点、时长和输出配置
  • qa_final/report.json保存自动质检结果

Voice API

火山引擎豆包语音

模型资源
seed-tts-2.0
音色
zh_female_xiaohe_uranus_bigtts
调用方式
WebSocket 流式 TTS
音频规格
MP3 · 24 kHz

使用平台现成音色,没有进行真人声音克隆。

Media stack

图像与视频工具

FFmpegFFprobePython 3.12OpenCVNumPyPillow剪映新青年体

Iteration Log

问题不是被藏起来,而是变成下一轮规则

这条视频经历了多轮人工反馈。每一次修改都被沉淀成自动化检查项。

字幕越界

统一安全宽度

FFmpeg 字体渲染受环境影响,改用 Pillow 生成透明字幕层,并保留至少 93px 横向边距。

声音不同步

逐句真实时长

从整段语音按字数估时,改成 12 句独立生成,再将每句音频补齐到精确帧边界。

水印与原字幕

候选素材剔除

逐镜查看画面四角与字幕区域,替换带设备水印、账号文字和原生字幕的素材。

跳针感

稳定窗口 + CFR

先检测源文件内部切镜,只取无突变区间;输出统一 30fps,并检查连续帧差和重复帧。

描边不一致

双层黑边

字幕改为 8px 内描边和 14px 外层阴影,并对 12 张字幕图逐一验证黑白像素。

现在的效果

可播放、可追溯、可复用

43.5 秒、1305 帧,字幕、音频和镜头边界统一;下一条只需替换文案与素材匹配结果。

Next

从单条样片,继续走向批量生产

下一阶段会建立素材标签索引、自动水印检测和多条任务队列,让“选择路线—生成文案—配音—成片—质检”成为一个可以重复执行的内容系统。