Wan 2.2 Image-to-Video
Image → VideoImage-to-video with Wan 2.2 — animate a still into a short clip, with a motion prompt driving the movement. Identity and scene come from the source image.
wan22_i2v12 GB VRAM36.8 GB of weightsLoRA supportwan22_i2v on our own hardware. Prompt: “waves surge up the rocks and burst into spray, the lighthouse beam sweeps across the water”Calling it
FlixML has no generate button: you tell your agent what you want and it calls the API on your install. The id is what names this workflow.
POST /api/video/generate
{
"workflow": "wan22_i2v",
"prompt": "...",
"image": "..."
}Parameters
promptstrrequiredMotion prompt. Name an action a viewer could describe afterwards - she stands up and walks toward the camera, he throws the bag over his shoulder. Add a camera instruction on top of it, never instead of it. Words like subtle, slowly or gently are instructions to do nothing.
imagestrrequiredInput image filename
negative_promptstrdefault bright colors, overexposed, static, blurred detailswidthintdefault 480heightintdefault 832lengthintdefault 81Frame count, must be 4n+1 (33/49/65/81). Default 81 is the length Wan itself ships and generates at: wan_shared_cfg.frame_num = 81 with sample_fps = 16 in wan/configs/shared_config.py, i.e. 5.06 s. The 4n+1 rule is the authors' too - generate.py --frame_num help: "How many frames of video are generated. The number should be 4n+1". Source: github.com/Wan-Video/Wan2.2, both files read 2026-09-21. Going past 81 in this single-window workflow is untested here; use wan22_i2v_context for longer clips.
fpsintdefault 16seedintsteps_highintdefault 22+2=4 total. The model authors' published value, not one we tuned. The Lightning LoRA is step-distilled: it was trained on the noise schedule a 4-step run produces, and ComfyUI derives its sigma spacing from the step count you pass, so any other count denoises at noise levels the LoRA never saw. That shows up as rising contrast and a light that blooms across the clip. Source: lightx2v/Wan2.2-Lightning, official native-ComfyUI workflow Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1-NativeComfy.json — steps 4, split 0-2 / 2-4.
steps_lowintdefault 2See steps_high. 2+2=4 total, per the authors' workflow.
total_stepsintdefault 4steps_high + steps_low; passed to KSamplerAdvanced.steps. Fixed by what the distillation was trained on, not by quality preference — changing it means changing the LoRA.
cfg_highfloatdefault 11.0 on both stages. The Lightning LoRA is CFG-distilled — there is no unconditional branch to guide, and raising CFG pushes it off its trained trajectory. Source: lightx2v/Wan2.2-Lightning official native-ComfyUI workflow, cfg 1 on both KSamplerAdvanced nodes. Consequence: negative_prompt is inert here, because at CFG 1.0 nothing evaluates it.
cfg_lowfloatdefault 1Leave at 1.0; the low-noise stage runs the distilled LoRA.
shiftfloatdefault 5samplerstrdefault eulerschedulerstrdefault simplevaestrdefault Wan2.1_VAE.safetensorsclipstrdefault umt5_xxl_fp8_e4m3fn_scaled.safetensorshigh_modelstrdefault wan2.2_i2v_high_noise_14B_fp8_scaled.safetensorsfp8_scaled high-noise model in diffusion_models (UNETLoader)
low_modelstrdefault wan2.2_i2v_low_noise_14B_fp8_scaled.safetensorsfp8_scaled low-noise model in diffusion_models (UNETLoader)
high_lorastrdefault Wan2.2-Lightning_I2V-A14B-4steps-lora_HIGH_fp16.safetensorsLightning speed LoRA for high-noise model
low_lorastrdefault Wan2.2-Lightning_I2V-A14B-4steps-lora_LOW_fp16.safetensorsLightning speed LoRA for low-noise model
high_lora_strengthfloatdefault 11.0, same as low_lora_strength. Source: lightx2v/Wan2.2-Lightning official native-ComfyUI workflow — both LoraLoaderModelOnly nodes at 1.0. Lowering it to fight the Lightning slow-motion artifact is a community recipe, not the authors': it weakens the distillation that the 4-step schedule assumes, and we measured the cost on 2026-09-21 as a light blooming across the clip. If motion is flat, change the start frame or the action, not this.
high_lora_2strdefault Optional second LoRA stacked after the speed LoRA - this is where a motion or concept LoRA goes, e.g. a dance or action LoRA trained for Wan 2.2 i2v. Leave empty and the slot is removed from the graph entirely. Wan 2.2 LoRAs ship as a high/low pair: set both.
high_lora_2_strengthfloatdefault 1Weight of the second high-noise LoRA. Ignored when high_lora_2 is empty.
low_lora_strengthfloatdefault 1Leave at 1.0.
low_lora_2strdefault Low-noise half of the pair in high_lora_2. Leave empty to disable.
low_lora_2_strengthfloatdefault 1Weight of the second low-noise LoRA. Ignored when low_lora_2 is empty.
Your install is the source of truth: GET /api/workflows returns these parameters as they are on your machine.
What it costs to run
TESTED 2026-09-14 on RTX 4070 Ti (12 GB) + 16 GB system RAM, 768x528, 49 frames, 30 steps, same image, prompt and seed: the fp8_scaled pair (2x14.3 GB) finished in 594 s, the Q3_K_S .gguf pair (2x6.5 GB) in 723 s, with the same composition and slightly more motion on fp8. Steady sampling was about 10.9 s per step on fp8; the Q3 run sampled at 13 to 14 s per step. The fp8 files load through ComfyUI's Dynamic VRAM path; .gguf files do not.
Same input, different job
InfiniteTalk Image-to-Video (lip-sync)
Audio-driven talking-head. Animates a still image to lip-sync a voice line (Wan 2.1 I2V backbone + InfiniteTalk/MultiTalk). Talking-head motion only, not big body motion.
Wan 2.2 Image-to-Video (context windows)
Image-to-video past the model's 81-frame limit, generated as ONE clip instead of a chain. ComfyUI samples the whole length in overlapping context windows and fuses them, so the action carries across the joins — use this instead of taking a clip's last frame and animating it again, which hands the model a still and restarts the motion from rest.