Two-Stage Generation

This guide walks you through the Two-Stage Distilled workflow: a sample ComfyUI workflow from LTX that generates video with synchronized audio using a two-pass process: first at low resolution, then upscaled and refined at full resolution. It supports both Text-to-Video and Image-to-Video in a single workflow.

Compared to the default ComfyUI templates covered in the Text-to-Video and Image-to-Video beginner guides, this workflow exposes more of the pipeline and makes a good starting point for your own custom workflows.

If you haven’t used the default templates yet, start there first. This guide assumes you’re comfortable prompting, generating, and iterating in ComfyUI.

What’s Different from the Default Templates

The default templates get you generating quickly with minimal setup. This workflow uses the same distilled LTX-2.5 checkpoint and two-stage architecture, but exposes settings the templates handle automatically: the per-stage sigma schedules, tiled VAE decode, and the option to offload text encoding to the LTX API.

Step-by-Step Guide

Check the system requirements to make sure your hardware can run this workflow.

1. Download and Load the Workflow

Download the Two-Stage Distilled workflow JSON and drag it into ComfyUI.

2. Install Custom Nodes and Download Models

This workflow requires ComfyUI-LTXVideo. Open the Workflow Overview panel after loading it; if any other custom nodes are missing, it lists and installs them.

Download the LTX-2.5 weights from the LTX-2.5 HuggingFace repository (click Agree and Access on first download):

FileDescriptionPlacement
ltx-2.5-22b-distilled-transformer-bf16.safetensorsDistilled LTX-2.5 transformer (loaded via UNETLoader)ComfyUI/models/diffusion_models/
gemma4-12b-with-proj-ltx-2.5-bf16.safetensorsText encoder (Gemma 4 12B)ComfyUI/models/text_encoders/
gemma4_e2b_it_bf16.safetensorsPrompt enhancer (Gemma 4 E2B)ComfyUI/models/text_encoders/
ltx-2.5-video-vae-bf16.safetensorsVideo VAEComfyUI/models/vae/
ltx-2.5-audio-vae-bf16.safetensorsAudio VAEComfyUI/models/vae/
ltx-2.3-spatial-upscaler-x2-1.1.safetensorsSpatial upscaler (2×, reused from LTX-2.3)ComfyUI/models/latent_upscale_models/

3. Choose Text-to-Video or Image-to-Video

In the Input Parameters subgraph, the use image input toggle switches modes: off = Text-to-Video (generate from the prompt), on = Image-to-Video (your image conditions the first frame). For Image-to-Video, load your image in the LoadImage node; img_strength and img_compression control how strongly it conditions the result.

4. Write Your Prompt

Write your prompt in the positive prompt field. For Text-to-Video, describe the full scene — setting, characters, camera movement, audio. For Image-to-Video, focus on motion, action, and audio, since the image supplies the visual context. Enable enhance positive prompt to expand a short prompt with the Gemma 4 enhancer (the negative prompt is never enhanced). See the Prompting Guide for additional tips.

5. Set Frame Rate and Duration

Set the fps and duration in seconds. The final frame count must be 1 + a multiple of 8, so the actual duration is computed from fps × requested seconds and may differ slightly. Set video width and video height in the Preprocess subgraph — these are the Stage-1 dimensions; the pipeline upscales 2× in Stage 2, so the final output is twice these dimensions.

Higher resolution and longer duration need more VRAM. If you hit memory issues, reduce the resolution or duration, increase the VAE decode tile count, or enable API text encoding (below).

6. Generate

Stage 1 generates the video and synchronized audio at the base resolution on the distilled checkpoint, using a short fixed sigma schedule. Stage 2 upscales the Stage-1 result 2× and runs a few more steps to refine detail (re-using your image for conditioning if you supplied one). Click Run to generate.

7. Review and Iterate

The output is saved as an MP4 with synchronized audio. To iterate: adjust the prompt, change the duration, switch T2V/I2V, or try different resolutions.

Customization Options

Tiled VAE Decode

The tiled VAE decode step splits decoding into tiles to reduce peak VRAM at the cost of slightly slower decoding. Adjust tile count and overlap only if you hit memory issues during decode.

CFG

Both stages use CFG 1. The distilled model bakes guidance into distillation, so raising CFG doesn’t improve output the way it would with a standard diffusion model, and adds overhead. If you experiment, stay in the 1.0–1.5 range.

API Text Encoding

To save VRAM, offload text encoding and enhancement to the LTX API by editing the Input Parameters subgraph. Remove the bypass, and use the “(via api)” outputs. You’ll need an API key from the LTX API Console.

Using LoRAs

LoRAs can further customize output style, motion, or character appearance. Add a LoRALoader node for style, motion, or character LoRAs. See the LoRA guide.

Python

Two-stage generation is also available through the PyTorch API for programmatic use and custom pipelines. See the PyTorch API documentation.