Stable Diffusion 生成手册
基础结论
本地 Stable Diffusion WebUI 需要保持后端服务运行,Codex 通过 WebUI API 调用生成图片和视频。浏览器页面可以关闭,但启动 WebUI 的程序窗口不能关闭;否则 http://127.0.0.1:7860/sdapi/v1/ API 无法继续响应。
当前机器配置为 64GB 内存、约 24GB 显存,适合正常高显存工作流,不建议使用 lowvram 或 medvram。启动参数建议保留:
1 | --api --opt-sdp-attention |
其中 --api 是 Codex 调用 WebUI 的关键参数。
当前可用模型与插件
人像写实生成可优先使用:
1 | majicMIX realistic 麦橘写实_v7.safetensors |
AnimateDiff 运动模型推荐:
1 | v3_sd15_mm.ckpt |
备用稳定模型:
1 | mm_sd_v15_v2.ckpt |
SDXL 专用模型:
1 | mm_sdxl_v10_beta.ckpt |
注意:SD1.5 模型如 majicMIX realistic 应优先搭配 SD1.5 运动模型,不要混用 SDXL 运动模型。
文生图推荐流程
人像生成先把“脸、构图、光线、画面质量”定下来,再考虑动起来。示例负面提示词:
1 | (worst quality:2),(low quality:2),(normal quality:2),lowres,watermark |
majicMIX realistic v7 的基础写实人像参数可从下面开始:
1 | Sampler: Euler a |
WebUI 中文界面里,denoising_strength 对应 重绘幅度。
在文生图页面里,重绘幅度通常藏在:
1 | 文生图 -> 高分辨率修复 (Hires. fix) -> 重绘幅度 |
在图生图页面里,重绘幅度通常在主参数区直接显示。
文生视频还是图生视频
如果目标是人像成片质量,推荐:
1 | 文生图 -> 图生视频 -> 插帧 -> 必要时再放大 |
原因是人像视频最怕脸漂、衣服漂、背景漂。先文生图可以先确定人物身份和构图,再用图生视频让画面动起来,最终更像“这张图活了”。
直接文生视频适合快速找动作灵感,但人物一致性更难控制。
图生视频基础参数
以“女孩转头看向镜头笑,5 秒”为例,推荐从保守参数开始:
1 | Motion model: v3_sd15_mm.ckpt |
如果想直接生成更完整的 5 秒动作:
1 | Number of frames: 40 |
如果显存和速度允许,也可以提高到:
1 | Number of frames: 40 |
但实际操作里,更稳的方案通常是先生成低帧率视频,再插帧到 24fps。
Denoising Strength 怎么选
Denoising strength 越低,越保留原图;越高,动作和变化越大,但脸和身份更容易漂。
高清修复时:
1 | 0.05 - 0.20:极度保守,基本保留原图 |
图生视频时:
1 | 0.18 - 0.25:稳定优先,动作较小 |
如果想让人物运动幅度更大,优先逐步增加到 0.32 - 0.36,不要一开始就拉到 0.5 以上。
帧数、帧率与时长
视频时长由下面公式决定:
1 | 时长 = 总帧数 / FPS |
例如:
1 | 16 frames / 8 fps = 2 秒 |
真实生成时,不必一开始就直接生成 120 帧。更实用的做法是:
1 | 先生成 16-40 帧、8fps 的稳定视频 |
FILM 插帧参数
AnimateDiff 里的 Frame Interpolation 选 FILM,Interp X 填插帧倍数,不是直接填目标 fps。
换算方式:
1 | Interp X = 目标 FPS / 原始 FPS |
例如原始 8fps 想补到 24fps:
1 | 24 / 8 = 3 |
所以填写:
1 | Frame Interpolation: FILM |
常用建议:
1 | X = 2:轻量插帧 |
Closed Loop 怎么选
Closed loop 控制视频是否尝试首尾循环。
对“转头看镜头笑”这类有明确起点和终点的动作,推荐:
1 | Closed loop: N |
常见含义:
1 | N:不闭环,适合转头、看镜头、微笑、短动作 |
提高视频质量的顺序
建议每次只改一个关键变量,方便判断问题来源:
- 先确定一张高质量文生图。
- 用图生视频小参数试动作。
- 如果动作太小,逐步提高
denoising strength。 - 如果脸漂,降低
denoising strength,或缩短帧数。 - 如果不流畅,先保持低 fps 生成,再插帧到 24fps。
- 如果出现彩色噪点、雪花、画面碎裂,换运动模型或降低帧数、降低重绘幅度。
- 成片后再用 ffmpeg 或 WebUI 插件导出 MP4。
常见问题
为什么不要开脸部修复
脸部修复可能会把每一帧的人脸当作独立图片重新修,导致视频里脸不断变化。人像视频更看重帧间一致性,因此除非脸严重坏掉,否则不建议开。
为什么直接高帧率生成不一定更好
高帧数会显著增加生成压力,也更容易出现身份漂移和画面累计误差。先低帧率生成稳定动作,再插帧,通常比直接硬生成高帧率更稳。
为什么动作幅度不够
常见原因是 denoising strength 太低、提示词动作不明确,或者总帧数太短。可以尝试:
1 | slowly turns head toward camera |
并把 denoising strength 从 0.24 提到 0.30、0.34 逐步测试。
为什么动作没有按要求做
AnimateDiff 不是严格的动作引擎,更像是“让一张图在原构图附近动起来”。如果要求是大动作,例如:
1 | 坐在沙发上 -> 起身 -> 离开 |
但首帧是近景坐姿、腿脚不完整、画面里没有可站立和离开的空间,模型就很难按要求生成完整动作。它通常会倾向于保留原构图,只做轻微漂动;如果强行提高重绘幅度,又容易出现身体变形、背景糊掉、后半段崩坏。
参数上的矛盾是:
1 | denoising 低:人物稳定,但动作做不出来 |
正确做法是先让首帧适合动作:
1 | 全身或大半身 |
然后把动作拆成短段:
1 | 第一段:身体前倾,准备起身 |
更稳的控制方式是使用关键帧或姿态控制,例如 ControlNet OpenPose、Prompt Travel、或者输入真人起身视频做 video-to-video。只靠一句提示词,很难精确控制复杂人体动作。
分段短片怎么衔接
如果一张图无法直接完成完整动作,就把短片拆成多个小动作段。衔接原则是:
1 | 第一段视频 -> 提取最后一帧 -> 作为第二段图生视频的首图 -> 最后拼接视频 |
例如“坐着前倾 -> 起身”:
1 | 坐姿首图 |
在 WebUI 里主要仍然使用 图生图 + AnimateDiff。AnimateDiff 的 Video source / Video path 更偏 video-to-video 或帧序列控制,通常还需要配合 ControlNet,不是把两个成片智能衔接的按钮。
第二段 prompt 开头要明确继承上一段状态:
1 | same girl, same room, same clothes, leaning forward from sofa, then slowly stands up |
推荐分段参数:
1 | Segment 1: |
等每一段动作都稳定后,再统一插帧到 24fps。不要一开始就开 FILM。
保存 MP4 时还会不会有拆分帧
如果 AnimateDiff 保存格式只选:
1 | MP4 |
通常只会得到成品视频,不一定保留单帧 PNG。做分段短片时,末帧很重要,因此推荐保存格式选:
1 | MP4 + PNG |
或者:
1 | GIF + PNG |
PNG 会把每一帧单独保存出来,方便拿最后一张作为下一段图生视频首图。常见路径:
1 | outputs\img2img-images\AnimateDiff\日期\编号\最后一张.png |
如果已经只生成了 MP4,也可以用 ffmpeg 从 MP4 提取最后一帧,但它经过视频压缩,不如原始 PNG 稳。
为什么画面会漂
常见原因是重绘幅度太高、帧数太长、提示词过复杂,或者运动模型与底模不匹配。解决顺序:
1 | 降低 denoising strength |
为什么视频没有画面,只有灰色
如果导出的视频文件能被识别、有帧数、有时长,但播放时没有画面,要先判断是播放器问题还是帧本身异常。
排查结论示例:
1 | 文件不是空的 |
这说明不是播放器坏了,而是生成出来的帧本身就是纯灰图。
常见原因是底模和 AnimateDiff 运动模型不匹配。例如:
1 | Checkpoint: 麦橘超然majicFlus_v1 |
v3_sd15_mm.ckpt 是 SD1.5 AnimateDiff 运动模型,而 麦橘超然majicFlus_v1 是 Flux.1 D / 非 SD1.5 体系模型。两者结构不兼容,就可能输出全灰帧。
解决方法:
1 | 做 AnimateDiff 图生视频:切回 SD1.5 底模 |
先关闭 FILM 插帧,生成短视频确认有画面:
1 | Number of frames: 16 或 24 |
确认画面正常后,再打开:
1 | Frame Interpolation: FILM |
Stride 与 Overlap
WebUI 中文界面里常见翻译:
1 | 步幅 = Stride |
这两个是 AnimateDiff 的长视频上下文衔接参数,主要在 Number of frames > Context batch size 时才明显生效。短视频例如 16 frames + Context batch size 16 时,它们不是解决动作失败的主按钮。
Stride 步幅
Stride 控制模型在长视频里隔多远的帧也要保持一致。
1 | Stride 小:更稳,动作更保守 |
推荐:
1 | 普通人像、转头、微笑、起身:Stride = 1 |
Overlap 重叠
Overlap 控制长视频分段生成时,相邻片段之间有多少帧重叠,用来让片段衔接更顺。
1 | Overlap 大:前后更连贯,但动作可能更黏、更慢,耗时增加 |
当 Context batch size = 16 时:
1 | Overlap = -1:自动,通常等于 batch size / 4,也就是 4 |
人像视频推荐先固定:
1 | Context batch size: 16 |
如果动作太小,可以试:
1 | Stride: 2 |
但风险是脸漂、身体糊、后半段崩坏。实际调参优先级应是:
1 | 首帧构图 > denoising strength > Number of frames > 动作是否拆段 > Stride / Overlap |
majicMIX realistic v7 与 majicFlus_v1 怎么选
这两个模型不是简单的“谁绝对更好”,而是适合不同工作流。
1 | majicMIX realistic 麦橘写实_v7: |
实践建议:
1 | 想生成静态人像:可以优先试 麦橘超然majicFlus_v1 |
如果想利用 麦橘超然majicFlus_v1 的画质做视频,可以先用它生成高质量首帧,再交给专门的图生视频模型或工具,而不是强行套 SD1.5 AnimateDiff 运动模型。
推荐默认模板
写实人像图生视频可以从这个模板开始:
1 | Checkpoint: majicMIX realistic 麦橘写实_v7 |
核心原则:先稳,再动,再流畅。

