WorkBuddy + 本地 ComfyUI Wan2.1 文生视频实战:从连续报错到成功出片的完整踩坑记录

WorkBuddy + 本地 ComfyUI Wan2.1 文生视频实战:从连续报错到成功出片的完整踩坑记录

在本地 MCP 链路跑通文生图后,下一个里程碑是文生视频。本文记录了用 WorkBuddy 操控本地 ComfyUI 的 Wan2.1 t2v 1.3B 模型生成"猫咪追球"4 秒视频的完整过程------从节点链路搭建、四个报错的逐一排查修复,到最终 174 秒成功出片。每个坑都有错误日志、根因分析和修复方案,可直接复用。

本系列持续更新中......

Comfy MCP 公测:把 Claude、Cursor、CodeX、Hermes 和 WorkBuddy 变成你的创意技术专家
Comfy Cloud MCP Server 抢先体验申请图文教程
WorkBuddy 接入 Comfy Cloud MCP 完整实录:从 DNS 污染到 31 个工具全部启用
WorkBuddy + 本地 Comfy MCP 实战:用自然语言调生成你的第一张 AI 图片
WorkBuddy 连接本地 ComfyUI:从零到出图的保姆级教程


目录


一、为什么视频生成是下一个里程碑

上一篇保姆级教程中,我们跑通了 WorkBuddy → MCP Server → ComfyUI 的完整链路,成功用 SDXL 生成了图片。但文生图只是起点------视频生成才是真正考验工作流复杂度的场景。

文生图 vs 文生视频的复杂度对比

维度 文生图 文生视频
节点数 7 个 8 个
模型链 1 个(Checkpoint) 3 个(T5 + 扩散模型 + VAE)
参数复杂度 低(steps/cfg/sampler) 高(steps/cfg/shift/num_frames/frame_rate)
生成时间 8-25 秒 2-5 分钟
显存需求 6-12 GB 12-20 GB
踩坑概率 低(主要是采样器选错) 高(模型格式/参数缺失/路径转义)

Wan2.1 是阿里通义万相的视频生成模型,1.3B 参数量适合 RTX 3090 24GB 显卡本地运行。ComfyUI-WanVideoWrapper 插件提供了完整的节点支持,但对模型格式和参数有严格要求------这正是我们踩坑的根源。


二、前置条件:模型与插件清单

2.1 必须安装的插件

插件 用途 仓库
ComfyUI-WanVideoWrapper Wan 视频生成核心节点 kijai/ComfyUI-WanVideoWrapper
ComfyUI-VideoHelperSuite 视频合成输出(VHS_VideoCombine) Kosinkadink/ComfyUI-VideoHelperSuite

安装提醒 :遵守外科手术式安装准则------手动 git clonecustom_nodes/,审查 requirements.txtpip install --no-deps。不要用管理器一键安装,不要让 Agent 通过 MCP 工具安装。

2.2 必须下载的模型

模型 文件名 放置位置 格式要求
视频扩散模型 wan2.1_t2v_1.3B_fp16.safetensors models/diffusion_models/ fp16
T5 文本编码器 UMT5-XXL bf16 版本 models/text_encoders/ 必须是 bf16 或 fp16,不能用 fp8 scaled
VAE 解码器 Wan2_1_VAE_bf16.safetensors models/vae/ bf16

2.3 T5 模型的选择(关键!)

这是本次测试最大的坑。LoadWanVideoT5TextEncoder 节点不支持 fp8 scaled 格式的 T5 模型

模型文件 格式 是否可用
umt5_xxl_fp8_e4m3fn_scaled.safetensors fp8 scaled ❌ 报错
umt5_xxl_fp16.safetensors fp16 ✅ 可用
大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors bf16 ✅ 实测可用

建议 :如果你的 text_encoders/ 目录下有多个 T5 模型,优先选文件名中带 bf16fp16不带 fp8scaled 的版本。本次实测使用的是 models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors

2.4 硬件要求

项目 最低要求 本次测试环境
GPU VRAM 12 GB RTX 3090 24GB
系统内存 32 GB 128 GB
磁盘空间 10 GB(模型+输出) NVMe SSD

三、Wan2.1 t2v 工作流架构

3.1 节点链路图

复制代码
LoadWanVideoT5TextEncoder ──→ WanVideoTextEncode ──→ WanVideoSampler ──→ WanVideoDecode ──→ VHS_VideoCombine
         │                         ↑                    ↑                   ↑
         │                         │                    │                   │
         │              WanVideoModelLoader ────────────┘                   │
         │                         │                                        │
         │              WanVideoEmptyEmbeds ──→ ┘                           │
         │                                                                  │
         └──────────── WanVideoVAELoader ──────────────────────────────────→┘

3.2 节点说明

序号 节点 作用 关键参数
1 LoadWanVideoT5TextEncoder 加载 UMT5-XXL 文本编码器 model_name, precision, load_device
2 WanVideoModelLoader 加载视频扩散模型 model, base_precision, quantization, load_device
3 WanVideoTextEncode 编码正面/负面提示词 positive_prompt, negative_prompt, force_offload
4 WanVideoEmptyEmbeds 创建空图像嵌入(文生视频用) width, height, num_frames
5 WanVideoVAELoader 加载 VAE 解码器 model_name, precision
6 WanVideoSampler 核心采样器 steps, cfg, shift, seed, scheduler
7 WanVideoDecode 将潜空间解码为视频帧 enable_vae_tiling, tile_x/y
8 VHS_VideoCombine 合成视频文件 frame_rate, format, filename_prefix

3.3 数据流说明

复制代码
T5 文本编码器(CPU offload)
    ↓ 编码
正面/负面提示词嵌入
    ↓
扩散模型(GPU) ← 空图像嵌入(832×480, 81帧)
    ↓ 采样 20 步
视频潜空间表示
    ↓ VAE 解码(分块)
81 帧图像序列
    ↓ 合成
MP4 视频文件(20fps, ~4秒)

显存策略

  • T5 编码器加载到 CPU(load_device: offload_device),编码完成后释放
  • 扩散模型加载到 GPU(load_device: main_device
  • force_offload: true 确保每个阶段完成后释放显存
  • VAE 解码启用分块(enable_vae_tiling: true),避免 OOM

四、踩坑 1:T5 文本编码器 fp8 scaled 不被支持

4.1 错误现象

提交工作流后,ComfyUI 控制台输出:

复制代码
model_type FLOW
!!! Exception during processing !!! Invalid T5 text encoder model, fp8 scaled is not supported by this node
Traceback (most recent call last):
  File "H:\PythonProjects3\Win_ComfyUI\execution.py", line 542, in execute
    ...
  File "H:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-WanVideoWrapper\nodes_model_loading.py", line 1655, in loadmodel
    raise ValueError("Invalid T5 text encoder model, fp8 scaled is not supported by this node")
ValueError: Invalid T5 text encoder model, fp8 scaled is not supported by this node

4.2 根因分析

LoadWanVideoT5TextEncoder 节点的源码(nodes_model_loading.py 第 1655 行)明确检查模型格式,如果检测到 fp8 + scaled,直接抛出异常。

这是因为 fp8 scaled 格式的 T5 模型在量化时做了缩放处理,WanVideoWrapper 的 T5 加载逻辑不支持这种反量化操作。

4.3 修复方案

将 T5 模型从 fp8 scaled 换成 bf16 版本

在 ComfyUI 界面中:

  1. 找到 LoadWanVideoT5TextEncoder 节点
  2. 点击 model_name 下拉框
  3. 选择 bf16 或 fp16 版本的 UMT5-XXL 模型

本次测试使用的替代模型:

复制代码
models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors

如果你没有这个模型,任何满足以下条件的 UMT5-XXL 都可以:

  • 文件名包含 bf16fp16
  • 文件名不包含 fp8scaled

4.4 如何检查本地有哪些 T5 模型

bash

复制代码
# 列出 text_encoders 目录下的 T5 模型
ls H:\PythonProjects3\Win_ComfyUI\models\text_encoders\ | grep -i t5

# 或者通过 ComfyUI API
curl -sS http://127.0.0.1:8188/object_info/LoadWanVideoT5TextEncoder | python -m json.tool

五、踩坑 2:WanVideoVAELoader 缺少 precision 参数

5.1 错误现象

修复 T5 问题后重新提交,ComfyUI 报错:

during processing !!!

复制代码
Traceback (most recent call last):
  ...
  File "H:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-WanVideoWrapper\nodes_model_loading.py", line XXX, in loadmodel
    ...
KeyError: 'precision'

5.2 根因分析

WanVideoVAELoader 节点有一个 precision 参数,文档中标记为 Optional(可选),但实际代码中必须显式提供,否则会报 KeyError。

这是 WanVideoWrapper 插件的一个已知问题------Optional 标记与实际行为不符。

5.3 修复方案

WanVideoVAELoader 节点中显式添加 precision 参数:

json

复制代码
{
  "class_type": "WanVideoVAELoader",
  "inputs": {
    "model_name": "Wan2_1_VAE_bf16.safetensors",
    "precision": "bf16"
  }
}

如果是通过 ComfyUI 界面操作,在节点上找到 precision 参数,选择 bf16

5.4 经验教训

WanVideoWrapper 插件的参数标记不可全信。如果某个参数标记为 Optional 但提交时报 KeyError,先试着显式提供该参数。已知需要显式提供的参数包括:

  • WanVideoVAELoader.precision
  • WanVideoSampler.riflex_freq_index(某些版本)

六、踩坑 3:Windows 路径反斜杠转义错误

6.1 错误现象

在 Python 脚本中构建工作流 JSON 时,模型路径包含反斜杠:

python

复制代码
# 错误写法
workflow["1"]["inputs"]["model_name"] = "models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors"

Python 报错:

复制代码
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \uXXXX escape

6.2 根因分析

Python 字符串中,反斜杠 \ 是转义字符。路径中的 \大 被解释为 Unicode 转义序列 \uXXXX 的开头,但 不是有效的 Unicode 转义,导致语法错误。

更准确地说,如果路径中恰好有 \u 开头的片段(如 models_eddy\umt5...),\u 会被 Python 解释为 Unicode 转义前缀。

6.3 修复方案

三种正确写法

python

复制代码
# 方法 1:使用 raw string(推荐)
workflow["1"]["inputs"]["model_name"] = r"models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors"

# 方法 2:双反斜杠
workflow["1"]["inputs"]["model_name"] = "models_eddy\\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors"

# 方法 3:使用正斜杠(ComfyUI 支持正斜杠)
workflow["1"]["inputs"]["model_name"] = "models_eddy/大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors"

6.4 经验教训

在 Python 中写 Windows 路径时,永远用 raw string r'...'正斜杠 /。不要用裸反斜杠 \,尤其是路径中包含中文字符时。


七、踩坑 4:MCP 工具索引未刷新

7.1 错误现象

重启 MCP 服务器后,WorkBuddy 调用 ToolSearch 搜索 comfyui-local 工具时,返回的工具列表是旧的或不完整。部分工具(如视频相关的新节点工具)无法被搜索到。

7.2 根因分析

WorkBuddy 在信任连接器时会缓存 MCP 工具索引。重启 MCP 服务器后,如果 ComfyUI 加载了新节点(或节点参数发生了变化),WorkBuddy 的缓存可能不会自动更新。

7.3 修复方案

方案 A:刷新 WorkBuddy 连接器(推荐)

  1. 打开 WorkBuddy → 右上角连接器管理
  2. 找到 comfyui-local
  3. 关闭开关
  4. 等待 3-5 秒
  5. 重新打开开关

方案 B:直接通过 REST API 提交工作流(绕过 MCP 工具)

如果方案 A 不生效,可以绕过 MCP 工具,直接用 Python 脚本通过 ComfyUI 的 REST API 提交工作流:

python

复制代码
import json
import urllib.request
import time

# 工作流 JSON
workflow = {
    "1": { "class_type": "LoadWanVideoT5TextEncoder", "inputs": { ... } },
    "2": { "class_type": "WanVideoModelLoader", "inputs": { ... } },
    # ... 完整工作流见第十节
}

# 提交工作流
data = json.dumps({"prompt": workflow}).encode("utf-8")
req = urllib.request.Request(
    "http://127.0.0.1:8188/prompt",
    data=data,
    headers={"Content-Type": "application/json"}
)
resp = json.loads(urllib.request.urlopen(req, timeout=30).read())
prompt_id = resp["prompt_id"]
print(f"Workflow submitted! prompt_id: {prompt_id}")

# 轮询等待完成
while True:
    time.sleep(5)
    history_req = urllib.request.Request(f"http://127.0.0.1:8188/history/{prompt_id}")
    history = json.loads(urllib.request.urlopen(history_req, timeout=30).read())
    if prompt_id in history:
        print("Video generation completed!")
        # 获取输出文件信息
        outputs = history[prompt_id]["outputs"]
        for node_id, node_output in outputs.items():
            if "videos" in node_output:
                for video in node_output["videos"]:
                    print(f"  Output: {video['filename']}")
        break
    print("Still generating...")

7.4 经验教训

MCP 工具索引是缓存机制,不是实时的。如果你在 ComfyUI 中安装了新插件或新节点,或者重启了 MCP 服务器,先尝试刷新连接器。如果紧急需要用新节点,直接走 REST API 更可靠。


八、成功出片:完整参数与结果

8.1 测试提示词

正面提示词

复制代码
a cute orange cat chasing a red ball across a green garden lawn, 
running playfully, dynamic motion, sunny day, vivid colors, 4k, high quality

负面提示词

复制代码
low quality, blurry, deformed, ugly, watermark, text, static, 
no motion, worst quality, jpeg artifacts

8.2 完整参数表

节点 参数 说明
LoadWanVideoT5TextEncoder model_name models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors bf16 格式
precision bf16
load_device offload_device T5 卸载到 CPU
WanVideoModelLoader model wan2.1_t2v_1.3B_fp16.safetensors 1.3B 参数量
base_precision bf16
quantization disabled 不量化
load_device main_device 加载到 GPU
WanVideoEmptyEmbeds width 832
height 480
num_frames 81 4n+1 规则(20fps × 4秒 + 1)
WanVideoVAELoader model_name Wan2_1_VAE_bf16.safetensors
precision bf16 必须显式提供
WanVideoSampler steps 20
cfg 3.5
shift 5.0
seed 42
scheduler euler
force_offload true 采样后释放显存
riflex_freq_index 0
WanVideoDecode enable_vae_tiling true 分块解码防 OOM
tile_x 256
tile_y 256
tile_stride_x 128
tile_stride_y 128
VHS_VideoCombine frame_rate 20
format video/h264-mp4
filename_prefix workbuddy_wan_cat_chasing_ball
save_output true

8.3 生成结果

项目
生成耗时 174 秒(约 2 分 54 秒)
输出文件 output/workbuddy_wan_cat_chasing_ball_00001.mp4
文件大小 1.3 MB
视频分辨率 832×480
帧数 81 帧
帧率 20 fps
视频时长 ~4 秒
格式 H.264 MP4

8.4 ComfyUI 控制台日志(关键部分)

复制代码
model_type FLOW
Using xformers attention in VAE
Loading T5 text encoder: models_eddy\大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors
T5 loaded to CPU (offload_device)
Encoding positive prompt...
Encoding negative prompt...
T5 encoding complete, offloading...
Loading diffusion model: wan2.1_t2v_1.3B_fp16.safetensors
Model loaded to GPU (main_device)
Sampling: 100%|████████████| 20/20 [02:42<00:00, 8.10s/it]
Sampling complete, offloading model...
Loading VAE: Wan2_1_VAE_bf16.safetensors
VAE decoding with tiling (256x256, stride 128)...
VAE decode complete
Saving video: workbuddy_wan_cat_chasing_ball_00001.mp4
Prompt executed in 174.21 seconds

8.5 四次踩坑到成功的时间线

阶段 耗时 事件 状态
工作流构建 ~10 分钟 搭建 8 节点链路
踩坑 1 ~5 分钟 T5 fp8 scaled 报错 → 换 bf16 ✅ 修复
踩坑 2 ~3 分钟 VAE precision 缺失 → 显式添加 ✅ 修复
踩坑 3 ~2 分钟 Python 路径转义 → raw string ✅ 修复
踩坑 4 ~5 分钟 MCP 工具索引未刷新 → 走 REST API ✅ 绕过
生成执行 174 秒 猫咪追球视频成功出片 ✅ 成功

九、性能分析与优化建议

9.1 生成时间分解

基于 ComfyUI 日志的 174 秒耗时分解:

阶段 耗时 占比 说明
T5 文本编码 ~15 秒 9% CPU 上运行,包括加载和编码
模型加载到 GPU ~5 秒 3% 1.3B 模型从内存到显存
采样 20 步 ~162 秒 93% 每步约 8.1 秒
VAE 解码 ~5 秒 3% 分块解码 81 帧
视频合成 ~2 秒 1% ffmpeg 编码 MP4

结论:采样阶段占 93% 的时间,这是 RTX 3090 跑 1.3B 模型的瓶颈。要加速只能减少步数或降低分辨率。

9.2 参数调优矩阵

目标 参数调整 预期效果 风险
更快生成 steps: 20 → 15 ~130 秒(-25%) 质量略降
更快生成 num_frames: 81 → 65 ~140 秒(-20%) 视频更短(3.2 秒)
更快生成 resolution: 832×480 → 624×352 ~100 秒(-43%) 分辨率低
更高质量 steps: 20 → 30 ~260 秒(+50%) 质量提升明显
更长视频 num_frames: 81 → 161 ~350 秒(+100%) 8 秒视频,显存压力增大
更高分辨率 832×480 → 1280×720 ~400 秒(+130%) 可能 OOM

9.3 显存优化策略

RTX 3090 24GB 运行 1.3B 模型的显存管理:

策略 设置 节省显存 副作用
T5 offload load_device: offload_device ~6 GB T5 编码慢(CPU 上跑)
force_offload true 采样后释放 每阶段间有切换延迟
VAE 分块 enable_vae_tiling: true ~4 GB 解码速度略降
模型精度 bf16 基础
量化 fp8_e4m3fn ~3 GB 质量略降

1.3B 模型不需要量化。24GB 显存足以跑 bf16 精度。量化主要针对 14B 模型(如 Wan2.2 Animate)。

9.4 帧数规则

Wan2.1 的 num_frames 必须满足 4n+1 规则(n 为正整数):

帧数 时长(@20fps) n 值
17 0.85 秒 4
33 1.65 秒 8
49 2.45 秒 12
65 3.25 秒 16
81 4.05 秒 20
97 4.85 秒 24
121 6.05 秒 30
161 8.05 秒 40

如果输入不满足 4n+1,模型会自动取最近的合法值,但最好直接输入正确值。


十、完整工作流 JSON(可直接复用)

以下是实测成功的完整工作流,修改提示词后可直接通过 ComfyUI API 提交:

json

复制代码
{
  "1": {
    "class_type": "LoadWanVideoT5TextEncoder",
    "inputs": {
      "model_name": "models_eddy/大佬_t5_umt5-xxl-enc-bf16_fully_uncensored.safetensors",
      "precision": "bf16",
      "load_device": "offload_device"
    }
  },
  "2": {
    "class_type": "WanVideoModelLoader",
    "inputs": {
      "model": "wan2.1_t2v_1.3B_fp16.safetensors",
      "base_precision": "bf16",
      "quantization": "disabled",
      "load_device": "main_device"
    }
  },
  "3": {
    "class_type": "WanVideoTextEncode",
    "inputs": {
      "positive_prompt": "a cute orange cat chasing a red ball across a green garden lawn, running playfully, dynamic motion, sunny day, vivid colors, 4k, high quality",
      "negative_prompt": "low quality, blurry, deformed, ugly, watermark, text, static, no motion, worst quality, jpeg artifacts",
      "t5": ["1", 0],
      "force_offload": true,
      "model_to_offload": ["2", 0]
    }
  },
  "4": {
    "class_type": "WanVideoEmptyEmbeds",
    "inputs": {
      "width": 832,
      "height": 480,
      "num_frames": 81
    }
  },
  "5": {
    "class_type": "WanVideoVAELoader",
    "inputs": {
      "model_name": "Wan2_1_VAE_bf16.safetensors",
      "precision": "bf16"
    }
  },
  "6": {
    "class_type": "WanVideoSampler",
    "inputs": {
      "model": ["2", 0],
      "image_embeds": ["4", 0],
      "text_embeds": ["3", 0],
      "steps": 20,
      "cfg": 3.5,
      "shift": 5.0,
      "seed": 42,
      "force_offload": true,
      "scheduler": "euler",
      "riflex_freq_index": 0
    }
  },
  "7": {
    "class_type": "WanVideoDecode",
    "inputs": {
      "vae": ["5", 0],
      "samples": ["6", 0],
      "enable_vae_tiling": true,
      "tile_x": 256,
      "tile_y": 256,
      "tile_stride_x": 128,
      "tile_stride_y": 128
    }
  },
  "8": {
    "class_type": "VHS_VideoCombine",
    "inputs": {
      "images": ["7", 0],
      "frame_rate": 20,
      "loop_count": 0,
      "filename_prefix": "wan_video_output",
      "format": "video/h264-mp4",
      "pingpong": false,
      "save_output": true
    }
  }
}

提交方式

bash

复制代码
# 方法 1:通过 WorkBuddy 对话
# 直接告诉 WorkBuddy:"用 Wan2.1 生成一段猫咪追球的 4 秒视频"

# 方法 2:通过 ComfyUI 界面
# 把 JSON 导入 ComfyUI(拖拽 JSON 文件到界面),修改提示词,点 Queue Prompt

# 方法 3:通过 REST API(Python 脚本)
import json, urllib.request, time

workflow = { ... }  # 上面的 JSON

data = json.dumps({"prompt": workflow}).encode("utf-8")
req = urllib.request.Request(
    "http://127.0.0.1:8188/prompt",
    data=data,
    headers={"Content-Type": "application/json"}
)
resp = json.loads(urllib.request.urlopen(req, timeout=30).read())
prompt_id = resp["prompt_id"]
print(f"Submitted! prompt_id: {prompt_id}")

# 轮询等待
while True:
    time.sleep(10)
    h = json.loads(urllib.request.urlopen(f"http://127.0.0.1:8188/history/{prompt_id}").read())
    if prompt_id in h:
        print("Done!")
        break
    print("Generating...")

十一、常见问题速查表

11.1 模型相关

报错 根因 修复
Invalid T5 text encoder model, fp8 scaled is not supported T5 模型是 fp8 scaled 格式 换 bf16 或 fp16 版本的 UMT5-XXL
KeyError: 'precision'(VAE 节点) VAE precision 参数未显式提供 在 WanVideoVAELoader 中添加 precision: bf16
FileNotFoundError: wan2.1_t2v_1.3B_fp16.safetensors 模型文件不在正确目录 检查 models/diffusion_models/ 目录
CUDA out of memory 显存不足 启用 T5 offload + VAE tiling,或降低分辨率/帧数

11.2 路径相关

报错 根因 修复
SyntaxError: (unicode error) 'unicodeescape' Python 路径中 \u 被转义 用 raw string r'...' 或正斜杠 /
model not found 但文件确实存在 路径大小写不匹配 Windows 不区分大小写但 ComfyUI 可能区分,确保完全匹配

11.3 生成相关

问题 可能原因 解决方案
视频全是静态画面 提示词缺少动态描述 添加 dynamic motion, running, flowing 等动态词
视频模糊 步数太少或分辨率太低 steps 增加到 25-30,或提高分辨率
视频有闪烁 VAE 解码问题 确保 enable_vae_tiling: true
生成极慢(>5 分钟) T5 未 offload 或模型在 CPU 上跑 检查 load_device 设置
OOM 崩溃 显存不够 降帧数/分辨率,启用所有 offload 策略

11.4 连接相关

问题 解决方案
WorkBuddy 找不到视频工具 刷新连接器:关闭 comfyui-local 开关 → 等 5 秒 → 重新打开
MCP 服务器工具列表过期 重启 MCP 服务器 + 刷新 WorkBuddy 连接器
提交后无响应 检查 ComfyUI 是否在线:curl http://127.0.0.1:8188/system_stats

十二、从文生视频到图生视频的扩展路径

12.1 可用的 Wan 视频模型

除了本次测试的 wan2.1_t2v_1.3B(文生视频),本地还有以下 Wan 模型:

模型 功能 参数量 显存需求 典型耗时
wan2.1_t2v_1.3B_fp16 文生视频 1.3B ~12 GB 3 分钟
Wan2_2-Animate-14B_fp8_e4m3fn_scaled_KJ 图生视频/动作迁移 14B ~20 GB 10-30 分钟
Wan2_2-Animate-14B-Q4_K_S.gguf 图生视频(GGUF 量化) 14B ~16 GB 10-30 分钟
Wan2.2-Fun-A14B-Control_HighNoise/LowNoise-Q5_K_S.gguf 控制生成 14B ~18 GB 15-40 分钟

12.2 图生视频的工作流差异

文生视频用 WanVideoEmptyEmbeds(空嵌入),图生视频需要:

复制代码
LoadImage → WanVideoImageEmbeds → WanVideoSampler → ...

关键区别:

  • WanVideoImageEmbeds 替代 WanVideoEmptyEmbeds
  • 需要提供参考图片
  • 通常还需要参考视频(动作迁移场景)
  • 14B 模型必须启用 block swap(blocks_to_swap: 20-35

12.3 通过 WorkBuddy 调用已有工作流

你本地保存了多个视频相关工作流。通过 WorkBuddy 可以直接调用:

"列出我本地 ComfyUI 的所有视频相关工作流"

常见工作流:

文件 功能
video_wan2_2_14B_animate.json Wan2.2 动作迁移
Wan-Animate【动作迁移】换人-高质量+高细节.json 高质量换人动画
video_kandinsky5_i2v.json Kandinsky 图生视频

附录:四个踩坑的修复对照表

# 报错关键词 根因 修复 修复耗时
1 fp8 scaled is not supported T5 模型格式不支持 换 bf16 版本 UMT5-XXL 5 分钟
2 KeyError: 'precision' VAE 参数未显式提供 添加 precision: bf16 3 分钟
3 unicodeescape codec error Python 路径转义 用 raw string r'...' 2 分钟
4 MCP 工具索引过期 WorkBuddy 缓存未刷新 刷新连接器 / 走 REST API 5 分钟

结语

从文生图到文生视频,复杂度上了一个台阶。本次测试的四个坑涵盖了三个层面:

  1. 模型层面:T5 编码器格式不兼容(fp8 scaled → bf16)
  2. 参数层面:VAE precision 参数的 Optional 标记与实际行为不符
  3. 工程层面:Python 路径转义 + MCP 工具索引缓存

每个坑都不难修,但如果你不知道根因,可能会花几个小时排查。希望这篇文章能帮你跳过这些坑,直接从第一次提交就成功出片。

关键要点

  1. T5 模型必须用 bf16 或 fp16,不能用 fp8 scaled
  2. WanVideoVAELoader 的 precision 参数必须显式提供
  3. Python 中写 Windows 路径用 raw string 或正斜杠
  4. MCP 工具索引过期时,直接走 REST API 更可靠
  5. 1.3B 模型 81 帧 20 步在 RTX 3090 上约 3 分钟出片

参考链接


本文基于 2026-07-03 在 Windows 11 + RTX 3090 24GB + ComfyUI v0.27.0 + Wan2.1 t2v 1.3B 环境下的实际测试编写。

相关推荐
huangjiazhi_1 小时前
Python3.14编写文件服务器
python
2zcode1 小时前
免费开源项目文档:基于HSV颜色空间和卷积神经网络的交通标志识别系统设计与实现
人工智能·深度学习·cnn
郭梧悠1 小时前
算法:有效的括号
python·算法·leetcode
佛珠散了一地2 小时前
ONNX Runtime GPU 推理配置指南
python
德昂信息dataondemand2 小时前
如何评估BI项目的价值与效益
大数据·人工智能
星马梦缘2 小时前
机器学习与模式识别 第八章 MAP与偏方差 模拟卷及答案
人工智能·机器学习·map·岭回归·mle·双重下降
liangshanbo12152 小时前
大模型混合精度训练:原理、选型与实战笔记
人工智能·深度学习
技术小黑2 小时前
CNN算法实战系列08 | ResNeXt-50算法实战与猴痘病识别
人工智能·算法·cnn
四川国阜传动设备有限公司2 小时前
如何根据电机功率正确计算减速机输出扭矩?
人工智能·搜索引擎