Wan 2.2 Fun Sampler for Video to Video
Video-to-video and control-conditioned generation on Wan 2.2-Fun
- funmodels
- prompt
- negative_prompt
- validation_video
- control_video
- start_image
- end_image
- ref_image
- riflex_k
- images
This is the most capable single sampler in the whole pack - it's built to handle video-to-video restyling, Canny/Depth/Pose control conditioning, reference-image guidance, and camera-motion control, all through one node, pairing with the -Control and -Control-Camera checkpoints from LoadWan2_2FunModel. If you're doing anything more structured than plain T2V/I2V - matching motion from an existing clip, driving generation off a pose skeleton, holding a character consistent via a reference image - this is the node for it.
How it works
It's a denoise-strength-driven sampler: give it a source video and a denoise_strength below 1.0, and it partially renoises and resamples rather than starting from scratch, similar to img2img denoise but for video. Layer in a control_video (pose, depth, canny - whatever the checkpoint was trained on) for structural conditioning, a ref_image to anchor identity, or camera_conditions for Wan2.2-Fun's camera-control checkpoints, and it combines them during sampling.
The inputs that matter
funmodels- fromLoadWan2_2FunModel,-Controlor-Control-Camera.prompt/negative_prompt-STRING_PROMPTtype, wire fromFunTextBox.denoise_strength- default 0.7, range 0.05-1.0. Lower means the output stays closer to the input video; higher gives the model more room to diverge. This is the one knob you'll actually tune per-shot.video_length- default 81, range 1-161, step 4.base_resolution- 512/640/768/896/960/1024, default 640.steps- default 25, up to 200 (lower default than the I2V/InP samplers, since V2V generally needs less work per step to hold structure).cfg- default 7, range 1-20.enable_teacacheand its threshold/offload/skip-step controls (default on) - the pack's step-caching, with the usual detail-stability tradeoff at aggressive settings.validation_video(optional, IMAGE) - the source clip for straight video-to-video.control_video(optional, IMAGE) - a preprocessed conditioning video (pose, depth, canny, etc.), matching whatever the checkpoint was trained against.start_image/end_image(optional, IMAGE) - endpoint anchors, same idea as the Inpaint sampler.ref_image(optional, IMAGE) - a reference image for identity/style anchoring.camera_conditions(optional, STRING) - for the-Control-Cameracheckpoints' camera-motion parameters.riflex_k(optional, RIFLEXT_ARGS) - fromFunRiflex, for pushing past the native frame ceiling.
Output: images - a frame batch.
Installing it
Part of the base VideoX-Fun install. Search ComfyUI Manager for VideoX-Fun; if it's not indexed, clone manually:
cd ComfyUI/custom_nodes
git clone https://github.com/aigc-apps/VideoX-Fun
pip install -r VideoX-Fun/requirements.txt
Restart ComfyUI.
Common issues
You don't have a control video ready. For pose specifically, this pack ships its own extractor - VideoToOpenpose - so you can generate one from any source video without leaving the pack. For Canny, Depth, or MLSD conditioning, you'll need ComfyUI's separate controlnet-aux preprocessor nodes; VideoX-Fun doesn't ship those itself.
Output barely changes from the input video. denoise_strength is too low for what you're asking it to do. Push it up incrementally - 0.7 is a reasonable middle ground, but heavier restyles want it closer to 0.9-1.0.
Output ignores the input video entirely. The opposite problem - denoise_strength too high, or control_video/validation_video not actually connected. Check the wiring before assuming the model's misbehaving.
Camera control does nothing. camera_conditions only means anything against a -Control-Camera checkpoint - it's silently inert on a plain -Control or -InP model.
Slow, even with fewer default steps than other samplers. This node is doing more work per step than a plain I2V sampler when you've got control conditioning and a reference image both wired in. Keep enable_teacache on, and drop resolution for iteration passes before you touch step count.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| funmodels | FunModels | — | |
| prompt | STRING_PROMPT | — | |
| negative_prompt | STRING_PROMPT | — | |
| video_length | INT | 811–161 | — |
| base_resolution | COMBO | 640 | 6 options: 512, 640, 768, 896, 960, 1024 |
| seed | INT | 430–18446744073709550000 | — |
| steps | INT | 251–200 | — |
| cfg | FLOAT | 7.001–20 | — |
| denoise_strength | FLOAT | 0.700.05–1 | — |
| scheduler | COMBO | Flow | 1 options: Flow |
| teacache_threshold | FLOAT | 0.1000–1 | — |
| enable_teacache | COMBO | true | 2 options: false, true |
| num_skip_start_steps | INT | 50–50 | — |
| teacache_offload | COMBO | true | 2 options: false, true |
| cfg_skip_ratio | FLOAT | 0.000–1 | — |
| validation_videoopt | IMAGE | — | |
| control_videoopt | IMAGE | — | |
| start_imageopt | IMAGE | — | |
| end_imageopt | IMAGE | — | |
| ref_imageopt | IMAGE | — | |
| camera_conditionsopt | STRING | — | |
| riflex_kopt | RIFLEXT_ARGS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |