Nodes/ComfyUI-fal-API/DY Wan Fun 22 Video Generation (fal)
ComfyUI Node

DY Wan Fun 22 Video Generation (fal)

ControlNet-style control video with Wan 2.2 VACE

By gokayfem·Created 2 years ago·Updated a day ago· 203
DY Wan Fun 22 Video Generation (fal)
  • control_video
  • ref_image
  • vace_mask_video
  • pose_video
  • depth_video
  • normal_video
  • canny_video
  • video_url
  • frames_zip_url
architecturevace
turbo_modetrue
prompt
negative_prompt
image_sizecustom
custom_width1280
custom_height720
num_frames81
frames_per_second16
num_inference_steps4
guidance_scale1.00
seed-1
sampleruni_pc
shift5
variations1
preprocess_all_mapstrue
strength_vace1.00
pose_strength0.60
depth_strength0.00
normal_strength0.00
canny_strength0.00
num_interpolated_frames0
temporal_downsample_factor0
enable_auto_downsamplefalse
auto_downsample_min_fps8
return_frames_zipfalse
lora_path_1
lora_strength_11.0
lora_transformer_1high
lora_path_2
lora_strength_21.0
lora_transformer_2high
lora_path_3
lora_strength_31.0
lora_transformer_3high
lora_path_4
lora_strength_41.0
lora_transformer_4high

This is the power-user video node, and the parameter list makes no secret of it. DYWanFun22_fal runs Wan 2.2's Fun/VACE control pipeline on fal - think ControlNet for video. You feed it a control video (a pose, depth, or edge sequence) plus a reference image, and it generates a new clip that follows that structure while taking its look from your prompt and reference. It's how you drive motion precisely instead of hoping a text-to-video roll lands the action you wanted.

VACE is Alibaba's Apache-2.0 video control system, one of the first-party task models still shipping on the frozen Wan 2.2 base. This node exposes a lot of it: multi-map control (pose, depth, normal, canny), LoRA slots, and a full sampler stack. Don't let the wall of inputs scare you - the required set is small, and almost everything else has a sane default.

The inputs that matter

For a first run you really only touch four:

  • architecture - vace or control. VACE is the general reference-guided mode; start there.
  • control_video - the driving video whose structure (motion/pose) the output follows.
  • ref_image - the reference the generated video takes its appearance from.
  • prompt - describes the scene and content.

Everything else is tuning. A few worth knowing: the per-map strength dials (pose_strength, depth_strength, canny_strength, strength_vace) with their matching *_video inputs let you blend multiple control signals; num_frames (81) and frames_per_second (16) set length; and there are four lora_path slots. Note lora_transformer on each LoRA - high, low, or both - which picks which expert the LoRA applies to, because Wan 2.2 is a two-expert MoE that splits denoising between a high-noise pass (motion) and a low-noise pass (detail). Speed LoRAs typically go on the low pass.

The turbo defaults tell you it's a distilled setup: num_inference_steps is 4, guidance_scale is 1, turbo_mode is on. That's correct for the accelerated path - don't "fix" it up to 20 steps and CFG 7, that's the un-distilled habit and it'll just cost more and look worse. Outputs: video_url and (optionally) frames_zip_url, both STRING lists.

Installing it

ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
pip install -r ComfyUI-fal-API/requirements.txt

No downloads - VACE and the control models run on fal. Set your key (config.ini, or export FAL_KEY=your_key; fal.ai/dashboard/keys), restart, find it under FAL/VideoGeneration/DY.

Where people get burned

The output is a URL (or a list of them), not a native video - send it through Fal Save Media from URL to download, or a Load-from-URL node to view. The optional frames_zip_url gives you the raw frames as a ZIP if you want to post-process.

The real trap is over-configuring. People wire up four control maps and a stack of LoRAs on the first try, get a mess, and can't tell which input caused it. Add one control signal at a time. And respect the turbo defaults - the low step count and CFG 1 are trained-in, not a mistake to correct. Content-map inputs (pose_video, depth_video, etc.) each need to actually be that kind of map for their strength dial to do anything sensible. As with all video here, it's the expensive end of the API, so prototype short (num_frames low) before committing to a long render.

CategoryFAL/VideoGeneration/DY

Inputs (45)

NameTypeDefaultDescription
architectureCOMBOvace2 options: vace, control
control_videoVIDEO
ref_imageIMAGE
turbo_modeoptBOOLEANtrue
promptoptSTRING
negative_promptoptSTRING
image_sizeoptCOMBOcustom7 options: custom, square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, +1
custom_widthoptINT12800–8192
custom_heightoptINT7200–8192
num_framesoptINT811–1000
frames_per_secondoptINT165–30
num_inference_stepsoptINT41–100
guidance_scaleoptFLOAT1.000–10
seedoptINT-10–2147483647
sampleroptCOMBOuni_pc5 options: uni_pc, dpmpp_2m, dpmpp_2m_sde, euler, euler_ancestral
shiftoptINT50–10
variationsoptINT11–10
vace_mask_videooptVIDEO
preprocess_all_mapsoptBOOLEANtrue
strength_vaceoptFLOAT1.000–2
pose_strengthoptFLOAT0.600–1
pose_videooptVIDEO
depth_strengthoptFLOAT0.000–1
depth_videooptVIDEO
normal_strengthoptFLOAT0.000–1
normal_videooptVIDEO
canny_strengthoptFLOAT0.000–1
canny_videooptVIDEO
num_interpolated_framesoptINT00–5
temporal_downsample_factoroptINT00–5
enable_auto_downsampleoptBOOLEANfalse
auto_downsample_min_fpsoptINT80–60
return_frames_zipoptBOOLEANfalse
lora_path_1optSTRING
lora_strength_1optFLOAT1.00–2
lora_transformer_1optCOMBOhigh3 options: high, low, both
lora_path_2optSTRING
lora_strength_2optFLOAT1.00–2
lora_transformer_2optCOMBOhigh3 options: high, low, both
lora_path_3optSTRING
lora_strength_3optFLOAT1.00–2
lora_transformer_3optCOMBOhigh3 options: high, low, both
lora_path_4optSTRING
lora_strength_4optFLOAT1.00–2
lora_transformer_4optCOMBOhigh3 options: high, low, both

Outputs (2)

NameTypeDescription
video_urlSTRING
frames_zip_urlSTRING