Stable-Diffusion-Video2Video
Leonm99/Stable-Diffusion-Video2Video加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你花了几小时用 Stable Diffusion 生成了一张完美的赛博朋克风格插画,画面细节、色彩、光影都无可挑剔。然后你想:能不能让这段视频也变成同样的风格?
大多数人的第一反应是——逐帧处理。用 ffmpeg 把视频拆成几百帧,每帧都丢进 WebUI 生成,再拼回去。听起来可行,但实际做起来问题一堆:帧与帧之间风格不一致、动作连贯性被破坏、显存爆炸、处理时间以小时计……
Leonm99/Stable-Diffusion-Video2Video 正是为解决这个痛点而生:它是一个专门给 AUTOMATIC1111/stable-diffusion-webui(简称 A1111 WebUI)使用的视频风格迁移扩展脚本,核心逻辑是「vid2vid」——把视频→图片→再生成图片→拼回视频,用 Stable Diffusion 的 img2img 能力实现整段视频的风格化迁移。
A1111 WebUI 是 Stable Diffusion 生态中使用最广泛的图形化界面,支持丰富的扩展脚本
这个项目由开发者 Leonm99 创建,托管在 GitHub 上,采用 GPL-3.0 开源协议。项目仅有 62 颗 stars,代码规模不大(仅一个核心 Python 脚本 vid2vid.py,约 8700 字符),但解决的是 Stable Diffusion 视频应用领域的一个真实痛点。
从代码结构和文件列表来看,项目设计非常专注:只有一个核心脚本 vid2vid.py,README 文档详细说明了与 A1111 WebUI 的集成方式。开发者还在项目说明中坦诚地推荐用户关注另一个做得更好的替代项目 Filarius/video2video,展现了社区开发者的务实态度。
项目标签涵盖了 stable-diffusion、vid2vid、img2img、video、ffmpeg 等关键词,明确指向视频到视频的 AI 生成这一细分领域。2023 年 8 月,项目宣布停止维护(This Repo is now discontinued),原因是有其他人做出了更好的替代方案——这在开源社区中是常见且健康的演进路径。
项目的核心逻辑可以分为三个阶段,每个阶段都依赖 A1111 WebUI 提供的底层能力:
第一阶段:视频拆帧(dump_frames)
脚本调用 ffmpeg 将输入视频拆解为 PNG 序列帧,同时通过 scale 滤镜统一分辨率(对齐到 64 的倍数,因为 SD 的 VAE 和 UNet 架构要求输入尺寸为 64 的整数倍)。do_round() 函数负责这个尺寸对齐操作。
image_path = os.path.join(filepath, "temp_%05d.png")
cmd = ['ffmpeg', '-i', orig_path, '-vf', 'scale=' + str(x) + ':' + str(y), str(image_path)]
第二阶段:逐帧 img2img 生成
拆好的帧序列逐张传入 A1111 WebUI 的 img2img 管线。脚本利用了 A1111 暴露的 modules.scripts 扩展接口,直接注册为 WebUI 的扩展脚本(需将脚本放入 WebUI 的 scripts 文件夹并重启)。生成参数(提示词、采样器、CFG、步数等)通过 Gradio 界面配置,脚本负责批量处理逻辑。
第三阶段:视频合成(make_mp4)
生成完毕后,脚本再次调用 ffmpeg 将输出帧合成为 MP4。通过 ffprobe 读取原始视频的帧率信息,确保输出视频与输入视频保持相同的播放速度:
framerate = stdout.decode("utf-8")
cmd = ['ffmpeg', '-y', '-vcodec', 'png', '-r', '30',
'-start_number', '0', '-i', str(image_path),
'-c:v', 'libx264', '-pix_fmt', 'yuv420p',
'-crf', '17', '-preset', 'veryfast',
'-filter:v', 'fps=' + framerate, str(mp4_path)]
脚本内置了 Gradio 界面,允许用户在 A1111 WebUI 的界面中直接配置视频路径、输出分辨率、是否保留中间帧等参数。这是 A1111 扩展脚本的标准做法,让命令行参数的复杂性被友好的 Web 界面屏蔽。
Stable Diffusion 视频生成的核心挑战在于保持帧间一致性,项目通过 img2img 管线试图解决这一问题
从代码层面看,这个项目的架构非常清晰——轻量级胶水代码,而非独立的推理引擎:
| 维度 | 分析结果 |
|---|---|
| 架构类型 | 扩展脚本架构(非独立应用),依赖 A1111 WebUI 的插件系统 |
| 核心技术栈 | Python + ffmpeg + Gradio + Stable Diffusion(通过 A1111 暴露) |
| AI 框架 | Stable Diffusion(通过 modules.scripts 接口集成) |
| 代码规模 | ~8700 字符,单文件,约 250 行 |
| 代码质量 | 适中,结构清晰但缺乏单元测试 |
| 文档质量 | README 说明详细,包含完整安装步骤 |
| 测试覆盖 | 无测试文件 |
| 安全风险 | 无明显安全漏洞,依赖 A1111 的沙箱环境 |
关键依赖关系:
脚本通过 A1111 的内部模块(modules.scripts、modules.images、modules.processing、modules.shared 等)与其集成。这意味着它深度耦合了 A1111 的内部 API,后续 A1111 的更新可能导致兼容性问题——这可能是项目停止维护的原因之一。
vid2vid.py 复制到 A1111 WebUI 的 scripts 文件夹,重启 WebUI优点:上手门槛低,只要会用 A1111 WebUI 就能操作。 缺点:处理速度慢(取决于视频时长和 GPU 性能),且受限于 A1111 的会话状态管理。
项目 README 中推荐的 Filarius/video2video 是更活跃、维护更好的替代方案。此外,开源社区中还有以下同类工具值得关注:
尽管这个项目本身已停止维护,但它代表了一个重要的技术方向——将图像生成模型的能力扩展到视频领域。在 2023 年,这属于社区自发探索的典型代表:开发者用胶水代码将已有的图像生成能力拼装成视频工具。
这一探索路径后来被更成熟的技术所超越:
Leonm99 的项目是 Stable Diffusion 视频应用探索浪潮中的一个节点,它的「停止维护」本身就是这段技术演进的最佳注脚——不是失败,而是被更好的方案所超越。
项目基本信息
| 项目 | 内容 |
|---|---|
| 仓库 | Leonm99/Stable-Diffusion-Video2Video |
| Stars | 62 |
| 语言 | Python |
| 协议 | GPL-3.0 |
| 状态 | 已停止维护(2023年8月) |
| 核心依赖 | AUTOMATIC1111 WebUI + ffmpeg |
| 适用场景 | Stable Diffusion 用户的视频风格化尝试 |