━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ LTX-2.5 Image-to-Video AUTO — Native Synced Audio, Two-Stage Distilled Workflow (16GB VRAM)
ComfyUI · LTX-2.5 (Lightricks) · int8-convrot quant · Auto-Orientation · QwenVL Motion Caption
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Drop a photo in → get back an animated MP4 with native synced audio, no separate audio model needed. LTX-2.5's joint video+audio latent space means the model generates picture and sound together in one pass — footsteps, water, wind, fire, whatever the scene calls for comes out matched to the motion. Two-stage distilled pipeline (fast 8-step draft → 2x spatial upscale → 3-step refine) keeps this runnable on a 16GB card. Auto-detects portrait vs landscape from your source image — no manual orientation knob.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ Features
✅ Native Synced Audio — LTX-2.5's joint A/V latent space decodes video and audio from the same diffusion pass, no bolt-on audio model, no lip-sync/foley hacks. Unplug the audio wire on Create Video to mute.
✅ Two-Stage Distilled — Stage 1: 8-step draft at half-res (960×544 / 544×960). Stage 2: 2x spatial upscale + 3-step refine to full res (1920×1088 / 1088×1920). Distilled model — no separate turbo LoRA needed.
✅ Auto-Orientation — GetImageSize → compare → switch reads your source image and picks portrait/landscape automatically, no manual toggle.
✅ Dual Motion-Caption Mode — Motion Switch: 0 = QwenVL auto-captions the scene straight from your image (visual + audio description), 1 = type your own motion+audio text manually for tighter control.
✅ 16GB VRAM Target — int8-convrot quantized DiT (22B distilled) + soft VRAM flush between stage1→stage2. Tested stable on RTX 5080 16GB, batch-3 sequential with no crash/leak (peak ~15.2GB).
✅ Frame Grid (N×8+1) — 121 frames = 5.0s @ 24fps default; verified stable up to 481 frames (20.0s) — full frame table + the 3 widgets that must move together for longer clips documented on the workflow canvas. 3 of the example clips below (torii, bamboo, koi pond) are 10s/241-frame runs made with this longer-clip setup, not the 5s default — see each clip's caption for the exact settings.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Required Models (6 files, ~40GB, HuggingFace gated — accept the license on the model page before downloading)
LTX-2.5 core (int8-convrot quant, ~40GB):
• ltx-2.5-22b-distilled-transformer-comfy-int8-convrot.safetensors (~21.5GB) — DiT, distilled 22B
• gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrot.safetensors (~15.4GB) — main text encoder
• ltx-2.5-video-vae-bf16.safetensors (~1.4GB) — video VAE
• ltx-2.5-audio-vae-bf16.safetensors (~0.4GB) — audio VAE
• ltx-2.3-spatial-upscaler-x2-1.1.safetensors — stage1→stage2 latent upscaler bridge
Optional (enhancer branch, not wired by default):
• gemma4_e2b_it_bf16.safetensors — smaller Gemma-4 variant, only needed if you build out the optional text-enhancer path
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⬇️ Download Links
📁 ComfyUI/models/diffusion_models/
• ltx-2.5-22b-distilled-transformer-comfy-int8-convrot.safetensors — https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-comfy-int8-convrot.safetensors
📁 ComfyUI/models/text_encoders/
• gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrot.safetensors — https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrot.safetensors
• gemma4_e2b_it_bf16.safetensors (optional) — https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors
📁 ComfyUI/models/vae/
• ltx-2.5-video-vae-bf16.safetensors — https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors
• ltx-2.5-audio-vae-bf16.safetensors — https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors
📁 ComfyUI/models/latent_upscale_models/
• ltx-2.3-spatial-upscaler-x2-1.1.safetensors — https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-spatial-upscaler-x2-1.1.safetensors (cross-version bridge file, from the LTX-2.3 repo — tested working with this 2.5 pipeline in P2/P3 smoke+showcase gates. LTX-2.5 has since released its own native upscaler, ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors in Lightricks/LTX-2.5/latent_upscale_models/ — untested swap, not used in this shipped version.)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🧩 Required Custom Nodes (3 packs — LTX A/V stack itself is comfy-core, no extra install for that part)
1. ComfyUI-QwenVL (AILab / 1038lab) — motion captioning via AILab_QwenVL node. https://github.com/1038lab/ComfyUI-QwenVL
2. ComfyUI-Easy-Use (vjumpkung) — anythingIndexSwitch (motion/orientation switches), easy compare/ifElse (auto-orientation logic), easy cleanGpuUsed (VRAM flush). https://github.com/vjumpkung/ComfyUI-Easy-Use
3. WAS Node Suite (was-ns) — Save Text File node (caption sidecar for Civitai metadata). https://github.com/WASasquatch/was-node-suite-comfyui
Optional (present in graph, unwired by default):
• ComfyUI_Image_Anything (Kelin) — ImageIterator batch-loader node is on the canvas but not connected in the default single-image path; only needed if you wire up folder-batch mode. Install via git clone if ComfyUI Manager doesn't resolve it: git clone https://github.com/ComfyUI-Kelin/ComfyUI_Image_Anything into custom_nodes/
Requires ComfyUI ≥ 0.30. LTX-2.5 A/V nodes (LTXVConditioning, LTXVPreprocess, LTXVConcatAVLatent, LTXVSeparateAVLatent, LTXVAudioVAEDecode, LTXVLatentUpsampler, etc.) are native comfy-core — no custom node pack needed for the LTX pipeline itself.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 How to Use
Setup:
1. Download all 6 model files → place in ComfyUI/models/ (exact paths above)
2. Install the 2 required custom node packs (QwenVL, Easy-Use) via ComfyUI Manager, plus WAS Node Suite
3. Confirm ComfyUI ≥ 0.30
4. Load the workflow JSON into ComfyUI
Generate:
5. Drag your source photo into the "SOURCE IMAGE" LoadImage node
6. Orientation is auto-detected — no manual switch needed
7. Motion Switch: leave at 0 (QwenVL auto-caption) for simplest path, or flip to 1 and type your own motion+audio text in the Manual Motion Text box
8. Click Queue → stage1 (8-step draft) → VRAM flush → stage2 (2x upscale + 3-step refine) → dual VAE decode (video + audio) → MP4 out with native audio
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚙️ Settings & Parameters
| Setting | Default | Purpose |
|---------|---------|---------|
| Orientation | Auto | Detected from source image — 960×544 landscape / 544×960 portrait at stage1, 2x at stage2 |
| Motion Switch | 0 | 0 = Auto (QwenVL captions image); 1 = Manual (type motion+audio text) |
| Frames | 121 | 5.0s @ 24fps. Valid (N×8+1): 49/73/97/121/145/169/193/217/241 |
| Stage1 steps | 8 | Distilled model, fixed sigma schedule |
| Stage2 steps | 3 | Refine pass after 2x upscale |
| CFG | 1 | Both stages (distilled model default) |
| Sampler | euler_ancestral | Both stages |
| Audio | native, connected | Unplug wire on Create Video to mute |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 Performance Tips
Minimum Spec — 16GB VRAM (int8-convrot + offload), tested RTX 5080. Batch of 3 sequential clips ran with no crash and no VRAM leak (peak ~15.2GB).
Motion Caption Quality — QwenVL auto-caption (Motion Switch=0) reads your source frame directly; well-lit, clear compositions produce richer audio-tailored captions. For guaranteed specific sounds, use Manual mode (Motion Switch=1) and write your own "VISUAL... AUDIO: [sound list]" text.
Known model-level quirk — on source images with sheer/mesh fabric over skin (e.g. lace sleeves), LTX-2.5 can occasionally warp that specific region mid-clip (~60–65% through the frame count). Confirmed via A/B (tiled vs non-tiled VAE decode — same artifact either way) and cross-checked against community reference workflows showing the same pattern — this is a model limitation, not a workflow bug. If you hit it, reroll the seed.
Two-Stage Cost — stage2's 2x-area upscale + refine is the expensive step; if you only need quick previews, you can bypass stage2 nodes and decode stage1's latent directly (lower res, much faster).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 Also Check Out
Sister workflows by the same author:
• LTX-2.3 Image-to-Video AUTO — the previous-generation version of this line (QwenVL auto-prompt, no drift)
• Krea2 → MiniMax H3 Motion Suite — text-to-image → video, one graph, native H3 audio
GitHub mirror: [github.com/Thinni63/comfyui-workflows](https://github.com/Thinni63/comfyui-workflows)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 Notes & AI Disclosure
• Version History
– v2.1 (2026-08-17) — Long-clip documentation + Manual-mode prompt fix, no change to the 121f (5.0s) default output. If you push past the default length: (1) three widgets must move together — Empty LTXV Latent Video length, LTXV Empty Latent Audio frames_number, LTXV Context Windows context_length — they're independent and nothing warns you if they drift apart (audio silently truncates under a longer picture); (2) context_length below your target length splits the clip into segments that each invent their own pose — set it ≥ length for one continuous take; (3) the QwenVL auto-caption path (Motion Switch=0) is only reliable at the 121f default — for anything past ~15s switch to Manual (Motion Switch=1) and write your own motion text, since a 2B captioner can't hold position-lock + bounded-action + audio-matching at once; (4) Manual-mode prompts need a position lock up front and exactly one bounded action with a clear end state — continuous verbs ("reclining", "leaning", "settling") get read as "sustain this for the whole clip" and the subject visibly drifts out of position on long clips. Manual-mode example text on the canvas rewritten accordingly, with an explicit "Static camera" instruction (camera-movement directives are ignored by the model — do zooms in post).
– v2.0 (2026-08-14) — Full canvas reorganization: groups now follow a "Cockpit-Left / Pipeline-Right" layout — 📖 Start Here → 🧠 Setup (one-time) → 🎛️ Run (per-run knobs) → 📚 Reference on the left, ▶ PIPELINE 1/55/5 (execution order, hands-off) on the right. Makes it much faster to spot what you actually need to touch on first open. No change to sampling/decode logic — same output as v1.4.
– v1.4 (2026-08-14) — Fixed periodic micro-stutter (VAEDecodeTiled temporal_size 64→128): eliminates 2 temporal-chunk seam artifacts per clip (~every 2.3s), confirmed via optical-flow measurement + A/B decode test. All 6 example clips regenerated stutter-free, replacing the previous 9.
– v1.3 (2026-08-14) — QwenVL auto-caption prompt (node86) tightened for cleaner AUDIO: tag format compliance; 3 new example clips added (golden-hour meadow, forest mist, neon night street)
– v1.2 (2026-08-12) — bug fix: Save Text File write-protected-path crash on Queue, fixed
– v1.1 (2026-08-12) — canvas layout tidy (node/group cleanup), no functional change
– v1.0 (2026-08-12) — initial release
• AI-Generated Content — all example clips are AI-generated by LTX-2.5. Respect local AI disclosure laws when publishing your own outputs.
• Configuration Only — no model weights in JSON; download all 6 files separately from the HuggingFace links above.
• Workflow Reuse — free to modify, share, and fork (CC0).
• Content Scope — this listing is SFW-only by design (see Licensing below for why).
• Hardware Tested — RTX 5080 16GB VRAM, int8-convrot, native resolution, no manual upscale beyond the built-in stage2.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⭐ Found this useful?
• Like if it saved you time animating stills with real audio
• Comment your results — I read every one
• Follow for new ComfyUI workflows, all tested on 16 GB VRAM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚖️ Model Attribution & Licensing
LTX-2.5 (Lightricks) — LTX-2.x Community License Agreement (https://github.com/Lightricks/LTX-2/blob/main/LICENSE.md). Free commercial use for entities under $10M annual revenue (paid Commercial Use Agreement required at ≥$10M ARR). No explicit NSFW ban in Attachment A's use restrictions — this listing is SFW-only regardless. No territory restriction beyond standard US export/sanctions compliance. Licensor claims no rights in generated outputs.
Gemma-4 Text Encoder (Google) — Gemma is provided under and subject to the Gemma Terms of Use (https://ai.google.dev/gemma/terms) and Prohibited Use Policy (https://ai.google.dev/gemma/prohibited_use_policy). This workflow's SFW scenic/nature content is fully compliant with the Prohibited Use Policy (which restricts sexually explicit content, dangerous/violent content, hate speech, etc.). Gemma's ToU cascades downstream to anyone using this workflow — by using it you agree to Gemma's Terms of Use.
License verified: 2026-08-12.
ComfyUI Custom Nodes
• ComfyUI-QwenVL (1038lab) — Apache-2.0/BSD — https://github.com/1038lab/ComfyUI-QwenVL
• ComfyUI-Easy-Use (vjumpkung) — https://github.com/vjumpkung/ComfyUI-Easy-Use
• WAS Node Suite (WASasquatch) — MIT — https://github.com/WASasquatch/was-node-suite-comfyui
• ComfyUI_Image_Anything (Kelin, optional/unwired) — https://github.com/ComfyUI-Kelin/ComfyUI_Image_Anything
Workflow JSON — CC0 Public Domain. Free to use, modify, redistribute without attribution (credit appreciated).
All example outputs are AI-generated. Model weights remain the property of their respective owners and are downloaded separately from official HuggingFace sources.
Description
v1.2 — Bug fix. v1.0/v1.1 crashed on Queue with a "write-protected path" error from the caption-saving step (WAS Node Suite's Save Text File node rejected the relative output path). Fixed the path so it resolves correctly under ComfyUI's output folder — no other changes, same pipeline/layout as v1.1.
FAQ
Comments (8)
ComfyUI_Image_Anything node is not working. Even after cloning from the github, it does not appear under the normal manager.
That node (ImageIterator) is on the canvas but fully disconnected — not part of the default single-image path, it's only there for optional folder-batch mode. You can safely ignore the "missing node type" warning or just delete that one node — it won't affect generation. No need to chase down the ComfyUI_Image_Anything install unless you specifically want folder-batch mode.
This was super fast. Nice workflow, Use Resolution Master node instead for better Image size and orientation management. I use LM Studio node instead of QwenVL node for prompt generation.
Thanks! Glad it's fast for you. Good call on LM Studio — it's a solid alt if you already run it (more model choice), though I kept QwenVL as default since it runs in-process without needing a separate server, which matters on a 16GB card where VRAM is already tight during stage1. Resolution Master looks like a nice upgrade for manual control — I'll consider it for a future version, current WF uses auto-orientation logic instead so it stays one-click for the default path.
@TP_AI_63 Ok you should experiment more, LM studio node does not keeps the model in ram, it auto unloads it instantly and also strips thinking out of the output. I have 5060 ti 16gb VRam. Also 121 frames take about 22 seconds stage 1 and 45 secs for stage 2 and about 8 seconds without tiled vae decode node and 20 seconds with tiled vae decode node. Although I haven't switched to Resolution master these are just your default workflow that you made. I only added the slider for how many seconds I need instead of calculating the frames manually. Note that I am using nvfp4 models so the speed is fast, regardless its only 25% ~ 40% more faster than fp8. Regardless LTX-2.5 can generate about 30 seconds video on my card but takes about 15 minutes with 64gb System ram. But I see we really do not need that long video generations as most scene cuts are average 5~ 8 seconds long in any movie or shorts.
@jexshot Appreciate the detailed numbers. Ran a deeper test since your comment — turns out AILab_QwenVL's "4-bit" quant setting is actually a node bug: tried 4B/7B/8B locally, all pinned ~15.9GB VRAM regardless of the quant setting (8B even OOM-crashed ComfyUI). Ollama running the same 7B model via real GGUF quant only hit 8.7GB — so the VRAM claim behind the node's quant option doesn't actually hold, that's on the node not the model. Current 2B default still fits fine on 16GB so this WF's unaffected, but it's a real point in favor of external-engine options if someone wants to run a bigger VLM through this pipeline. Going to give LM Studio a proper try next round since you brought it up — if it pans out it'll ship as an optional swap, not a required install, so the default stays zero-extra-setup. Thanks for pushing on this.
I have questions.
Is this workflow very complicated to understand? How much ram do you have (not Vram)? Why do you use that amount? If all your components use practically 40gb?
Is there a difference in using the int4?
Not too complicated to run — it's an AUTO workflow: drop your image in, click Queue, it handles orientation detection, captioning, and both sampling stages on its own. Under the hood there's a fair number of nodes, but you don't touch most of them for normal use.
System RAM: I haven't benchmarked a hard minimum, but the model files (~40GB total) load via safetensors mmap and stream into VRAM in stages (stage1 → flush → stage2) rather than all sitting in system RAM at once. 32GB system RAM is a safe baseline for ComfyUI + OS overhead; I run comfortably above that. VRAM is the real constraint here (16GB target, tested on RTX 5080).
On int4 — Lightricks hasn't shipped an official int4 build for LTX-2.5. Official quant options are int8+convrot (what this workflow uses by default) and NVFP4 (smaller/faster but needs a Blackwell GPU). There are community GGUF quants floating around (Q4-style) but I haven't tested those in this workflow, so can't vouch for quality/compatibility.