ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ComfyUI-WanVideoWrapper 的 WanVideo 视频生成完整指南:从装到出片一次解决 6 个卡点

ComfyUI-WanVideoWrapper 的 WanVideo 视频生成完整指南:从装到出片一次解决 6 个卡点

ComfyUI-WanVideoWrapper 的 WanVideo 视频生成完整指南:从装到出片一次解决 6 个卡点

【免费下载链接】ComfyUI-WanVideoWrapper项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper

ComfyUI-WanVideoWrapper 是 ComfyUI 上的 WanVideo 视频生成节点包,覆盖模型加载、采样、显存管理、上下文窗口长视频四类节点,内置 HuMo、VACE、ControlNet 等数十种扩展。本文按"先跑通、卡住自救"的路径走一遍:最短路径出片、显存三开关、报错原文速查和两个最小案例。

先验证你的显卡带不带得动:基线对照表

所有数据均取自仓库 readme.md 与 requirements.txt 原文,没有实测数据的地方以仓库 README 为准。

指标最低要求推荐值依据
GPU 显存8GB(1.3B 模型 + block swap)16GB(14B 模型)README 实测:1.3B T2V 生成 1025 帧窗口视频显存低于 5GB;14B 跑 512x512x81、offload 20/40 blocks 约 16GB
PyTorch任意 CUDA 版> 2.7.0nodes_model_loading.py 中WanVideoTorchCompileSettings的 DESCRIPTION 写明 "Requires Triton and torch > 2.7.0 is recommended"
Python 环境跟随 ComfyUI 运行时ComfyUI 自带环境README Installation 一节:依赖直接装进 ComfyUI 的 Python,portable 版用python_embeded
attention 后端sdpa(无需额外安装)按需选 flash_attn_2 / sageattnnodes_model_loading.py 第 39-40 行attention_modes列表,WanVideoModelLoader默认sdpa

依赖版本下限(requirements.txt 原文):

依赖包版本下限用途
diffusers>=0.33.0调度器基础设施
accelerate>=1.2.1显存 offload 机制
peft>=0.17.0LoRA 加载
gguf>=0.17.1GGUF 量化模型支持
sentencepiece>=0.2.0T5 分词
ftfy / einops / protobuf / pyloudnorm / opencv-python / scipy无下限文本、音频、图像处理

⚠️ 依赖必须装进 ComfyUI 的 Python。装进系统全局 Python 后,重启 ComfyUI 仍会报ModuleNotFoundError,这是第一高频问题。

跑通最短路径:从 clone 到第一个 mp4

第一步:装插件和依赖

cd ComfyUI/custom_nodes git clone https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper pip install -r ComfyUI/custom_nodes/ComfyUI-WanVideoWrapper/requirements.txt

portable(Windows 免安装)版用内置 Python,路径见 readme.md Installation 一节:

python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-WanVideoWrapper\requirements.txt

应该看到什么:clone 后custom_nodes/下多出ComfyUI-WanVideoWrapper目录;pip 末尾打印Successfully installed ...。判定标准:装完后pip list中上述 5 个带下限的包版本号不低于下限即通过;低于下限用pip install --upgrade 包名补齐。

入口init.py 的加载规则值得知道:nodes、nodes_sampler、nodes_model_loading、nodes_utility、cache_methods五个必需模块,任何一个导入失败都会直接抛异常阻断启动;其余几十个扩展模块(HuMo、FlashVSR、ATI 等)失败只打印WanVideoWrapper WARNING: {模块名} nodes not available警告,不阻断核心流程。所以"某个扩展节点不见了"通常是该模块缺依赖,不是插件坏掉。

第二步:四个模型文件放进对应目录

目录由 ComfyUI 的folder_paths机制固定(readme.md Models 一节),放错目录下拉框里选不到:

模型放置目录备注
UMT5 文本编码器ComfyUI/models/text_encodersnodes_model_loading.py 第 1967 行get_filename_list("text_encoders")
CLIP visionComfyUI/models/clip_visionI2V 必需;nodes_model_loading.py 第 2080 行同时兼容旧式放在 text_encoders 的布局
Wan 主模型(Transformer)ComfyUI/models/diffusion_models.safetensors与.gguf均支持
VAEComfyUI/models/vae视频解码

关于 GGUF:nodes_model_loading.py 第 53 行把unet_gguf键挂到diffusion_models目录扫描,README 也写明 "GGUF models can now be loaded in the main model loader as well"。也就是说.gguf量化文件直接放进diffusion_models/,WanVideoModelLoader就能选中,小显存卡靠量化版省显存。

验证文件完整性:

ls -lh ComfyUI/models/diffusion_models ComfyUI/models/text_encoders

应该看到什么:主模型 GB 量级、文本编码器数 GB 量级。判定标准:0 字节或几十 KB 的文件就是下载中断,重下即可,别指望运行时才发现问题。README 中作者个人推荐 fp8 scaled 版模型(显存占用更低),对应仓库地址在 README Models 一节。

第三步:导入官方示例工作流,出第一个视频

仓库自带 40 多份可导入工作流,按模型规模从小到大起步:

ls example_workflows | grep 1_3B

应该看到什么:wanvideo_1_3B_EchoShot_example.json、wanvideo_1_3B_FlashVSR_upscale_example.json等文件名。判定标准:把选中的 JSON 拖进画布后,每个 loader 节点的下拉框都能选到模型、连线完整无红框,即可以 Queue Prompt。预期输出:ComfyUI 日志滚动采样进度条,结束后ComfyUI/output/出现 mp4。

核心节点的默认参数(源码可查,出问题先对照):

节点关键参数默认值出处
WanVideoModelLoaderbase_precision=bf16、load_device=offload_device、attention_mode=sdpanodes_model_loading.py 第 1084-1090 行
WanVideoSamplersteps=30、cfg=6.0、shift=5.0、scheduler=unipc、force_offload=Truenodes_sampler.py 第 42-47 行
WanVideoImageToVideoEncodewidth=832、height=480、num_frames=81nodes.py 第 989-991 行
WanVideoEmptyEmbeds(T2V)width=832、height=480、num_frames=81nodes.py 第 1415-1417 行

load_device的 tooltip 明确提示:大模型不要选main_device,除非你有 48GB+ 显存;num_frames的步长为 4,即帧数必须满足 4n+1。

显存爆掉时:三个 offload 开关和实测数字

WanVideoWrapper 提供两种互斥的 offload 机制(loadmodel里有 assert:两者同时接入会直接报错 "Can't use both block_swap_args and vram_management_args at the same time"),外加一个弥补速度的预取开关:

开关位置与取值源码/README 依据
blocks_to_swapWanVideoBlockSwap,默认 20,范围 0-48;14B 共 40 blocks,1.3B/5B 共 30 blocks,LongCat 为 48nodes_model_loading.py 第 299 行 tooltip
prefetch_blocks默认 0,官方建议 1第 306 行 tooltip:"1 is usually enough to offset speed loss from block swapping"
offload_percentWanVideoVRAMManagement,默认 1.0,范围 0.0-1.0;比 block swap 更省显存但更慢第 324-331 行

调参流程:跑一次,用nvidia-smi记录显存峰值,再决定 swap 多少 blocks。

nvidia-smi

应该看到什么:采样期间Memory-Usage的占用数字。判定标准:峰值距离显卡总显存留出 1-2GB 余量即安全;OOM 就调大blocks_to_swap,每加 1 个 block 观察一次。

两个容易忽略的显存来源:

  • 未合并的 LoRA。README "Update notification" 一节说明:新版 LoRA 权重以 buffer 形式挂到对应 block 上,遵循 block swap;但如果你没用 block swap,LoRA 会全部常驻显存,比旧版更吃显存。README 给了具体算例:1GB 未合并 LoRA + 14B 模型 swap 20 blocks 时,单 block 增大约 25MB,总占用多 500MB,补偿方法是多 swap 2 个 blocks。
  • GGUF 模型的两个硬限制:quantization必须为disabled(否则报 "Quantization should be disabled when loading GGUF models."),且不支持 LoRA merge(否则报 "GGUF models do not support LoRA merging, please disable merge_loras in the LoRA select node."),这两条在 nodes_model_loading.py 第 1132-1137 行可直接查。

报错时先查这三处:报错原文速查

⚠️ 判定优先级:先看日志有没有红色 Traceback → 没有再看下拉框缺不缺模型 → 都没有再看是不是运行时 OOM。三处都排查完,多数问题就能定位。

报错现象或关键字可能原因处理动作
WanVideoWrapper WARNING: HuMo nodes not available: No module named 'xxx'(模块名随警告变化)该可选扩展模块的依赖缺失,导入被跳过按警告里的模块名补装对应依赖;核心 T2V/I2V 工作流不受影响,见init.py 第 62-66 行
WARNING: Found 1 other WanVideoWrapper directoriescustom_nodes下存在多份插件拷贝,节点可能冲突只保留一份目录,删掉其余拷贝后重启 ComfyUI;警告来源init.py 第 5 行
Can't import SageAttention: ...选了 sageattn 系 attention 模式但没装 sageattention 库改回attention_mode=sdpa,或补装 sageattention;来源 nodes_model_loading.py 第 1124-1128 行
VAE is required for image encoding./T5 encoder is required for text encoding.I2V/T2V 节点没接 VAE 或 T5 输入在WanVideoImageToVideoEncode/WanVideoTextEncode的 optional 端口接上对应 loader;来源 nodes.py 第 310、1023 行
start_step must be less than end_step采样起止步数填反或相等交换或重设start_step/end_step;来源 wanvideo/schedulers/init.py 第 178 行
更新插件后,新尺寸首跑显存异常飙高,重跑一次就正常旧 triton 编译缓存(README 指出主要在 Windows 出现)删除C:\Users\<username>\.triton与C:\Users\<username>\AppData\Local\Temp\torchinductor_<username>两个目录内容后重跑;README "Unrelated other VRAM issue" 一节
模型代码更新后旧工作流显存变大未合并 LoRA 改为 buffer 挂载,不用 block swap 时显存上升接入 WanVideoBlockSwap;README 给出 +500MB 算例(见上文)

两个最小案例:说话视频与长视频分段

案例一:一张图 + 一段音频,出说话人视频

输入:一张人物图(可用仓库自带 example_workflows/example_inputs/human.png)和一段音频。

关键步骤:

  1. 导入官方示例 example_workflows/wanvideo_2_1_14B_HuMo_example_01.json,节点实现在 HuMo/nodes.py
  2. 确认 HuMo 节点的图像、音频输入已连接;音频编码由 HuMo/audio_proj.py 完成,工作流内已接好
  3. Queue Prompt

预期结果:输出与音频时长一致的 mp4,口型与发音对齐。判定标准:视频时长 ≈ 音频时长;若口型不同步,先查音频采样率与帧率设置,不要怀疑模型。

案例二:1025 帧长视频,用上下文窗口分段生成

输入:1.3B T2V 模型 + 长 prompt。

关键步骤:

  1. 在 nodes.py 的WanVideoContextOptions(第 1894 行)节点设置分段:默认context_frames=81、context_stride=4、context_overlap=16(注意 tooltip 提示 latent 空间 4 帧合 1,填的是像素帧数)
  2. 把context_options接入WanVideoSampler的context_options端口,num_frames直接填 1025
  3. 分段与融合逻辑在 context_windows/context.py

预期结果:README "Context window test" 一节的实测口径——1.3B T2V 模型、窗口 81 帧、重叠 16 帧,生成 1025 帧显存低于 5GB,RTX 5090 上耗时 10 分钟。判定标准:总帧数为 1025 且分段融合处无明显跳变。

三条反直觉经验,以及下一步往哪走

1. 多数人的假设:显存不够就降分辨率、减帧数。实际做法:先保持完整参数,调大blocks_to_swap并把prefetch_blocks设为 1,速度损失基本被预取抵消。仓库内的依据:README 实测 14B 模型 512x512x81、offload 20/40 blocks 约 16GB;nodes_model_loading.py 第 306 行 prefetch 的官方 tooltip。

2. 多数人的假设:长视频就该把num_frames拉大硬跑。实际做法:用上下文窗口分段生成,帧数直接填 1025 也不爆显存。仓库内的依据:README Context window test 实测 1025 帧 < 5GB;context_windows/context.py 的滑动窗口与融合实现。

3. 多数人的假设:TeaCache 阈值越小跳步越少、结果越稳。实际做法:新版阈值是旧版的 10 倍,经验区间 0.25-0.30,阈值过低反而会跳过早期步、破坏运动连贯性。仓库内的依据:README "TeaCache" 一节明确写 "with the new version the threshold values should be 10x higher" 和 "Range of 0.25-0.30 seems good"。

至此,装环境、放模型、出片、显存调参、报错定位的主干路径已经走完,速查表建议留在手边。下一步两个深入方向:控制类玩法看 example_workflows/ 里的 VACE、Fun-Control、ReCamMaster 系列工作流;想改采样与 VRAM 逻辑,读 wanvideo/schedulers/ 与 wanvideo/modules/model.py 的调度器和模型实现。

【免费下载链接】ComfyUI-WanVideoWrapper项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表