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 clone 到 custom_nodes/,审查 requirements.txt,pip 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 模型,优先选文件名中带 bf16 或 fp16 且不带 fp8 和 scaled 的版本。本次实测使用的是 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 都可以:

  • 文件名包含 bf16 或 fp16
  • 文件名不包含 fp8 和 scaled

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 环境下的实际测试编写。

相关推荐
匠测AI说15 小时前
AI for Testing 提效实战·测试设计(二):让 AI 按等价类 + 边界值把用例补全
人工智能·测试覆盖率
CHEEVEN_QY15 小时前
液冷板热阻计算与流阻优化的实战方法
人工智能·算法·机器学习
李航198315 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
能源革命15 小时前
AI 日报 · 2026-10-03
人工智能
hahaha601616 小时前
色彩恒常性概述
人工智能·嵌入式硬件·数码相机·计算机视觉
FL162386312916 小时前
无人机视角海边沙滩垃圾检测数据集VOC+YOLO格式603张3类别
人工智能·yolo
Zguigo16 小时前
【CUDA6】CUDA Stream 是什么,为什么 CUDA 是异步执行,如何正确测量 GPU 时间以及多个任务如何重叠执行
人工智能·pytorch·深度学习
沙漠之主16 小时前
Python 教学设计资料:从入门到实战的完整课程方案
爬虫·python
C++ 老炮儿的技术栈16 小时前
不一样的数值交换
数据结构·c++·人工智能·算法·c·csdn开发云
C++ 老炮儿的技术栈16 小时前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c