ComfyUI Node

WAN22 Generate Video

Wan 2.2 Image-to-Video, Powered by Someone Else's GPU

By turnbros·Created 11 months ago·Updated 10 months ago· 0
WAN22 Generate Video
  • input_image
  • frames
  • metadata
instance_nameNo instances configured
positive_promptA cinematic video of a sunset over a mountain range
negative_promptblurry, low quality, distorted
width512
height512
length240
high_cfg2.0
high_start_step0
high_end_step2
low_cfg1.0
low_start_step2
low_end_step4
total_steps4
seed-1
sampler_nameeuler
schedulersimple
shift_modelfalse
shift5
batch_size1
upscalefalse
adjust_contextfalse
context_length81
context_overlap8
context_schedulestandard_uniform
context_stride1
closed_loopfalse
fuse_methodpyramid
dim0

What it is

Same RunPod-client pattern as ComfyBros Text to Video, but this one is image-to-video, and it's Wan 2.2 under the hood. Feed it a still, get back a clip. The giveaway is the parameter list: high/low CFG schedule, shift, context windows, fuse_method, closed_loop - that's WanVideoWrapper's sampling config surfaced through a remote call, so what's actually running on the other side of that endpoint is effectively a Wan 2.2 workflow.

Wan 2.2 is worth knowing about because it's the frozen open base the community still treats as the reference for quality local video - Alibaba's last open numbered release, Apache 2.0, and the thing ByteDance and Z.ai later built their own models on. Image-to-video from a strong still is the default way people use it. This node just moves that default onto rented hardware.

How it works

Your input image is base64-encoded, bundled with a couple dozen parameters, and POSTed to {endpoint}/run. The node then polls {endpoint}/status/{job_id} every four seconds, up to a 15-minute hard cap, and when the job completes it downloads a ZIP of frames from your Cloudflare R2 bucket, sorts them, and reassembles them into an IMAGE batch. Nothing is computed on your machine - this is a client, not a generator.

The parameters that actually matter

  • instance_name, input_image, positive_prompt - the essentials. The instance_name dropdown defaults to "No instances configured" until you set one up.
  • length - 240 frames by default, which is 10 seconds at 24fps; up to 800.
  • total_steps - defaults to 4, not 20–50. That's the distilled speed-LoRA regime: high_cfg 2.0 for the first two steps, low_cfg 1.0 for the last two. If your server workflow isn't running the distilled model, four steps will come out mushy - and if it is, raising steps just adds cost and queue time without much gain.
  • shift / shift_model - the standard WanVideoWrapper shift value. Leave the model toggle off unless your server workflow expects it.
  • context_length (default 81 - Wan's native context), context_overlap, context_schedule, context_stride, closed_loop, fuse_method - how long clips get generated in chunks and stitched back together. This is also where quality falls apart: identity drift across chunk boundaries is the classic Wan long-video failure, so don't expect 800 frames to hold a face.
  • upscale (bool) - whether the server runs an upscale pass on the frames. Off by default for good reason: it roughly multiplies render time.
  • Outputs: frames (IMAGE batch) - wire into any video preview/save node; metadata (STRING) - JSON with frame_count, execution and delay time, status, and R2 info.

Setup and install

Identical to Text to Video. Edit ComfyUI/user/default/comfy.settings.json with serverlessConfig.instances (name, endpoint, auth_token) and serverlessConfig.offloadBucket (Cloudflare R2 account id, bucket name, access key id, secret key) - the frames come back from R2, so the bucket is mandatory, not a nice-to-have.

Install via ComfyUI Manager (search "ComfyBros"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/turnbros/ComfyBros

Restart, then pip install boto3 - the README's pip install -r requirements.txt is a phantom (no requirements.txt exists), and boto3, which the module imports at the top, isn't in the declared dependency list. Without it the node won't load.

The honest verdict

If you already run Wan 2.2 locally with WanVideoWrapper, this is strictly more expensive and slower than your own GPU - you'd only reach for it to keep your local VRAM free for something else. If you have no local GPU but do have a RunPod budget, it's a legitimate way to drive Wan 2.2 from the ComfyUI graph you already know. Either way, run at the defaults first and read the metadata output - it's the only place you'll see what the server actually did, how long it sat in the queue, and whether the frames came back at the size you asked for.

CategoryComfyBros/Video Generation

Inputs (29)

NameTypeDefaultDescription
instance_nameCOMBONo instances configured1 options: No instances configured
input_imageIMAGE
positive_promptSTRINGA cinematic video of a sunset over a mountain range
negative_promptSTRINGblurry, low quality, distorted
widthINT512128–2048
heightINT512128–2048
lengthINT2408–800
high_cfgFLOAT2.00.1–30
high_start_stepINT00–100
high_end_stepINT20–100
low_cfgFLOAT1.00.1–30
low_start_stepINT20–100
low_end_stepINT40–100
total_stepsINT41–150
seedINT-1-1–2147483647
sampler_nameCOMBOeuler22 options: euler, euler_ancestral, heun, heunpp2, dpm_2, dpm_2_ancestral, +16
schedulerCOMBOsimple7 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +1
shift_modelBOOLEANfalse
shiftINT5-100–100
batch_sizeINT11–16
upscaleBOOLEANfalse
adjust_contextBOOLEANfalse
context_lengthINT811–1000
context_overlapINT80–100
context_scheduleCOMBOstandard_uniform4 options: looped_uniform, standard_uniform, standard_static, batched
context_strideINT11–10
closed_loopBOOLEANfalse
fuse_methodCOMBOpyramid4 options: flat, pyramid, relative, overlap-linear
dimINT00–3

Outputs (2)

NameTypeDescription
framesIMAGE
metadataSTRING