Wan2.1 VACE 扩图 - After
Wan2.1 VACE 扩图 - Before

该 ComfyUI 工作流教你如何对视频进行外延扩展——在保留原始内容不变的前提下扩大画布——使用 Wan 2.1 VACE。它通过 LoadVideo 加载源视频,并用 GetVideoComponents 与 PreviewImage 提取尺寸与帧数。然后你用 ImagePadForOutpaint 定义扩展区域,并通过 ImageToMask/MaskToImage 构建遮罩,再用 RepeatImageBatch 在时间维度上复制。提示词由 CLIPTextEncode 编码,生成通过 KSampler 运行,并在 Wan 2.1 VACE UNet/Decoder 堆栈(UNETLoader、VAELoader)上使用 ModelSamplingSD3 调度;VAEDecode 将 Latent 转换为帧。WanVaceToVideo 处理视频特定的条件控制,TrimVideoLatent 用于确保时间维度形状对齐。结果通过 CreateVideo 组装,并由 SaveVideo 保存。

技术上,为了稳定推理有两条对齐规则:你设置的外延空间尺寸必须能被 16 整除(WanVaceToVideo 与 VAE 的约束),序列长度需满足时间约束(Length - 1 可被 4 整除),这由 TrimVideoLatent 处理。由于核心 Comfy 节点尚未提供视频尺寸/帧数的工具节点,该模板使用 PreviewImage 作为实用替代;如果你有可用的自定义工具节点,也可替换。工作流包含 Wan2.1-VACE-1.3B(更轻量,推荐 480p)与 Wan2.1-VACE-14B(质量更高,资源允许时适合 720p 等更高分辨率)的模型组。默认生成设置为 steps:20、cfg:6.0,并提供可选的 CausVid LoRA 调参建议:steps:2–4、cfg:1.0。

API

通过代码使用此工作流

每个 Comfy 工作流都是一个 JSON 图。下面的内容就是此工作流的完整数据,ComfyUI 运行时也是如此——你可以从该 URL 获取、放入版本控制,或在 ComfyUI 中加载并逐节点运行。

video_wan_vace_outpainting.json
正在获取工作流 JSON…

使用 Comfy SDK 从 TypeScript 或 Python 运行。相同代码可用于 Comfy Cloud 或你自托管的 ComfyUI——只需更改基础 URL。

// Install (beta)
npm i @comfyorg/sdk

// Run "Wan2.1 VACE 扩图" (TypeScript)
import { Comfy } from "@comfyorg/sdk";

const client = new Comfy({ apiKey: "comfyui-..." });

// This workflow, exported in API format (see note below)
const wf = await client.workflows.fromFile("video_wan_vace_outpainting_api.json");

wf.setInput("6", "text", "your prompt here"); // CLIPTextEncode

const job = await client.run(wf);
await job.getOutputs("69")[0].toFile("output.png"); // SaveVideo

SDK 需要 API 格式的工作流:在 ComfyUI 中打开此工作流,使用 文件 → 导出工作流(API)。

Comfy Cloud API 访问需要包含 API 密钥的套餐。

常见问题

常见问题

查看所有工作流
Showing 30 of 30 templates