Nodes/ComfyUI-FFMPEGA/FFMPEG Agent
ComfyUI Node

FFMPEG Agent

Describe the edit, get an ffmpeg pipeline — and you don't even need an LLM

By AEmotionStudio·Created 8 months ago·Updated 2 days ago· 16
FFMPEG Agent
  • images_a
  • image_a
  • audio_a
  • mask
  • images
  • audio
  • video_path
  • command_log
  • analysis
  • mask_overlay_path
  • mask_points
  • image_path
  • mask
prompt
video_path
llm_modelnone
no_llm_modemanual
quality_presetstandard
seed0
video_a
image_path_a
text_a
pipeline_json
mask_points
crop_data
save_outputfalse
output_path
ollama_urlhttp://localhost:11434
custom_model
use_visionfalse
verify_outputfalse
advanced_optionsfalse
preview_modefalse
subtitle_path
crf-1
encoding_presetauto
whisper_devicecpu
whisper_modellarge-v3
sam3_max_objects2
sam3_det_threshold0.70
mask_output_typeblack_white
use_sam3false
use_flux_kleinfalse
flux_smoothingnone
flux_image_sourcefalse
flux_klein_steps4
flux_klein_guidance1.0
flux_klein_seed42
flux_klein_width1024
flux_klein_height1024
flux_klein_model4b
use_kiwi_editfalse
kiwi_modelauto
kiwi_precisionauto
kiwi_resolution640
kiwi_width640
kiwi_height640
kiwi_max_frames0
kiwi_steps50
kiwi_guidance5.0
kiwi_block_swap0
kiwi_long_videofalse
kiwi_seed0
kiwi_flow_shift5.0
kiwi_task_typeauto
kiwi_schedulerunipc
use_minimax_removerfalse
use_dreamid_omnifalse
dreamid_precisionauto
dreamid_resolutionauto
dreamid_steps50
dreamid_seed100
dreamid_solverunipc
dreamid_video_cfg3.0
dreamid_video_ref_cfg1.5
dreamid_audio_cfg4.0
dreamid_audio_ref_cfg2.0
scail2_width512
scail2_height896
scail2_length81
scail2_pose_extendpingpong
scail2_steps6
scail2_cfg1.0
scail2_shift5.0
scail2_seed0
scail2_samplereuler
scail2_schedulersimple
scail2_denoise1.00
scail2_replacement_modefalse
scail2_sort_byleft_to_right
scail2_object_indices
scail2_composite_directionhorizontal
scail2_main_referencelast
scail2_color_matchfalse
scail2_blockswap_blocks0
scail2_tiled_vaefalse
scail2_subjectperson
scail2_max_objects1
scail2_detection_threshold0.50
scail2_detect_interval2
scail2_point_src_width0
scail2_point_src_height0
scail2_lora_anone
scail2_lora_bnone
scail2_lora_cnone
scail2_lora_dnone
scail2_lora_strength_a1.00
scail2_lora_strength_b1.00
scail2_lora_strength_c1.00
scail2_lora_strength_d1.00
sam_audio_modelbase
marigold_output_typedepth
marigold_colormapSpectral
normalcrafter_max_resauto
video_depth_encodervits
video_depth_colormapgray
sapiens2_taskpose
sapiens2_size1b
sapiens2_seg_alpha0.50
sapiens2_pose_kpt_thr0.30
sapiens2_pose_radius6
sapiens2_pose_thickness4
upscale_modelrealesrgan_x4plus
upscale_scale4
seedvr_resolution1080
blockswap_blocks0
flashvsr_processingwhole
flashvsr_frame_window0
flashvsr_color_fixtrue
flashvsr_decode_tile512
rtx_qualityULTRA
vae_tilingtrue
vae_tile_presetauto
vae_tile_size512
vae_tile_overlap64
rembg_modelbria-rmbg
rembg_backgroundtransparent
matting_outputforeground
matting_backgroundgreen
matting_max_size0
audio_output_modeauto
audio_resample_rateoff
onion_blend_modescreen
onion_opacity0.50
onion_decay0.970
comparison_styleswipe
comparison_labelsfalse
comparison_label_aBefore
comparison_label_bAfter
phyfps_actionanalyze_only
sharp_trajectoryrotate_forward
sharp_num_frames60
sharp_max_disparity0.08
sharp_max_zoom0.15
sharp_save_plyfalse
sharp_deviceauto
wan_animate_modeanimate
wan_animate_steps20
wan_animate_guidance1.0
wan_animate_seed42
wan_animate_num_frames81
wan_animate_height480
wan_animate_width832
wan_animate_pose_strength1.00
wan_animate_face_strength1.00
wan_animate_lora_anone
wan_animate_lora_bnone
wan_animate_lora_cnone
wan_animate_lora_dnone
wan_animate_lora_strength_a1.00
wan_animate_lora_strength_b1.00
wan_animate_lora_strength_c1.00
wan_animate_lora_strength_d1.00
svi_num_clips10
svi_height480
svi_width832
svi_fps15
svi_cfg_scale4.0
svi_overlap_frames5
svi_seed_multiplier42
svi_steps30
svi_high_model_ratio0.50
svi_frames_per_clip81
svi_variantpro
svi_model_highauto
svi_model_lowauto
svi_lora_highSVI_Wan2.2-I2V-A14B_high_noise_lora_v2.0_pro.safetensors
svi_lora_lowSVI_Wan2.2-I2V-A14B_low_noise_lora_v2.0_pro.safetensors
svi_extra_lora_highnone
svi_extra_lora_lownone
svi_vaeauto
svi_text_encoderauto
svi_samplereuler
svi_schedulernormal
svi_blockswap_blocks0
svi_tiled_vaefalse
ace_negative_prompt
ace_cover_strength0.50
ace_steps8
ace_cfg_scale7.0
ace_bpm
ace_key
ace_time_sig
f1_presetnone
f1_instrumentnone
f1_fxnone
f1_structurenone
f1_negative_prompt
f1_bpmauto
f1_barsauto
f1_key
f1_duration0.0
f1_steps100
f1_cfg_scale7.0
f1_style_transferfalse
f1_noise_level0.70
fish_model_variantbf16
fish_voice
fish_emotion(none)
fish_temperature0.80
fish_top_p0.80
fish_repetition_penalty1.10
lp_rotate_pitch0.0
lp_rotate_yaw0.0
lp_rotate_roll0.0
lp_blink0.0
lp_eyebrow0.0
lp_wink0.0
lp_pupil_x0.0
lp_pupil_y0.0
lp_aaa0
lp_eee0.0
lp_woo0.0
lp_smile0.00
lp_retargeting_eyes1.00
lp_retargeting_mouth1.00
lp_crop_factor1.6
lp_expression_presetnone
lp_save_expression
lp_sample_image
lp_sample_ratio1.00
lp_sample_partsall
batch_modefalse
video_folder
file_pattern*.mp4
max_concurrent4
track_tokenstrue
log_usagefalse
allow_model_downloadstrue

FFMPEG Agent is the flagship node of the ComfyUI-FFMPEGA pack, and it does the thing that sounds fake until you try it: you type "add a cinematic letterbox, fade in, then compress for web at 720p" and it builds and runs the actual ffmpeg command chain. It's a natural-language front end over one of the most obtuse CLIs ever written - 200+ skills mapped to ffmpeg filters, from brightness and vignette up to Whisper subtitles and SAM3 masking.

Here's the part people miss: the name is a lie, or at least an aspiration. The agent doesn't call any API by default and needs no key. llm_model defaults to none, and no_llm_mode defaults to manual - meaning the node can execute an Effects Builder pipeline directly with zero AI involved. The LLM is a mode, not a requirement. That's the right design, honestly: an LLM guessing at ffmpeg filter syntax is a genuinely dicey proposition, and the manual path is how the pack stays deterministic.

The inputs that matter

  • video_path - absolute path to the source video. Used as the ffmpeg input unless you connect frames via images_a.
  • prompt - the natural-language instruction ("Speed up 2x, keep the audio pitch"). Not needed in manual mode.
  • llm_model - none (no-LLM), local Ollama models (qwen3:8b, llama3.3, etc.), CLI tools (gemini-cli, claude-cli - no API key, but they need Node.js 18+), or cloud APIs (gpt-, claude-, gemini-* - those want api_key). Or custom to type any model name.
  • no_llm_mode - what to do when llm_model is none: manual (Effects Builder pipeline), or the direct AI modes - sam3_masking, transcribe, karaoke_subtitles, generate_audio, lip_sync, animate_portrait, video_depth, flux_klein, minimax_remover, ai_upscale, rembg.
  • quality_preset - draft → lossless; crf and encoding_preset override it if you know what you're doing.
  • pipeline_json - where the Effects Builder connects. In manual mode it's executed directly; with an LLM it serves as skill hints.

You'll also want preview_mode (quick 480p/10s check before committing to a full render), save_output, use_vision (embeds frames as images for vision models - costs more tokens), and verify_output, which makes the agent re-inspect its render and auto-correct if it didn't match intent. Outputs: images, audio, the rendered video_path, plus command_log (the actual ffmpeg command - great for learning) and analysis.

Installing it

ComfyUI Manager → search ComfyUI-FFMPEGA → Install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/AEmotionStudio/ComfyUI-FFMPEGA.git
cd ComfyUI-FFMPEGA
pip install -r requirements.txt

Restart ComfyUI. Requirements: ffmpeg on PATH (ffmpeg -version), Python 3.10+. Ollama is optional (for local models - ollama pull qwen2.5:8b), Node.js 18+ only for the CLI model connectors. The AI modes auto-download their models on first use - SAM3 ~300 MB, Whisper up to ~3 GB, MuseTalk, LivePortrait, and the big one, FLUX Klein 4B at ~15 GB. allow_model_downloads on the node turns that off.

Common issues

If nothing runs, it's almost always ffmpeg not on PATH. Ollama models failing usually means the server isn't running (ollama serve) or the model isn't pulled. Empty LLM responses are often a still-loading model or a prompt too long for the context window - retry or swap models. The README's best practical advice is worth taking seriously: one task per run. Chain ten edits into one prompt and the agent's attention splits; do the trim, save, then load the result and do the color grade. On low VRAM, same rule for model-loading tasks - one per run, because SAM3 + Whisper in one pass will OOM a 12 GB card.

One more thing, with the pack's own framing in mind: this is an LLM-driven node, and LLM-driven nodes are exactly the category the community has learned to be careful with (the ComfyUI_LLMVISION malware incident ran on the same "downloads its own model" trust model). This one is open source, GPLv3, from an author with multiple established packs - but if you don't need the LLM, the manual path is genuinely the safer, cheaper default anyway. On the frontier of "describe it in English," you're paying for convenience, not capability.

CategoryFFMPEGA

Inputs (240)

NameTypeDefaultDescription
promptSTRINGNatural language instruction describing the desired edit. Examples: 'Add a cinematic letterbox', 'Speed up 2x', 'Apply a vintage VHS look'.
video_pathSTRINGAbsolute path to the source video file. Used as the ffmpeg input unless images are connected.
llm_modelCOMBOnoneAI model for interpreting your prompt. CLI models (gemini-cli, claude-cli, etc.) use locally installed CLI tools — no API key needed. Ollama models run locally via the Ollama server. Select 'custom' to type any Ollama model name manually. Select 'none' to skip the LLM entirely and use no_llm_mode instead (manual pipeline, SAM3, Whisper, or MMAudio).
no_llm_modeCOMBOmanualWhat to do when llm_model is 'none'. 'manual' runs the Effects Builder pipeline directly (no AI). 'sam3_masking' uses the prompt as a SAM3 text target. 'transcribe' runs Whisper speech-to-text and burns SRT subtitles. 'karaoke_subtitles' runs Whisper and burns word-by-word karaoke subtitles. 'generate_audio' uses MMAudio to synthesize audio from video/prompt. 'generate_music' uses AudioX to generate music from video/prompt (CC-BY-NC). 'foundation1' uses Foundation-1 to generate BPM/key-aware music loops from prompt. 'fish_speech' uses Fish Speech S2 Pro for text-to-speech with voice cloning and emotion control (80+ languages). 'audio_inpaint' uses AudioX to inpaint/complete audio (CC-BY-NC). 'audio_separate' uses SAM-Audio to isolate specific sounds from audio — prompt describes what to isolate (e.g. 'drums', 'vocals'). 'lip_sync' uses MuseTalk to sync lip movements to connected audio_a. 'animate_portrait' uses LivePortrait to animate a face — connect driving video to video_a. 'marigold' runs Marigold dense vision analysis (depth/normals/intrinsics) — choose output via marigold_output_type. 'normalcrafter' runs NormalCrafter for temporally-consistent video surface normals — choose res via normalcrafter_max_res. 'video_depth' runs Video Depth Anything for temporally-consistent depth — choose encoder via video_depth_encoder. 'sapiens2' runs Meta Sapiens2 human-centric vision — choose task via sapiens2_task (pose/seg/normal/pointmap/matting/pretrain) and model size via sapiens2_size (⚠️ Meta Proprietary license: no surveillance/biometric/deepfake use). 'flux_klein' runs FLUX Klein editing directly — prompt is the edit instruction, works on images and videos (full-frame, no mask needed). 'rembg' removes the video background using AI segmentation — choose model via rembg_model and background via rembg_background. 'video_matting' runs MatAnyone2 temporal video matting — uses SAM3 for auto-mask or connect mask to image_a. Choose output via matting_output (⚠️ non-commercial license). 'onion_skin' applies temporal ghosting (onion skin) — adjust blend mode, opacity, and trail decay in advanced options. 'svi' runs SVI 2.0 Pro (Stable Video Infinity) to generate infinite-length videos — connect reference image to image_a, prompts are newline-separated (one per clip). 'sharp' runs Apple SHARP for single-image 3D Gaussian view synthesis — connect image to image_a, renders a camera trajectory video in <1s (⚠️ research license). 'phyfps' runs Visual Chronometer to predict the physical frame rate (PhyFPS) of the video — choose action via phyfps_action. 'comparison' creates a comparison video from two inputs (before/after) — connect video_a as the 'after' video. Styles: swipe, split, side_by_side, diagonal, circular_reveal, difference.
quality_presetCOMBOstandardOutput quality level. 'draft' is fast/low quality, 'standard' is balanced, 'high' is slow/best quality, 'lossless' preserves full quality.
seedINT00–18446744073709550000Change this value to force re-execution with the same prompt. Use the randomize control to auto-increment between runs.
images_aoptIMAGEVideo input as image frames (e.g. from Load Video Upload). Connect additional video inputs and more slots appear automatically (images_b, images_c, ...). Used for concat, split screen, and multi-video workflows.
image_aoptIMAGEExtra image/video input. Connect additional inputs and more slots appear automatically (image_b, image_c, ...). Used for multi-input skills like grid, slideshow, overlay, concat, and split screen.
audio_aoptAUDIOAudio input. Connect additional audio and more slots appear automatically (audio_b, audio_c, ...). Used for muxing audio into video, lip sync, or for multi-audio skills like concat.
video_aoptSTRINGFile path to an extra video for concat, split screen, grid, or xfade. Uses zero extra memory vs tensor inputs. Connect and more slots appear (video_b, video_c, ...). Connect a primitive STRING node or any node that outputs a file path.
image_path_aoptSTRINGFile path to an image for overlay, grid, slideshow, or multi-image skills. Uses zero memory vs IMAGE tensor. Connect and more slots appear (image_path_b, image_path_c, ...). Use Load Image Path (FFMPEGA).
text_aoptSTRINGText input for subtitles, overlays, watermarks, or title cards. Connect an FFMPEGA Text node or any STRING source. More slots appear automatically (text_b, text_c, ...).
pipeline_jsonoptSTRINGConnect the output from the FFMPEGA Effects Builder node here. The agent will inject the selected effects as hints into your prompt.
mask_pointsoptSTRINGJSON-encoded point selection data from the Load Image/Video Path node's Point Selector. Guides SAM3 masking with click-to-select points instead of relying on text prompts alone.
crop_dataoptSTRINGJSON-encoded crop rectangle from the Load Video Path or Frame Extract node's Crop Selector. Format: {"x":N, "y":N, "w":N, "h":N}. Crops the input video before processing.
maskoptMASKOptional upstream MASK pass-through. When connected, this binary mask tensor is forwarded to the mask output for downstream compositing.
save_outputoptBOOLEANfalseWhen On, saves video and a workflow PNG to the output folder. Turn Off when a downstream Save node handles output to avoid double saves. Note: downstream nodes may re-encode with their own settings (format, quality, resolution), so the final saved file may differ from FFMPEGA's output.
output_pathoptSTRINGCustom output file or folder path. Leave empty to save to ComfyUI's default output directory.
ollama_urloptSTRINGhttp://localhost:11434URL of the Ollama server for local LLM inference. Default: http://localhost:11434.
custom_modeloptSTRINGWhen 'custom' is selected in llm_model, type the exact Ollama model name here — useful for models the dropdown doesn't list, such as ones on a remote server set via ollama_url.
use_visionoptBOOLEANfalseWhen On, embeds video frames as images for vision-capable models (uses more tokens). When Off, uses numeric color analysis instead (cheaper, works with all models).
verify_outputoptBOOLEANfalseWhen On, the agent inspects the output video after rendering and auto-corrects if it doesn't match intent. Adds one extra LLM call (more tokens/time). Best for complex edits like overlays, color grading, or animations.
advanced_optionsoptBOOLEANfalseShow advanced options: preview, encoding, SAM3/Whisper tuning, FLUX smoothing, MMAudio mode, SAM-Audio model, batch processing, and usage tracking.
preview_modeoptBOOLEANfalseWhen enabled, generates a quick low-res preview (480p, first 10 seconds) instead of a full render.
subtitle_pathoptSTRINGDirect path to a subtitle file (.srt or .ass). Alternative to using text_a with subtitle mode.
crfoptINT-1-1–51Override CRF (Constant Rate Factor) for output quality. 0 = lossless, 23 = default, 51 = worst. Set to -1 to use quality_preset value.
encoding_presetoptCOMBOautoOverride x264/x265 encoding speed preset. Slower = better compression. 'auto' uses the quality_preset value.
whisper_deviceoptCOMBOcpuDevice for Whisper transcription model. 'gpu' is faster but uses ~3 GB VRAM (frees ComfyUI models first). 'cpu' is slower but avoids VRAM pressure — best for low-VRAM GPUs or intensive workflows.
whisper_modeloptCOMBOlarge-v3Whisper model size for transcription. 'large-v3' is most accurate (~3 GB VRAM). Smaller models use less memory: medium (~1.5 GB), small (~1 GB), base (~150 MB), tiny (~75 MB). Models auto-download on first use.
sam3_max_objectsoptINT21–20Maximum number of objects SAM3 will track per frame. Lower values reduce VRAM usage. Objects are ranked by detection confidence — lowest-confidence detections are dropped first.
sam3_det_thresholdoptFLOAT0.700–1Minimum detection confidence for SAM3 to track a new object (0.0–1.0). Higher values = fewer objects tracked = less VRAM. Default 0.7 filters out low-confidence detections.
mask_output_typeoptCOMBOblack_whiteMask preview output format. 'black_white' outputs a raw B&W mask video (white = detected object) for use in external compositing. 'colored_overlay' composites colored SAM3-style regions + contours onto the video.
use_sam3optBOOLEANfalseEnable SAM3 pre-masking for no-LLM modes. When ON, the prompt text is used as a SAM3 target to mask specific objects before the effect runs. The effect is then composited onto the original via the mask. Works with: lip_sync, animate_portrait, marigold, normalcrafter, video_depth, flux_klein, minimax_remover, ai_upscale, rembg, onion_skin, comparison.
use_flux_kleinoptBOOLEANfalseEnable FLUX Klein 4B for AI-powered object removal (auto_mask:effect=remove) and text-guided editing (auto_mask:effect=edit). OFF by default to avoid high VRAM usage (~8–15 GB). When OFF, removal falls back to MiniMax-Remover (if enabled) or LaMa (~200 MB) and editing uses lightweight FFmpeg filter approximations.
flux_smoothingoptCOMBOnoneTemporal smoothing for FLUX Klein effects (remove/edit). 'none' = no smoothing (fastest, least VRAM). 'gaussian' = Gaussian blur across time (reduces flicker, +700 MiB RAM). 'adaptive' = per-pixel deviation check, only smooths outlier frames (+700 MiB RAM).
flux_image_sourceoptBOOLEANfalseWhen On, use the first connected image (image_a or image_path_a) as the source to edit. Subsequent images (image_path_b, etc.) become style references. When Off, the source comes from video_path as usual. Only used when no_llm_mode = 'flux_klein'.
flux_klein_stepsoptINT41–50Number of denoising steps (used in 'flux_klein' no_llm_mode). 4 = fast (~2s/frame), 20+ = higher quality but slower. Klein is distilled so low step counts work well.
flux_klein_guidanceoptFLOAT1.00–10Classifier-free guidance scale (used in 'flux_klein' no_llm_mode). 1.0 = creative/natural. 4.0+ = strict prompt adherence. Klein is distilled so guidance_scale=1.0 is typically optimal.
flux_klein_seedoptINT420–2147483647Random seed for reproducibility (used in 'flux_klein' no_llm_mode). Different seeds produce different edit variations.
flux_klein_widthoptINT1024256–2048Output width in pixels (used in 'flux_klein' no_llm_mode). Must be divisible by 32. Result is resized back to input dimensions after editing.
flux_klein_heightoptINT1024256–2048Output height in pixels (used in 'flux_klein' no_llm_mode). Must be divisible by 32. Result is resized back to input dimensions after editing.
flux_klein_modeloptCOMBO4bFLUX Klein model size (used in 'flux_klein' no_llm_mode and auto_mask remove/edit when FLUX is enabled). '4b' = ~15 GB, fast (default). '9b' = ~35 GB bf16, higher quality but slower. '9b_fp8' = 9B with FP8 transformer from ComfyUI/models/diffusion_models/flux-2-klein-9b-fp8.safetensors (must be present locally). Weights download on first use into ComfyUI/models/flux_klein/ (4b) or flux_klein_9b/ (9b/9b_fp8).
use_kiwi_editoptBOOLEANfalseEnable Kiwi-Edit 5B for AI-powered video editing (auto_mask:effect=edit). Provides native video-level editing with temporal consistency. Takes priority over FLUX Klein for edit effects when both are enabled. OFF by default to avoid high VRAM usage (~10–16 GB).
kiwi_modeloptCOMBOautoKiwi-Edit model variant (used in 'kiwi_edit' no_llm_mode). 'auto' = auto-select based on inputs (prompt → instruct, ref image → reference, both → instruct_reference). 'instruct' = text instruction only. 'reference' = reference image only. 'instruct_reference' = both text + reference image.
kiwi_precisionoptCOMBOautoKiwi-Edit weight precision. 'auto' = prefer FP8 if available, fall back to BF16 (~10 GB). 'fp8' = FP8 scaled (~5 GB, half VRAM). 'bf16' = full BF16 precision (~10 GB). Run scripts/convert_kiwi_edit_fp8.py to create the FP8 model.
kiwi_resolutionoptCOMBO640Kiwi-Edit output resolution. 'auto' = match input resolution (capped at 720p). '480p' = 480×640 (fast, lower VRAM). '512' = 512×512 (fast, square). '640' = 640×640 (balanced, recommended). '720p' = 720×1280 (highest quality, high VRAM). 'custom' = use kiwi_width/kiwi_height values.
kiwi_widthoptINT640128–1920Custom width for Kiwi-Edit output (only used when kiwi_resolution='custom'). Must be a multiple of 16.
kiwi_heightoptINT640128–1920Custom height for Kiwi-Edit output (only used when kiwi_resolution='custom'). Must be a multiple of 16.
kiwi_max_framesoptINT00–161Maximum frames per Kiwi-Edit processing chunk. 0 = auto (match input video frame count). Higher = more temporal context but more VRAM. Lower = faster with less VRAM.
kiwi_stepsoptINT501–100Number of inference steps for Kiwi-Edit. Default 50. Lower = faster but lower quality.
kiwi_guidanceoptFLOAT5.01–20Classifier-free guidance scale for Kiwi-Edit. Default 5.0. Higher = stronger prompt adherence.
kiwi_block_swapoptINT00–40Kiwi-Edit BlockSwap: number of transformer blocks to offload to CPU. 0 = disabled (keep on GPU). 4-16 = saves VRAM for lower-end cards.
kiwi_long_videooptBOOLEANfalseEnable chunked processing for videos longer than kiwi_max_frames. Splits into overlapping chunks, processes each, and stitches with crossfade blending.
kiwi_seedoptINT00–2147483647Random seed for Kiwi-Edit. 0 = random seed each run. Set a fixed value for reproducible results.
kiwi_flow_shiftoptFLOAT5.01–15Flow matching shift for the UniPC scheduler. Default 5.0. Higher values = more aggressive denoising (stronger edits). Lower values = subtler, more conservative changes.
kiwi_task_typeoptCOMBOautoOverride automatic task type detection for prompt enhancement. 'auto' = detect from keywords in prompt. 'global_style' = style/aesthetic changes (e.g. 'make it look like a painting'). 'local_change' = change a specific object (e.g. 'change shirt to red'). 'background_change' = change background only. 'local_remove' = remove an object. 'local_add' = add a new object.
kiwi_scheduleroptCOMBOunipcScheduler (sampler) for Kiwi-Edit denoising. 'unipc' = UniPC predictor-corrector (default, fast convergence at 30 steps). 'euler' = Flow Match Euler (original model default, needs ~50 steps). 'heun' = Flow Match Heun (higher quality per step, 2x cost). 'dpm++' = DPM++ Multistep (alternative fast solver).
use_minimax_removeroptBOOLEANfalseEnable MiniMax-Remover for high-quality video object removal (auto_mask:effect=remove). Uses a purpose-built DiT model (~2.5 GB, ~5–8 GB VRAM). Takes priority over FLUX Klein for removal when both are enabled. When OFF, removal falls back to FLUX Klein (if enabled) or LaMa (~200 MB).
use_dreamid_omnioptBOOLEANfalse⚠️ EXPERIMENTAL / WORK IN PROGRESS — Quality may be poor on low-VRAM GPUs. Enable DreamID-Omni for identity-preserving video generation with speech. Generates video where subjects speak with their voice and face identity preserved. Heavy model (~15+ GB VRAM). OFF by default for low-VRAM GPUs. Requires face image(s) on image_a and reference audio on audio_a.
dreamid_precisionoptCOMBOautoDreamID-Omni model precision. 'auto' = prefer FP8 if available (~12 GB), else BF16 (~23 GB). 'fp8' = FP8 quantized (fastest, lowest VRAM, requires converted checkpoint). 'bf16' = BFloat16 (best quality, higher VRAM).
dreamid_resolutionoptCOMBOautoDreamID-Omni output resolution (used in 'dreamid_omni' no_llm_mode). 'auto' = pick based on available VRAM (~30+ GB → 1280x704, else 992x512). '992x512' = standard quality, lower VRAM (~20 GB). '1280x704' = high quality, higher VRAM (~30+ GB).
dreamid_stepsoptINT501–100Number of diffusion sampling steps for DreamID-Omni. Default 50. Lower = faster but lower quality.
dreamid_seedoptINT1000–2147483647Random seed for DreamID-Omni. Set a fixed value for reproducible results.
dreamid_solveroptCOMBOunipcSolver for DreamID-Omni denoising. 'unipc' = UniPC predictor-corrector (default, fast). 'euler' = Flow Match Euler. 'dpm++' = DPM++ Multistep.
dreamid_video_cfgoptFLOAT3.01–10Video classifier-free guidance scale. Higher = stronger prompt adherence. Default 3.0.
dreamid_video_ref_cfgoptFLOAT1.50–5Video reference (face identity) guidance scale. Higher = stronger identity preservation. Default 1.5.
dreamid_audio_cfgoptFLOAT4.01–10Audio classifier-free guidance scale. Higher = stronger audio guidance. Default 4.0.
dreamid_audio_ref_cfgoptFLOAT2.00–5Audio reference guidance scale. Higher = stronger voice identity preservation. Default 2.0.
scail2_widthoptINT51232–2048Output width in px (used in 'scail2' no_llm_mode). Snapped to a multiple of 32.
scail2_heightoptINT89632–2048Output height in px (used in 'scail2' no_llm_mode). Snapped to a multiple of 32.
scail2_lengthoptINT815–100000Number of frames to generate (used in 'scail2' no_llm_mode). SCAIL-2 is trained on 81-frame chunks (4n+1); values above 81 are generated chunk-by-chunk (extend), each anchored on the previous chunk's tail for coherence. Limited by the driving video length.
scail2_pose_extendoptCOMBOpingpongWhen length exceeds the driving video, how to keep guiding motion past where the pose runs out (used in 'scail2' no_llm_mode). 'pingpong' bounces the motion forward/back (smoothest); 'loop' repeats from the start; 'hold_last' freezes on the final pose; 'none' lets the model freely hallucinate the tail. No effect when length ≤ driving frames.
scail2_stepsoptINT61–100Diffusion sampling steps (used in 'scail2' no_llm_mode). 6 suits the distill-LoRA fast path; raise for full-step quality.
scail2_cfgoptFLOAT1.01–15Classifier-free guidance scale (used in 'scail2' no_llm_mode). 1.0 for the distill-LoRA fast path.
scail2_shiftoptFLOAT5.00–100ModelSamplingSD3 shift (used in 'scail2' no_llm_mode). Default 5.0.
scail2_seedoptINT00–2147483647Random seed (used in 'scail2' no_llm_mode). 0 = first seed.
scail2_sampleroptCOMBOeulerSampler (used in 'scail2' no_llm_mode). 'euler' matches the reference SCAIL-2 workflow.
scail2_scheduleroptCOMBOsimpleScheduler (used in 'scail2' no_llm_mode). 'simple' matches the reference SCAIL-2 workflow.
scail2_denoiseoptFLOAT1.000–1Denoise strength (used in 'scail2' no_llm_mode). 1.0 = full denoise.
scail2_replacement_modeoptBOOLEANfalseReplacement vs Animation mode (used in 'scail2' no_llm_mode). False = Animation (drive the reference character with the video's pose). True = Replacement (swap the masked subject into the driving scene).
scail2_sort_byoptCOMBOleft_to_rightPalette assignment order across the colored masks (used in 'scail2' no_llm_mode). Keeps each identity the same color in the reference and pose-video masks.
scail2_object_indicesoptSTRINGComma-separated subject indices to keep, e.g. '0,2' (used in 'scail2' no_llm_mode). Empty = all detected subjects.
scail2_composite_directionoptCOMBOhorizontalHow multiple reference images (image_b, image_c, …) are composited into the single SCAIL-2 reference (used in 'scail2' no_llm_mode). Only matters with 2+ references.
scail2_main_referenceoptCOMBOlastWhich connected reference is the 'main' one — it's CLIP-vision encoded, so it drives identity most strongly (used in 'scail2' no_llm_mode). 'last' matches the workflow convention that the last/closest reference is the strongest.
scail2_color_matchoptBOOLEANfalseOn long extends (length > 81), color-match each chunk to the previous chunk's last frame (Reinhard) to stop slow exposure/hue drift (used in 'scail2' no_llm_mode). No effect on single-chunk (≤81-frame) runs.
scail2_blockswap_blocksoptINT00–40Wan 2.1 transformer blocks (of 40) worth of weights kept in CPU RAM during sampling (block swap). 0 = disabled. Higher = less VRAM, slower. Try 4-8 if you hit OOM. Only used when no_llm_mode = 'scail2'.
scail2_tiled_vaeoptBOOLEANfalseDecode video latents with tiled VAE to reduce VRAM spikes during decode. Use if VAE decode OOMs. Only used when no_llm_mode = 'scail2'.
scail2_subjectoptSTRINGpersonWhat SAM 3.1 should segment for the mask (used in 'scail2' no_llm_mode) — a SHORT noun like 'person', 'bear', 'dog'. Keep this separate from the animation prompt: a full sentence makes SAM over-detect, giving splotchy multi-colored masks. For mixed subjects, separate with ';' (e.g. 'man; dog') — each is detected as its own identity/color. Ignored when mask_points are supplied.
scail2_max_objectsoptINT11–6How many subjects (identities) SAM 3.1 tracks (used in 'scail2' no_llm_mode). 1 = single character (mask is solid blue, the most stable). Raise for multi-person; each identity gets its own color. Auto-raised to the number of reference images you connect.
scail2_detection_thresholdoptFLOAT0.500–1SAM 3.1 new-object detection confidence (used in 'scail2' no_llm_mode). Higher = fewer/cleaner detections (less likely to pick up spurious extra subjects). Matches SAM3 Video Track.
scail2_detect_intervaloptINT21–30How often (in frames) SAM 3.1 re-runs detection for NEW objects (used in 'scail2' no_llm_mode). Higher = more stable identities / less color flicker; lower = catches subjects that appear later. Matches SAM3 Video Track (default 2).
scail2_point_src_widthoptINT00–8192Override the coordinate-space WIDTH of mask_points (used in 'scail2' no_llm_mode). 0 = auto (taken from the point selector's image_width). Set only if your points come from a source that doesn't report its dimensions.
scail2_point_src_heightoptINT00–8192Override the coordinate-space HEIGHT of mask_points (used in 'scail2' no_llm_mode). 0 = auto (taken from the point selector's image_height).
scail2_lora_aoptCOMBOnoneLoRA slot A for SCAIL-2 (used in 'scail2' no_llm_mode). Select a LoRA file (e.g. lightx2v distill, DPO). Selecting a value reveals the next slot.
scail2_lora_boptCOMBOnoneLoRA slot B for SCAIL-2 (used in 'scail2' no_llm_mode). Select a LoRA file (e.g. lightx2v distill, DPO). Selecting a value reveals the next slot.
scail2_lora_coptCOMBOnoneLoRA slot C for SCAIL-2 (used in 'scail2' no_llm_mode). Select a LoRA file (e.g. lightx2v distill, DPO). Selecting a value reveals the next slot.
scail2_lora_doptCOMBOnoneLoRA slot D for SCAIL-2 (used in 'scail2' no_llm_mode). Select a LoRA file (e.g. lightx2v distill, DPO). Selecting a value reveals the next slot.
scail2_lora_strength_aoptFLOAT1.000–2Strength for SCAIL-2 LoRA slot A (used in 'scail2' no_llm_mode). 1.0 = full strength.
scail2_lora_strength_boptFLOAT1.000–2Strength for SCAIL-2 LoRA slot B (used in 'scail2' no_llm_mode). 1.0 = full strength.
scail2_lora_strength_coptFLOAT1.000–2Strength for SCAIL-2 LoRA slot C (used in 'scail2' no_llm_mode). 1.0 = full strength.
scail2_lora_strength_doptFLOAT1.000–2Strength for SCAIL-2 LoRA slot D (used in 'scail2' no_llm_mode). 1.0 = full strength.
sam_audio_modeloptCOMBObaseSAM-Audio model variant for audio_separate mode. 'base' = 3.6 GiB BF16 (default). 'base-fp8' = 1.8 GiB FP8 scaled (half VRAM, ~same quality). 'large-fp8' = 3.5 GiB FP8 scaled (large quality at base VRAM — recommended). 'large' = 6.9 GiB BF16 (best quality, needs 12+ GB VRAM). Models auto-download on first use.
marigold_output_typeoptCOMBOdepthMarigold output type (used in 'marigold' no_llm_mode or agentic mode). 'depth' = monocular depth map. 'normals' = surface normals. 'appearance' = albedo + roughness + metallicity. 'lighting' = albedo + shading + residual.
marigold_colormapoptCOMBOSpectralDepth map colormap (used in 'marigold' no_llm_mode, depth output only). 'Spectral' = standard red-to-blue depth map. 'gray' = B&W depth (for ControlNet/compositing). Others are artistic colormaps for creative visualization.
normalcrafter_max_resoptCOMBOautoNormalCrafter max resolution (used in 'normalcrafter' no_llm_mode). 'auto' = auto-detect GPU VRAM and pick the safest resolution (~12 GB → 768, ~8 GB → 512). '1024' = highest quality (needs ~12+ GB VRAM). '768' = balanced quality/VRAM (~8–12 GB). '512' = lowest VRAM (~6 GB).
video_depth_encoderoptCOMBOvitsVideo Depth Anything model size (used in 'video_depth' no_llm_mode or agentic mode). 'vits' = Small (~7 GB, fastest). 'vitb' = Base (~12 GB). 'vitl' = Large (~24 GB, best quality).
video_depth_colormapoptCOMBOgrayDepth map colormap (used in 'video_depth' no_llm_mode). 'gray' = standard B&W depth (for ControlNet/compositing). Others are artistic colormaps for creative visualization.
sapiens2_taskoptCOMBOposeSapiens2 task (used in 'sapiens2' no_llm_mode). 'pose' = 308-keypoint top-down pose (body+face+hands+feet) — needs DETR detector (auto-downloaded). 'seg' = 29-class human body-part segmentation overlay. 'normal' = per-pixel surface normals. 'pointmap' = 3D pointmap (z-channel visualized via turbo colormap). 'matting' = human matting (alpha composited on green; 1B only). 'pretrain' = raw backbone features (PCA-visualized RGB).
sapiens2_sizeoptCOMBO1bSapiens2 model size (used in 'sapiens2' no_llm_mode). '0.4b' = ~1–2 GB VRAM, fast. '0.8b' = ~2–4 GB VRAM. '1b' = ~3–6 GB VRAM, balanced (recommended default). '5b' = ~10 GB fp16 / ~20 GB fp32 (auto-picks fp8 on RTX 40-series+), best quality. '5b (fp8)' = quantized 5B, ~5 GB VRAM, needs fp8-capable GPU (compute cap >= 8.9, RTX 40-series+); auto-downloads the pre-converted *_fp8.safetensors from the mirror (dense tasks only — pose/pretrain ignore it). Note: matting task only ships in 1B.
sapiens2_seg_alphaoptFLOAT0.500–1Segmentation overlay opacity (0=invisible, 1=opaque). Only used when sapiens2_task = 'seg'.
sapiens2_pose_kpt_throptFLOAT0.300–1Pose keypoint visualization threshold (only keypoints with score >= threshold are drawn). Only used when sapiens2_task = 'pose'.
sapiens2_pose_radiusoptINT61–32Keypoint marker radius in pixels. Only used when sapiens2_task = 'pose'.
sapiens2_pose_thicknessoptINT41–32Skeleton line thickness in pixels. Only used when sapiens2_task = 'pose'.
upscale_modeloptCOMBOrealesrgan_x4plusAI upscaler model (used in 'ai_upscale' no_llm_mode). 'realesrgan_x4plus' = fast general-purpose. 'realesrgan_x4_anime' = anime/cartoon. 'hat_x4' = SOTA quality (Real-HAT-GAN). 'dat_x4' = balanced (DAT-2). 'swinir_x4' = classical SR. 'seedvr2_3b_int8' = INT8 diffusion upscaler, recommended 3B — fastest and smallest (~6-9 GB VRAM). 'seedvr2_7b_int8' = INT8 diffusion upscaler, recommended 7B — highest quality (~10-14 GB VRAM, use blockswap_blocks under 16 GB). 'seedvr2_3b_fp8' = diffusion upscaler, great quality (~8-12 GB VRAM). 'seedvr2_3b_gguf' = diffusion upscaler, lowest VRAM (~6-8 GB). 'seedvr2_7b_fp8' = highest quality diffusion upscaler (~16-24 GB VRAM). 'seedvr2_7b_fp8_mixed' = 7B with fp16 last block, fixes 7B seam/grid artifacts (recommended 7B, ~16-24 GB VRAM). 'seedvr2_7b_gguf' = highest quality diffusion upscaler, quantized (~8-12 GB VRAM). 'flashvsr_full' = FlashVSR one-step diffusion, best quality (~12-16 GB VRAM). 'flashvsr_tiny' = FlashVSR fast mode with TCDecoder (~8-12 GB VRAM). 'flashvsr_tiny_long' = FlashVSR streaming for long videos, low VRAM (~8-12 GB). 'rtx_vsr' = NVIDIA RTX Video Super Resolution (hardware-accelerated, RTX GPU required).
upscale_scaleoptCOMBO4AI upscale factor (used in 'ai_upscale' no_llm_mode). '4' = 4× resolution. '2' = 2× resolution.
seedvr_resolutionoptCOMBO1080SeedVR2 target output resolution (shortest edge, in pixels). '1080' = 1080p (default, recommended). '720' = 720p (faster, lower VRAM). '1440' = 1440p/2K (higher quality). '2160' = 4K (highest quality, high VRAM). Only applies when a SeedVR2 upscale model is selected.
blockswap_blocksoptINT0-1–32BlockSwap: number of DiT blocks to offload to CPU during inference (applies to SeedVR2 and FlashVSR diffusion upscalers). Streams model WEIGHTS only — does not reduce activation/decode memory. 0 = disabled (default, manual). -1 = auto (size from free VRAM; FlashVSR only). 4-30 = stream that many DiT blocks. For SeedVR2, -1 behaves the same as 0 (disabled).
flashvsr_processingoptCOMBOwholeFlashVSR memory/quality strategy (bounds ACTIVATION/decode memory, the real OOM limiter). 'whole' = one whole-frame pass, best quality (use the 'flashvsr_tiny_long' model for long clips — it streams over time). 'temporal' = slide over frames in windows of flashvsr_frame_window (no spatial tiling; keeps spatial quality). 'spatial' = split each frame into tiles (lowest quality, seams; uses the VAE tile size). Only applies to FlashVSR models.
flashvsr_frame_windowoptINT00–200FlashVSR temporal window: frames processed per pass when flashvsr_processing='temporal'. 0 = whole clip. Smaller = less VRAM, more passes. Minimum effective window is 21 frames. Ignored for 'flashvsr_tiny_long' (it streams internally).
flashvsr_color_fixoptBOOLEANtrueFlashVSR AdaIN/wavelet color correction (matches output color to the low-res input). On = stable colors; can flatten enhancement. Off = raw model output (matches the reference workflow, often sharper/more contrasty). Only applies to FlashVSR models.
flashvsr_decode_tileoptINT5120–2048FlashVSR decoder spatial tile size in pixels (tiny / tiny_long). The decode step is the usual OOM point at high resolution; tiling it is near-lossless (unlike tiling the DiT). 512 fits ~12 GB at 1024². 0 = whole-frame decode (may OOM). Smaller = less VRAM.
rtx_qualityoptCOMBOULTRARTX VSR quality preset (used when 'rtx_vsr' upscale model is selected). ULTRA/HIGH/MEDIUM/LOW = upscale quality levels. DENOISE_* = same-resolution denoising. DEBLUR_* = same-resolution deblurring. Requires NVIDIA RTX GPU with Tensor Cores.
vae_tilingoptBOOLEANtrueTiling for diffusion upscalers (SeedVR2 / FlashVSR). On (default) = spatial tiling, lower VRAM, slight seams possible (needed at high scale even with block-swap — it bounds activation memory, which block-swap does not). Off = whole-frame, best quality/no seams, but may OOM at high scale (FlashVSR auto-falls-back to tiles if it does). Only applies when a SeedVR2 or FlashVSR upscale model is selected.
vae_tile_presetoptCOMBOautoTile size preset (used when tiling is on). 'auto' = pick by VRAM (SeedVR2) / model default 384px (FlashVSR). A number = square tile of that pixel size (larger = fewer seams, more VRAM). 'custom' = use vae_tile_size / vae_tile_overlap below.
vae_tile_sizeoptINT51264–2048Custom VAE tile size in pixels (used when vae_tile_preset = 'custom').
vae_tile_overlapoptINT640–512Custom VAE tile overlap in pixels for blending (used when vae_tile_preset = 'custom').
rembg_modeloptCOMBObria-rmbgRembg model (used in 'rembg' no_llm_mode). 'bria-rmbg' = BRIA RMBG (SotA quality, recommended). 'birefnet-general' = BiRefNet high quality. 'birefnet-general-lite' = BiRefNet fast. 'isnet-general-use' = ISNet general. 'u2net' = U²-Net classic. 'silueta' = Silueta (fastest, lightweight).
rembg_backgroundoptCOMBOtransparentBackground replacement (used in 'rembg' no_llm_mode). 'transparent' = alpha channel (outputs VP9/WebM). 'green' = green screen for compositing. Other colors fill the background with a solid color.
matting_outputoptCOMBOforegroundMatAnyone2 output type (used in 'video_matting' no_llm_mode). 'foreground' composites subject on chosen background color. 'alpha' outputs grayscale alpha matte video. 'both' outputs foreground + alpha as separate videos. 'green_screen' is an alias for foreground with green background.
matting_backgroundoptCOMBOgreenBackground color for MatAnyone2 foreground output (used in 'video_matting' no_llm_mode). Choose a solid color for compositing.
matting_max_sizeoptINT00–4096Resolution cap for MatAnyone2 processing (used in 'video_matting' no_llm_mode). 0 = no limit (process at original resolution). Set to e.g. 512 or 720 to reduce VRAM usage on high-res videos.
audio_output_modeoptCOMBOautoHow to combine AI-generated audio with existing audio. Applies to all audio-generating modes: generate_audio (MMAudio), generate_music (AudioX), foundation1 (Foundation-1), fish_speech (Fish Speech TTS), audio_inpaint (AudioX), audio_separate (SAM-Audio), ace_step. 'auto' lets the LLM decide in agentic mode; defaults to 'replace' in no-LLM modes. 'replace' replaces existing audio entirely. 'mix' blends generated audio with the original track. 'save_only' generates the audio file without muxing it into the video.
audio_resample_rateoptCOMBOoffResample the audio output to this sample rate. Enable this if your audio effects (e.g. clean_audio with loudnorm) produce non-standard sample rates (like 96kHz) that ComfyUI's Save Audio MP3 node can't handle. 'off' = pass through original sample rate. '44100' = CD quality, universal MP3 compatibility. '48000' = studio quality, universal compatibility.
onion_blend_modeoptCOMBOscreenBlend mode for onion skin ghosting (used in 'onion_skin' no_llm_mode). 'screen' = classic light-table look. 'addition' = bright additive glow. 'difference' = motion-diff visualization.
onion_opacityoptFLOAT0.500–1Ghost trail opacity (used in 'onion_skin' no_llm_mode). 0.0 = invisible, 1.0 = fully opaque.
onion_decayoptFLOAT0.9700.9–0.999Temporal decay rate for ghost trails (used in 'onion_skin' no_llm_mode). Higher values = longer, more persistent trails. 0.90 = very short. 0.97 = medium. 0.999 = long persistence.
comparison_styleoptCOMBOswipeComparison style (used in 'comparison' no_llm_mode). 'swipe' = animated divider sweeps left-to-right. 'split' = static 50/50 with divider line. 'side_by_side' = full frames side by side. 'diagonal' = diagonal split. 'circular_reveal' = expanding circle reveals 'after'. 'difference' = pixel difference visualization.
comparison_labelsoptCOMBOfalseShow Before/After text labels on the comparison output (used in 'comparison' no_llm_mode).
comparison_label_aoptSTRINGBeforeLabel for the main video (left / before) in comparison mode.
comparison_label_boptSTRINGAfterLabel for the video_a input (right / after) in comparison mode.
phyfps_actionoptCOMBOanalyze_onlyAction for PhyFPS mode (used in 'phyfps' no_llm_mode). 'analyze_only' predicts the physical frame rate without modifying the video. 'correct' re-times the video so playback speed matches the detected PhyFPS.
sharp_trajectoryoptCOMBOrotate_forwardCamera trajectory type for SHARP 3D view synthesis (used in 'sharp' no_llm_mode). 'rotate_forward' = orbit with zoom, 'swipe' = left-to-right, 'shake' = horizontal + vertical, 'rotate' = full orbit.
sharp_num_framesoptINT6010–300Number of frames in the SHARP trajectory video (used in 'sharp' no_llm_mode). More frames = smoother/longer video.
sharp_max_disparityoptFLOAT0.080.01–0.5Lateral camera movement range for SHARP (used in 'sharp' no_llm_mode). Higher = wider camera sweep.
sharp_max_zoomoptFLOAT0.150–1Zoom intensity for SHARP camera trajectory (used in 'sharp' no_llm_mode). Higher = more forward/backward motion.
sharp_save_plyoptCOMBOfalseExport the 3D Gaussian splat as a .ply file (used in 'sharp' no_llm_mode). PLY files are compatible with Luma, Nerfstudio, and other 3DGS viewers. Saved to the standard outputs folder.
sharp_deviceoptCOMBOautoDevice for SHARP inference (used in 'sharp' no_llm_mode). Prediction works on all devices; video rendering requires CUDA.
wan_animate_modeoptCOMBOanimateWan-Animate mode (used in 'wan_animate' no_llm_mode). 'animate' = transfer motion to reference character. 'replace' = replace person in driving video with reference character.
wan_animate_stepsoptINT201–100Number of denoising steps (used in 'wan_animate' no_llm_mode). Higher = better quality but slower. 15-30 typical.
wan_animate_guidanceoptFLOAT1.00–20Classifier-free guidance scale (used in 'wan_animate' no_llm_mode). 1.0 = no guidance (fastest). Higher = more prompt adherence.
wan_animate_seedoptINT420–2147483647Random seed for reproducibility (used in 'wan_animate' no_llm_mode).
wan_animate_num_framesoptINT815–161Number of output frames (used in 'wan_animate' no_llm_mode). Must be 4n+1 for Wan 2.2 (e.g. 33, 49, 81, 121). If fewer driving frames exist, uses the driving frame count.
wan_animate_heightoptINT480128–1080Output height in pixels (used in 'wan_animate' no_llm_mode). Must be divisible by 16.
wan_animate_widthoptINT832128–1920Output width in pixels (used in 'wan_animate' no_llm_mode). Must be divisible by 16.
wan_animate_pose_strengthoptFLOAT1.000–2Pose conditioning strength (used in 'wan_animate' no_llm_mode). 1.0 = normal. Higher = stronger pose adherence.
wan_animate_face_strengthoptFLOAT1.000–2Face conditioning strength (used in 'wan_animate' no_llm_mode). 1.0 = normal. Higher = stronger face identity preservation.
wan_animate_lora_aoptCOMBOnoneLoRA slot A for Wan-Animate (used in 'wan_animate' no_llm_mode). Select a LoRA file. Selecting a value reveals the next slot.
wan_animate_lora_boptCOMBOnoneLoRA slot B for Wan-Animate (used in 'wan_animate' no_llm_mode). Select a LoRA file. Selecting a value reveals the next slot.
wan_animate_lora_coptCOMBOnoneLoRA slot C for Wan-Animate (used in 'wan_animate' no_llm_mode). Select a LoRA file. Selecting a value reveals the next slot.
wan_animate_lora_doptCOMBOnoneLoRA slot D for Wan-Animate (used in 'wan_animate' no_llm_mode). Select a LoRA file. Selecting a value reveals the next slot.
wan_animate_lora_strength_aoptFLOAT1.000–2Strength for LoRA slot A (used in 'wan_animate' no_llm_mode). 1.0 = full strength.
wan_animate_lora_strength_boptFLOAT1.000–2Strength for LoRA slot B (used in 'wan_animate' no_llm_mode). 1.0 = full strength.
wan_animate_lora_strength_coptFLOAT1.000–2Strength for LoRA slot C (used in 'wan_animate' no_llm_mode). 1.0 = full strength.
wan_animate_lora_strength_doptFLOAT1.000–2Strength for LoRA slot D (used in 'wan_animate' no_llm_mode). 1.0 = full strength.
svi_num_clipsoptINT101–200Number of clips to generate (used in 'svi' no_llm_mode). Each clip is ~81 frames. More clips = longer video. Only used when no_llm_mode = 'svi'.
svi_heightoptINT480128–1080Video height in pixels (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_widthoptINT832128–1920Video width in pixels (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_fpsoptINT151–60Frames per second (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_cfg_scaleoptFLOAT4.01–20Classifier-free guidance scale (used in 'svi' no_llm_mode). Higher = more prompt adherence, lower = more creative. Only used when no_llm_mode = 'svi'.
svi_overlap_framesoptINT50–20Overlap frames between clips for smooth transitions (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_seed_multiplieroptINT420–2147483647Seed multiplier — seed = clip_index × this value (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_stepsoptINT301–100Number of inference/sampling steps per clip. Higher = better quality but slower. 20-40 typical.
svi_high_model_ratiooptFLOAT0.500–1Fraction of steps using the HIGH-noise model (0-1). At this ratio of total steps, generation switches from high-noise LoRA to low-noise LoRA. Lower = more detail refinement by low-noise model.
svi_frames_per_clipoptINT8117–161Frames generated per clip. Must be 4n+1 for Wan 2.2 (e.g. 33, 49, 81, 121). More frames = longer clips but more VRAM.
svi_variantoptCOMBOproSVI variant: 'pro' has redesigned anchor + latent conditioning (better quality), 'standard' is the original SVI 2.0 (used in 'svi' no_llm_mode). Only used when no_llm_mode = 'svi'.
svi_model_highoptCOMBOautoHIGH NOISE Wan 2.2 I2V-A14B model for SVI (used in 'svi' no_llm_mode). 'auto' = auto-discover from ComfyUI model directories. Select the HighNoise variant (e.g. Wan2.2-I2V-A14B-HighNoise-Q3_K_S.gguf). Only used when no_llm_mode = 'svi'.
svi_model_lowoptCOMBOautoLOW NOISE Wan 2.2 I2V-A14B model for SVI (used in 'svi' no_llm_mode). 'auto' = auto-discover from ComfyUI model directories. Select the LowNoise variant (e.g. Wan2.2-I2V-A14B-LowNoise-Q3_K_S.gguf). Only used when no_llm_mode = 'svi'.
svi_lora_highoptCOMBOSVI_Wan2.2-I2V-A14B_high_noise_lora_v2.0_pro.safetensorsSVI HIGH-noise LoRA (used in 'svi' no_llm_mode). Auto-downloads from HuggingFace if not present. Only used when no_llm_mode = 'svi'.
svi_lora_lowoptCOMBOSVI_Wan2.2-I2V-A14B_low_noise_lora_v2.0_pro.safetensorsSVI LOW-noise LoRA (used in 'svi' no_llm_mode). Auto-downloads from HuggingFace if not present. Only used when no_llm_mode = 'svi'.
svi_extra_lora_highoptCOMBOnoneOptional extra LoRA applied to the HIGH-noise model (stacked on top of SVI LoRA). Select any LoRA from your loras folder, or 'none' to skip. Only used when no_llm_mode = 'svi'.
svi_extra_lora_lowoptCOMBOnoneOptional extra LoRA applied to the LOW-noise model (stacked on top of SVI LoRA). Select any LoRA from your loras folder, or 'none' to skip. Only used when no_llm_mode = 'svi'.
svi_vaeoptCOMBOautoVAE model for SVI. 'auto' finds Wan2.1_VAE.safetensors automatically. Select a specific VAE from your vae folder. Only used when no_llm_mode = 'svi'.
svi_text_encoderoptCOMBOautoText encoder for SVI (T5/UMT5). 'auto' finds best text encoder automatically. Select a specific model (safetensors, GGUF, etc.) from text_encoders or clip folders. Only used when no_llm_mode = 'svi'.
svi_sampleroptCOMBOeulerSampler for SVI denoising. Default: euler. Only used when no_llm_mode = 'svi'.
svi_scheduleroptCOMBOnormalNoise scheduler for SVI denoising. Default: normal. Only used when no_llm_mode = 'svi'.
svi_blockswap_blocksoptINT00–40Wan 2.2 transformer blocks (of 40) worth of weights kept in CPU RAM during sampling (block swap). 0 = disabled. Higher = less VRAM, slower. Try 4-8 if you hit OOM. Only used when no_llm_mode = 'svi'.
svi_tiled_vaeoptBOOLEANfalseDecode video latents with tiled VAE to reduce VRAM spikes during decode. Use if VAE decode OOMs. Only used when no_llm_mode = 'svi'.
ace_negative_promptoptSTRINGNegative prompt for ACE-Step music generation. Describes what to avoid in the output. Only used when no_llm_mode = 'ace_step'.
ace_cover_strengthoptFLOAT0.500–1Cover/repaint strength for ACE-Step (0.0–1.0). Lower values (0.2–0.4) keep more of the original audio (mild enhancement). Higher values (0.7–1.0) give ACE-Step more creative freedom. Only used in repaint/cover mode when no_llm_mode = 'ace_step'.
ace_stepsoptINT81–50Number of diffusion steps for ACE-Step. 4 = fast draft, 8 = turbo default, 16+ = higher quality. Only used when no_llm_mode = 'ace_step'.
ace_cfg_scaleoptFLOAT7.01–20Classifier-free guidance scale for ACE-Step. Higher values follow the prompt more closely. Only used when no_llm_mode = 'ace_step'.
ace_bpmoptSTRINGTarget BPM (beats per minute) for ACE-Step music. Leave empty for automatic. Only used when no_llm_mode = 'ace_step'.
ace_keyoptSTRINGTarget musical key/scale for ACE-Step. Leave empty for automatic. Only used when no_llm_mode = 'ace_step'.
ace_time_sigoptSTRINGTarget time signature for ACE-Step. Leave empty for automatic. Only used when no_llm_mode = 'ace_step'.
f1_presetoptCOMBOnoneBuilt-in timbre preset for Foundation-1. Provides structured instrument/timbre tags. Combine with a text prompt for customization. Only used when no_llm_mode = 'foundation1'.
f1_instrumentoptCOMBOnoneInstrument family to guide Foundation-1 generation. Appended to prompt automatically. 'none' = let the prompt decide. Only used when no_llm_mode = 'foundation1'.
f1_fxoptCOMBOnoneFX processing applied to Foundation-1 output. 'dry' = minimal processing, other options add specific effects. Only used when no_llm_mode = 'foundation1'.
f1_structureoptCOMBOnoneMusical structure/notation tag to guide phrasing. Controls melodic motion, rhythmic behavior, and harmonic feel. Only used when no_llm_mode = 'foundation1'.
f1_negative_promptoptSTRINGNegative prompt describing what to avoid in Foundation-1 output. Only used when no_llm_mode = 'foundation1'.
f1_bpmoptCOMBOautoTarget BPM. Foundation-1 supports specific BPM denominations. 'auto' = let the model decide. Only used when no_llm_mode = 'foundation1'.
f1_barsoptCOMBOautoNumber of bars for the loop. Foundation-1 supports 4 or 8 bars. 'auto' = let the model decide. Combined with BPM for precise duration. Only used when no_llm_mode = 'foundation1'.
f1_keyoptSTRINGMusical key and mode. Supports all keys and modes. Leave empty for automatic. Only used when no_llm_mode = 'foundation1'.
f1_durationoptFLOAT0.00–60Duration in seconds. 0 = auto-calculate from BPM/bars (or default 10s). Max 60s. Only used when no_llm_mode = 'foundation1'.
f1_stepsoptINT10010–250Number of diffusion steps. Higher = better quality but slower. 100 is a good default. Only used when no_llm_mode = 'foundation1'.
f1_cfg_scaleoptFLOAT7.01–15Classifier-free guidance scale. Higher = follows prompt more closely. 7.0 is a good default. Only used when no_llm_mode = 'foundation1'.
f1_style_transferoptBOOLEANfalseEnable audio style transfer mode. When on, Foundation-1 takes connected audio_a input and re-styles it based on the text prompt — like img2img but for audio. Requires audio_a to be connected. Only used when no_llm_mode = 'foundation1'.
f1_noise_leveloptFLOAT0.700–1Style transfer strength. 0.0 = keep original audio (no change), 0.3 = subtle variation, 0.7 = strong restyling (default), 1.0 = fully regenerate (ignore source). Only used when f1_style_transfer is enabled.
fish_model_variantoptCOMBObf16Fish Speech model precision. 'fp8' = FP8 quantized (~12 GB VRAM, recommended). 'bf16' = full BF16 precision (~24 GB VRAM). Only used when no_llm_mode = 'fish_speech'.
fish_voiceoptSTRINGVoice reference for cloning. Enter a name from the voice library (models/fish_speech/voices/) or a path to a .wav file (10-30s). Leave empty for default voice. Only used when no_llm_mode = 'fish_speech'.
fish_emotionoptCOMBO(none)Emotion/prosody tag prepended to the text. Fish Speech supports 15K+ inline tags — including free-form descriptions like '[whisper in small voice]' or '[professional broadcast tone]'. Type tags directly in the prompt for fine-grained control. Only used when no_llm_mode = 'fish_speech'.
fish_temperatureoptFLOAT0.800.1–1Sampling temperature for Fish Speech. Lower = more deterministic, higher = more varied. Only used when no_llm_mode = 'fish_speech'.
fish_top_poptFLOAT0.800.1–1Top-p (nucleus) sampling for Fish Speech. Only used when no_llm_mode = 'fish_speech'.
fish_repetition_penaltyoptFLOAT1.101–2Repetition penalty for Fish Speech. Higher values reduce repetitive patterns. Only used when no_llm_mode = 'fish_speech'.
lp_rotate_pitchoptFLOAT0.0-20–20Head pitch (nod up/down). Only for animate_portrait mode.
lp_rotate_yawoptFLOAT0.0-20–20Head yaw (turn left/right). Only for animate_portrait mode.
lp_rotate_rolloptFLOAT0.0-20–20Head roll (tilt left/right). Only for animate_portrait mode.
lp_blinkoptFLOAT0.0-20–5Eye blink (negative=close, positive=open). Only for animate_portrait mode.
lp_eyebrowoptFLOAT0.0-10–15Eyebrow raise/lower. Only for animate_portrait mode.
lp_winkoptFLOAT0.00–25Wink intensity. Only for animate_portrait mode.
lp_pupil_xoptFLOAT0.0-15–15Pupil horizontal (negative=left). Only for animate_portrait mode.
lp_pupil_yoptFLOAT0.0-15–15Pupil vertical (negative=up). Only for animate_portrait mode.
lp_aaaoptFLOAT0-30–120Mouth open (aaa shape). Only for animate_portrait mode.
lp_eeeoptFLOAT0.0-20–15Mouth eee shape. Only for animate_portrait mode.
lp_woooptFLOAT0.0-20–15Mouth woo/pucker shape. Only for animate_portrait mode.
lp_smileoptFLOAT0.00-0.3–1.3Smile intensity. Only for animate_portrait mode.
lp_retargeting_eyesoptFLOAT1.000–1Eye retargeting (0=ignore driver eyes, 1=full). Only for animate_portrait mode.
lp_retargeting_mouthoptFLOAT1.000–1Mouth retargeting (0=ignore driver mouth, 1=full). Only for animate_portrait mode.
lp_crop_factoroptFLOAT1.61–3Face crop expansion (larger=more context). Only for animate_portrait mode.
lp_expression_presetoptCOMBOnoneLoad a saved expression preset. Overrides expression sliders with stored values. Only for animate_portrait mode.
lp_save_expressionoptSTRINGType a preset name and run to save current expression slider values. Only for animate_portrait mode.
lp_sample_imageoptSTRINGSample face image whose expression will be transferred to the source. Only for animate_portrait mode.
lp_sample_ratiooptFLOAT1.000–1Expression transfer blend ratio (0=source expression, 1=full sample expression). Only for animate_portrait mode.
lp_sample_partsoptCOMBOallWhich parts to transfer: all, mouth_only, eyes_only, or rotation_only. Only for animate_portrait mode.
batch_modeoptBOOLEANfalseWhen enabled, processes all matching videos in video_folder with the same prompt. Uses a single LLM call and applies the pipeline to every file.
video_folderoptSTRINGPath to a folder containing videos to batch process. Only used when batch_mode is on.
file_patternoptCOMBO*.mp4File pattern to match videos in the folder. '*.mp4 *.mov *.avi' matches multiple formats. '*.*' matches all files. Only used when batch_mode is on.
max_concurrentoptINT41–16Maximum number of videos to process simultaneously in batch mode. Higher values use more CPU/GPU.
track_tokensoptBOOLEANtrueWhen On, prints token usage summary (prompt tokens, completion tokens, LLM calls) to the console after each run. Useful for monitoring costs with paid APIs.
log_usageoptBOOLEANfalseWhen On, appends a JSON entry to usage_log.jsonl for each run. Useful for tracking cumulative token spend over time.
allow_model_downloadsoptBOOLEANtrueWhen On (default), AI models (SAM3, LaMa, Whisper) auto-download on first use. Turn Off to prevent any automatic downloads — runs requiring a missing model will fail with a clear message and a link to download manually.

Outputs (9)

NameTypeDescription
imagesIMAGEImage frames from the output video. Returns ALL frames automatically when connected to a downstream node (e.g. VHS Video Combine). Returns only a thumbnail when unconnected (zero-memory preview).
audioAUDIOAudio extracted from the output video (or passed through from audio_a) in ComfyUI AUDIO format.
video_pathSTRINGAbsolute path to the rendered output video file.
command_logSTRINGThe ffmpeg command that was executed.
analysisSTRINGLLM interpretation, estimated changes, pipeline steps, and any warnings.
mask_overlay_pathSTRINGPath to a mask overlay preview video with SAM3-style colored contours. Connect to Save Video (FFMPEGA) to view the visual overlay.
mask_pointsSTRINGPass-through of upstream mask_points JSON data for downstream nodes. Contains click coordinates and labels.
image_pathSTRINGAbsolute path to the output image file when the node produces a single image (e.g. Flux Klein single-image edit). Empty for video outputs.
maskMASKRaw binary MASK tensor for downstream compositing (MatAnyone2, inpainting, etc.). Upstream mask passthrough or empty mask if no mask source.