从剧本到成片:用开源工具搭一条 AI 短剧流水线
做一条 5 秒视频是创作,做一集 3 分钟短剧是工程。两者的差别不在模型,在一致性:第 12 个镜头里的主角,得和第 1 个镜头是同一个人,背景得是同一个房间,光线得着同一个时辰。模型不会替你想这些,流程才会。
一、流水线全景
剧本/文案 ──► 分镜表 ──► 关键帧图像 ──► 图生视频 ──► 配音
(LLM) (结构化) (图像模型) (视频模型) (TTS)
│
成片 ◄── 剪辑合成 ◄── 字幕对齐 ◄── 对口型修正 ◄──────────┘
(FFmpeg) (ASR) (唇形模型)
七道工序,每一道都要留下可复现的中间产物:分镜表、参考图、每段视频的参数与种子、配音的分段音频、字幕的 SRT。做短剧最怕的是「第三集要改第一集的一个设定」——没有中间产物,你只能从头再拍一遍。
二、剧本与分镜:先把它变成结构化数据
不要让模型直接「写个剧本然后生成视频」,中间必须有一步是把自然语言压成结构化表格。本地跑一个 7B–32B 的模型就够用,具体部署看 Ollama 那篇。
{
"episode": 3,
"scenes": [
{"shot": 1, "duration": 5, "camera": "中景推近",
"desc": "女主在厨房切菜,窗外下雨",
"characters": ["女主"], "props": ["菜刀","砧板"],
"dialogue": ""},
{"shot": 2, "duration": 4, "camera": "特写",
"desc": "女主抬头看向窗外,表情变化",
"characters": ["女主"], "props": [],
"dialogue": "又下雨了。"}
]
}
几个关键字段别省:机位(决定提示词里的景别)、时长(决定帧数,5 秒 = 121 帧)、人物与道具(决定参考图要带哪些资产)。这份 JSON 就是整条流水线的主键,后面每一步都从它派生。
三、角色一致性:三样东西缺一不可
跨镜头一致是 AI 短剧真正的技术门槛。有效的手段只有三个,而且必须叠加:
- 资产库:每个角色固定 3–5 张正面/侧面/半身参考图,统一光线和背景,编号存好。生成时按编号引用,不靠文字描述。
- 角色微调:用那几张图训一个低秩适配器,十几次迭代就够。它锁的是「脸和气质」,不是具体姿势。
- 固定种子策略:同一场景内的镜头用同一组种子区间,跨场景换种子。这条最容易被忽略,但对连贯性的贡献比前两条加起来还大。
另外,图生视频时首帧的约束强度要调到 0.7–0.85。调到 1.0,画面几乎不动的死图;调到 0.5,人物脸开始漂。这个区间是靠试出来的,不是一个固定值。
四、图生视频:衔接靠尾帧,不靠后期
把每段 5 秒接起来,最容易出的问题是「跳」:镜头 A 的结尾和镜头 B 的开头,光不一样、人物站位不一样,观众一眼出戏。
解法是把上一段的最后一帧当成下一段的第一帧。这样至少在像素层面是连续的,模型会顺着这个状态往下推。配合「同场景同种子」,跳变能压到很小。
运动幅度用 shift(或等价参数)控制:数值小,画面安静适合对话戏;数值大,适合动作戏但容易崩形体。一集里不要全程用一个值。
五、配音:先把音频层做对
配音决定了「AI 感」的一半。四个硬要求:
- 参考音干净:10–30 秒、单人、无底噪无混响。带背景音乐的参考音会把人声和音乐一起克隆进去。
- 分段合成:按标点切 1–2 句一次,句间留 120–200 ms。整段一次合成,句尾必变调。
- 统一响度:成片 -16 LUFS。TTS 输出音量和真人素材差很多,不统一就会出现「一会儿响一会儿轻」。
- 固定音色:一集里只用一份参考音频。换参考 = 换人,观众立刻听出来。
六、对口型:只改嘴,还是整头重做
| 方案 | 效果 | 适用 | 代价 |
|---|---|---|---|
| 只重绘嘴部 | 唇形准确,画面其余不动 | 给已有素材换配音 | 要求原片头部运动不大 |
| 整头音频驱动 | 表情、眨眼、头动都对 | 单图生成口播 | 慢,且长镜头需要分块 |
短剧里我建议只做前者。因为视频段的时长只有 4–5 秒,头部运动幅度有限,只重绘嘴部就够;整头重做会把已经做好的构图和光影全部改掉,等于前面的工作白费。
顺序也要注意:先做响度归一再喂唇形模型。音频忽大忽小,唇形会跟着抖,这个问题九成的案例都是音频没预处理。
七、字幕:时间轴必须重新对齐
TTS 返回的时长是估算值,合成后的实际音频会有几十毫秒的偏差,短句看不出来,长句就明显对不上。正确做法是拿成品音频跑一次强制对齐(语音识别 + 时间戳),生成 SRT,而不是用 TTS 的时间戳。
断句也要按语义切,不要按字数切。中文 12–18 字一行,两行一屏,是最耐看的节奏。
八、批量调度:别用鼠标生产
一集 40 个镜头,每个镜头试 3 次才有一次可用,就是 120 次生成任务。手点是不可能的。
ComfyUI 提供 HTTP 接口,把工作流导出成接口格式的 JSON,用脚本改提示词和种子后提交,轮询完成状态,拉回结果。再加一层队列(Redis 或简单的文件队列都行),失败自动重试一次,再失败进死信队列人工看。
编排这一层可以交给 n8n:它负责定时触发、调用接口、把结果写进表格、出错发通知,具体玩法看 n8n 自建自动化工作流。这样你只需要在一张表里填剧本,剩下的交给机器过夜跑。
九、产能与成本模型
| 环节 | 单集耗时(24G 卡) | 说明 |
|---|---|---|
| 分镜与提示词 | 20 分钟 | 本地 LLM,可批量 |
| 关键帧图像(40 张) | 30 分钟 | 含挑图重生成 |
| 图生视频(40 段 × 3 次) | 8–12 小时 | 最大的瓶颈,过夜跑 |
| 配音 + 对齐 | 15 分钟 | CPU 也能跑 |
| 对口型 | 1–2 小时 | 只处理有台词的镜头 |
| 字幕与合成 | 20 分钟 | FFmpeg 批处理 |
也就是说:一台 24 GB 的机器,一晚上能出一集 3 分钟的成片,可用率大概三成(每 10 段视频挑 3 段)。要提高可用率,把力气花在分镜和参考图上,而不是反复换模型。
十、五个最常见的失败模式
- 角色变了:没做资产库,靠文字描述长相。文字描述跨镜头必崩。
- 镜头跳:没用尾帧续接,靠后期硬切。观众会明显感觉「换了个片场」。
- 嘴不对:音频没归一就直接喂唇形模型,或者拿 TTS 时间戳当字幕轴。
- 越跑越慢:显存碎片累积,跑到第 60 段效率只剩一半。每 30 段重启一次进程。
- 改不动:没留中间产物,客户说「第 3 集女主头发换个颜色」,只能重拍整集。






