内容团队在做电影解说视频时,最大的生产瓶颈不是创意,而是流程。
字幕提取、文案撰写、配音合成、时间轴对齐、视频合成,每个环节单独做都不难,但串起来就是一条需要反复切换工具、手动传文件的低效流水线。
本文的目标是把这条流水线自动化:以 narrator-ai-cli 为执行层,把字幕提取到成片输出的全流程压缩成可复用的脚本,实现批量生产。
测试环境:Ubuntu 22.04 / Python 3.10 / FFmpeg 6.0 / narrator-ai-cli 0.3.x
一、AI 电影解说自动化工作流架构:四个环节的数据流转设计
手动流程和自动化流程的核心差异不在于用了什么工具,而在于数据在各环节之间的流转方式。手动流程靠人工驱动,每个环节产出一个文件,人工判断后传给下一个工具。自动化流程靠程序驱动,每个环节的输出直接作为下一个环节的输入。
原始视频(.mp4)
[环节1] 字幕提取(FFmpeg + Whisper)→ SRT 文件
[环节2] 关键帧抽取(FFmpeg)→ JPEG 序列
[环节3] 文案生成 + 配音合成(narrator-ai-cli)→ JSON 脚本 + MP3
[环节4] 时间轴对齐 + 视频合成(FFmpeg)→ 成片(.mp4)
各环节技术选型:
- 字幕提取:FFmpeg 音轨分离 + Whisper 语音识别,输出标准 SRT
- 关键帧抽取:FFmpeg
-vf select过滤器,按场景切换点抽帧 - 文案生成 + 配音合成:
narrator-ai-cli封装 API 调用,本地不需要模型权重 - 视频合成:FFmpeg 处理字幕叠加、配音替换、时间轴对齐
二、narrator-ai-cli + Whisper + FFmpeg 环境安装与 API 链路验证
系统要求:Python 3.10+,FFmpeg 6.0+。
<BASH>
安装依赖
pip install narrator-ai-cli openai-whisper
验证 FFmpeg
ffmpeg -version | head -1
配置 API Key 并验证链路
narrator-ai-cli config set app_key YOUR_API_KEY
narrator-ai-cli user balance
看到账户积分正常返回,说明 CLI 和后端 API 链路都通了。
Whisper 模型首次运行会自动下载,中文内容推荐用 medium 模型(约 1.4GB),识别准确率明显高于 base。
三、字幕自动提取与 SRT 清洗:Whisper 语音识别 + 噪声段过滤
字幕提取是整条流水线的起点,SRT 文件的质量直接影响后续文案生成效果。
第一步:从视频提取音轨
<BASH>
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 audio.wav
-ar 16000 -ac 1 是 Whisper 的标准输入格式,转换这一步不能省。
第二步:Whisper 语音识别生成 SRT
<BASH>
whisper audio.wav --language zh --model medium --output_format srt --output_dir ./
执行完成后在当前目录生成 audio.srt,包含时间戳和识别文本。
第三步:SRT 清洗
原始 Whisper 输出通常包含背景音误识别、过短片段(< 0.5秒)、重复片段,需要清洗后再传给文案生成环节。清洗规则:
- 过滤时长小于 0.5 秒的片段
- 去除纯标点或空文本行
- 合并间隔小于 0.2 秒的相邻片段
清洗后的 SRT 条数通常比原始减少 15% 到 30%,文案生成的连贯性会明显提升。
四、关键帧抽取策略:固定间隔 vs 场景切换点,FFmpeg 参数对比
关键帧的抽取策略直接影响成片的视觉节奏,两种策略适用场景不同。
固定间隔抽帧(适合纪录片)
<BASH>
mkdir -p frames
ffmpeg -i input.mp4 -vf "fps=1/2" -q:v 2 frames/frame_%04d.jpg
每2秒抽一帧,适合画面切换慢、信息密度高的纪录片场景。
场景切换点抽帧(适合剧情类影视解说)
<BASH>
ffmpeg -i input.mp4 -vf "select='gt(scene,0.3)'" -vsync vfr -q:v 2 frames/scene_%04d.jpg
scene=0.3 是经验阈值,值越小抽帧越密,值越大只抽大幅切换的帧。剧情类内容推荐 0.25 到 0.35 之间。
场景切换点抽帧比固定间隔更符合叙事节奏,同样一部90分钟电影,固定间隔(2秒)会抽出约2700帧,场景切换点策略通常只抽出 120 到 200 帧,后续 API 调用消耗也更低。
五、AI 解说文案生成与配音合成:narrator-ai-cli 分步模式与一次性出片对比
字幕和关键帧就绪后,调用 Al解说大师narrator-ai-cli 完成文案生成和配音合成。这里有两种模式,选哪种取决于你对文案质量的控制需求。
分步模式:先看文案再出片
适合对账号调性有要求的创作者,在文案阶段介入修改,确认后再合成视频。
< BASH >
Step 1 :生成文案,输出 JSON 供审阅
narrator-ai-cli commentary create-script \
--movie-file input.mp4 \
--learning-model-id narrator-comedy-001 \
--output-script scripts/output_script.json
打开 output_script.json,修改不满意的 narration 字段
Step 2 :确认后合成视频
narrator-ai-cli commentary create-video \
--script scripts/output_script.json \
--movie-file input.mp4 \
--output output/movie_解说.mp4
分步模式的实际好处:文案生成和视频合成分开计费,文案不满意重新生成不需要重跑视频合成,节省调用额度。
一次性模式:全自动出片
适合批量生产场景,不需要人工介入。
<BASH>
narrator-ai-cli commentary create-movie \
--movie-file input.mp4 \
--scene-type movie_commentary \
--learning-model-id narrator-comedy-001 \
--platform "抖音" \
--output output/movie_解说.mp4
执行过程会显示各步骤进度和预估调用额度,确认后才会继续生成。
六、电影解说批量生产:Shell 脚本封装 + cron 定时任务自动调度
单条视频跑通之后,把流程封装成批量脚本,实现无人值守生产。
批量处理 Shell 脚本
<BASH>
#!/bin/bash
INPUT_DIR=~/Videos/input
OUTPUT_DIR=~/Videos/output
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.mp4; do
filename=$(basename "$file" .mp4)
output="$OUTPUT_DIR/${filename}_解说.mp4"
# 已处理则跳过(断点续跑)
if [ -f "$output" ]; then
echo "已存在,跳过:$filename"
continue
fi
echo "处理中:$filename"
narrator-ai-cli commentary create-movie \
--movie-file "$file" \
--learning-model-id narrator-comedy-001 \
--platform "抖音" \
--output "$output" \
--yes
done
echo "全部处理完成"
--yes 参数跳过交互确认,适合无人值守的批量场景。断点续跑逻辑(检查输出文件是否已存在)避免中途失败后从头重跑。
七、narrator-ai-cli 常见报错排查:音画不同步、Whisper 识别率低、批量中断处理
音画不同步
原视频帧率不标准(如23.976fps)会导致时间轴漂移。合成前先标准化帧率:
<BASH>
ffmpeg -i input.mp4 -vf "fps=24" -c:v libx264 -preset fast input_normalized.mp4
Whisper 中文识别准确率低
两个原因:模型太小(用 medium 替换 base),或背景音乐干扰。先做音频降噪:
<BASH>
ffmpeg -i input.mp4 -af "highpass=f=200,lowpass=f=3000,afftdn=nf=-25" -ar 16000 -ac 1 audio_clean.wav
批量处理中途失败
批量脚本里已内置断点续跑逻辑(检查输出文件是否存在),直接重新执行脚本即可,已完成的文件会自动跳过。
八、narrator-ai-cli + FFmpeg 自动化工作流的适用场景与局限
这套工作流的核心逻辑是:用 FFmpeg 处理本地计算密集型任务(字幕提取、关键帧抽取、视频合成),用 narrator-ai-cli 封装 API 调用密集型任务(文案生成、配音合成),两者通过文件系统交换数据,整条流水线可以被脚本驱动,也可以被 AI Agent 通过 Skill 文件直接调用。
批量脚本和定时任务配置完成后,日常生产只需要把素材放进 input 目录,其余全部自动完成。
参考资料
- narrator-ai-cli 项目:
git clone https://github.com/jieshuo-ai/narrator-ai-cli - FFmpeg 文档:ffmpeg.org/documentati…
- Whisper 模型:github.com/openai/whis…
- Radford et al., "Robust Speech Recognition via Large-Scale Weak Supervision", arXiv:2212.04356