AI 视频生成实战全解:从提示词到后期的 7 个关键结论

2026-10-17

AI 视频生成实战全解:从提示词到后期的 7 个关键结论

用 AI 生成了 20 多条人物视频后,我发现一个残酷的真相:提示词写得再好,模型也只是在"尽力配合",而不是"精确执行"。

这篇把两周实测中 7 个最有价值的结论一次讲透:从提示词写作、首尾帧锚定,到后期晃动配方。每个结论都是"现象→原因→解法→验证"四段式,附可直接复制的参数。

先说结论:提示词只能引导,不能保证

这是最重要的认知,没有之一。

我用完全相同的提示词(含 no blinking 约束)生成了 v7 和 v8 两个版本: - v7:10 秒零眨眼,完美符合要求 - v8:一次自然眨眼,无视了约束

原因:扩散视频模型是概率采样,不是确定性渲染。提示词影响的是概率分布,不是硬约束。no blinking 只是把"眨眼"的概率压低,不是归零。

解法: - 重要镜头多抽几次,择优选用(我一般抽 3-4 条选最好的一条) - 10 秒长镜头切成三段,逐段挑选 - 真的需要精确控制(比如眨眼次数必须为零),换参数化路线:FaceFusion 的 eye_open_ratio、3D 虚拟人

验证:v7/v8 对照实测,同一提示词不同结果,确认是概率行为非 bug。

记住这句话,后面所有技巧都是在这个认知框架下的"概率优化",不是"精确控制"。

工具环境

工具 用途 说明
media.generate_video 视频生成 Muse 自有模型,每段约 10 秒,单消息上限 6 条
ffmpeg 后期处理 拼接、加晃动、统一分辨率
人物参考图 一致性 每段生成都要传,否则人物会漂移

模型实测规格(2026-10-16 实测): - 每段约 10 秒,自带按提示词生成的音频 bed(非静音) - 各段分辨率可能不一致(如 608×1376 vs 720×1280),拼接前必须统一 scale+crop - 人物参考图每段必传,一致性才稳


结论一:提示词通用骨架——六段式

现象:网上提示词教程五花八门,不知道按什么顺序写。

原因:没有结构化的写作框架,东拼西凑容易漏掉关键约束。

解法:用六段式骨架,顺序固定:

[人物] + [动作] + [环境] + [运镜] + [质感] + [否定约束]

举例(白墙自拍,实测通过):

[人物] 年轻亚洲男性,短发,穿白色T恤
[动作] 对着镜头微笑,头部保持静止
[环境] 纯白墙面背景,柔光
[运镜] 固定机位,中景
[质感] 电影感,浅景深
[否定约束] Avoid: mouth opening, sighing, camera shake, background change

验证:白墙自拍 4 段、轮渡复刻 2 条,均用此骨架一次通过。


结论二:首尾帧锚定——同一张图用两次的技巧

现象:图生视频时,想让首尾构图一致,但传两次相同图片路径会报错 duplicate input file path。

原因:模型做了输入去重校验,相同路径被判定为重复输入。

解法:把同一张图复制一份换文件名,分别作为首帧和尾帧传入:

cp 首帧.png 尾帧.png
# 顺序:[image(首帧), text, image(尾帧)]
media.generate_video([
    {"image": "首帧.png"},
    {"text": "人物保持静止,眨眼自然..."},
    {"image": "尾帧.png"}  # 同一张图,不同文件名
])

验证:咖啡馆 v6/v7/v8/v9、阳台 v1-v6 均用此法,构图锁定稳定、眨眼自然、无背景加料。

适用场景:图生视频保真度要求高的镜头;首尾构图需一致的短视频。


结论三:多余动作要单独点名——模型不会自己收敛

现象:v8 提示词锁了眼睛、头部、姿势,唯独没提嘴,结果模型加了约 1 秒的叹息。

原因:模型不会"举一反三"。你约束了 A、B、C,它不会自动推导出 D 也不该动。没提到的部位,模型认为是"自由发挥区"。

解法:每个可能异动的部位都要单独点名:

# v9 修正版(10 秒零叹息)
lips remain gently closed with no mouth movement
Avoid: mouth opening, sighing, lip movement

验证:v8(未约束嘴部)→ 有叹息;v9(单独约束嘴部)→ 10 秒零叹息。对照实测通过。

推广:眉毛、肩膀等部位如有异动,同理单独点名。写提示词时做"部位扫描":眼、眉、嘴、头、肩、手、身体、背景,逐个确认是否需要约束。


结论四:breathing 会被具象化成叹气

现象:v8 提示词写了 only soft breathing,结果得到约 1 秒的叹息。

原因:模型把 breathing 理解成"可见的呼吸动作"(叹气式呼气),而不是生理性的无感呼吸。英文词在模型的 latent space 里关联的是"动作",不是"状态"。

解法:三选一 1. 换成 breathing imperceptible(强调不可感知) 2. 直接删除,只留 holds still 3. Avoid 列表加 breathing motion

验证:阳台 v4/v5/v6 批量三版测试,改法后均无叹息。

教训:提示词里的每个词都要想一下"模型会怎么具象化它"。抽象词(breathing、natural、soft)是重灾区,能用具体描述就不用抽象词。


结论五:晃动后置——别让模型演手持

现象:想要 Live 实况的手持感,直接在提示词写 handheld camera,结果模型运镜漂移、背景加料,完全不可控。

原因:回到第一个结论——模型对运镜的控制是概率性的。手持晃动这种高频细节,模型根本做不到精确。

解法:生成时用 locked 相机只管保真,后期用 ffmpeg 加可控晃动:

# 配方:先放大 1.03 留余量 → 微旋转 → 动画裁剪窗口 → 回到原尺寸
# 672×1216 示例
ffmpeg -i input.mp4 -vf \
  "scale=690:1236,\
   rotate='0.0015*sin(2*PI*t*0.7)':fillcolor=black,\
   crop=672:1216:x='9+3*sin(2*PI*t*0.8)+1.5*sin(2*PI*t*2.17)':y='10+2.5*cos(2*PI*t*1.13)+1.2*cos(2*PI*t*2.71)'" \
  -c:a copy output_shake.mp4

关键细节: - 正弦频率用不成整数倍的组合(如 0.8/2.17),避免机械感 - 换分辨率按比例缩放振幅(832×992 已验证等比参数) - 先放大再裁剪,全程无黑边

验证:v7-shake、v9、阳台 v2/v3/v5 均验证通过——幅度频率精确可调、零漂移、模型无加料机会。

适用场景:AI 生成 Live 实况视频要手持感;模型运镜不可控、易漂移加料时。


结论六:多段拼接前必须统一分辨率

现象:4 段视频直接 ffmpeg concat,报错或画面跳动。

原因:各段分辨率不一致(实测:608×1376 vs 720×1280)。模型每段是独立采样的,不保证分辨率一致。

解法:拼接前统一 scale+crop 到同一尺寸:

# 先统一到 720×1280
for f in v1.mp4 v2.mp4 v3.mp4 v4.mp4; do
  ffmpeg -i $f -vf "scale=720:1280:force_original_aspect_ratio=increase,crop=720:1280" -c:a aac ${f%.mp4}_uniform.mp4
done

# 再拼接
ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp4

验证:白墙自拍 4 段拼接成片实测通过。


结论七:时长也只能引导——用 ffmpeg 精确截取

现象:v9 提示词写了 3 秒,模型给了 10 秒。

原因:同结论一,时长也是概率采样。模型有个"默认时长偏好"(约 10 秒),提示词的时长要求只是弱引导。

解法:接受 10 秒的默认值,用 ffmpeg 精确截取需要的片段:

# 从第 2 秒开始截 3 秒(无重编码,速度快)
ffmpeg -ss 2 -i input_10s.mp4 -t 3 -c copy output_3s.mp4

# 需要精确到帧时重编码(避免关键帧断裂)
ffmpeg -ss 2 -i input_10s.mp4 -t 3 -c:v libx264 -crf 18 -c:a aac output_3s.mp4

验证:v9 的 10 秒成片用 -ss 2 -t 3 截取,3 秒片段流畅无断裂。


总结

  1. 提示词只能引导,不能保证——这是所有技巧的认知基础,重要镜头多抽几次择优
  2. 六段式骨架:[人物]+[动作]+[环境]+[运镜]+[质感]+[否定约束],顺序固定不遗漏
  3. 首尾帧锚定:同一张图复制改名,绕过 duplicate 校验,构图锁定
  4. 多余动作单独点名:模型不会举一反三,没提到的部位就是自由发挥区
  5. 警惕抽象词:breathing 会被具象化成叹气,能用具体描述就不用抽象词
  6. 晃动后置:生成时锁死相机保真,后期 ffmpeg 加可控晃动,附可直接复制的配方
  7. 拼接前统一分辨率:各段分辨率可能不一致,先 scale+crop 再 concat

以上,全文完。

最后认识一下,我是 Liyu,一名 AI 实践爱好者,会不定期记录我的学习过程,期待你的关注和分享。

← 返回文章列表