Instructions to use Lightricks/LTX-2.5 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusion Single File
How to use Lightricks/LTX-2.5 with Diffusion Single File:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- LTX-2
How to use Lightricks/LTX-2.5 with LTX-2:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --extra natten
# Download weights from this repo # Substitute filenames from this repo's "Files and versions" if they differ hf download Lightricks/LTX-2.5 \ diffusion_models/<distilled-transformer>.safetensors \ text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ vae/<video-vae>.safetensors \ vae/<audio-vae>.safetensors \ latent_upscale_models/<spatial-upsampler>.safetensors \ latent_upscale_models/<temporal-upsampler>.safetensors \ --local-dir models/LTX-2.5 # DFR requires the detailing IC-LoRA (separate repo; strength is fixed at 0.5) hf download Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler --local-dir models/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler# Distilled LTX-2.5 pipeline (fast) uv run python -m ltx_pipelines.distilled \ --transformer-path models/LTX-2.5/diffusion_models/<distilled-transformer>.safetensors \ --text-encoder-path models/LTX-2.5/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ --video-vae-path models/LTX-2.5/vae/<video-vae>.safetensors \ --audio-vae-path models/LTX-2.5/vae/<audio-vae>.safetensors \ --spatial-upsampler-path models/LTX-2.5/latent_upscale_models/<spatial-upsampler>.safetensors \ --num-frames 121 \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# DFR pipeline (higher detail fidelity; optional temporal 2x/4x) uv run python -m ltx_pipelines.dfr_pipeline \ --transformer-path models/LTX-2.5/diffusion_models/<distilled-transformer>.safetensors \ --text-encoder-path models/LTX-2.5/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ --video-vae-path models/LTX-2.5/vae/<video-vae>.safetensors \ --audio-vae-path models/LTX-2.5/vae/<audio-vae>.safetensors \ --spatial-upsampler-path models/LTX-2.5/latent_upscale_models/<spatial-upsampler>.safetensors \ --temporal-upsampler-path models/LTX-2.5/latent_upscale_models/<temporal-upsampler>.safetensors \ --detailing-lora models/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler/ltx-2.5-22b-ic-lora-pixel-spatial-upscaler-x2-1.0.safetensors \ --spatial-upscalings 1 \ --temporal-upscalings 1 \ --height 1088 \ --width 1920 \ --num-frames 121 \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For 4K: --spatial-upscalings 2 --width 3840 --height 2176 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
Can LTX 2.5 enforce camera motion reliably in I2V, or only guide it?
For LTX 2.5 image-to-video, can any official workflow guarantee that a requested camera path is followed on the first generation across varied source images? I am especially interested in a truly static camera, pan right, and tilt down.
The documentation lists the API camera_motion parameter and ComfyUI Motion Transfer, sparse-track Motion Control, and Layout-to-Render workflows. Which of these provides the strongest camera-path control, and which are only soft guidance that may drift? Is there an official benchmark, known limitation, or reproducible setup for camera-motion adherence? I am asking about a guaranteed correct camera move on every first attempt, not simply whether a move is sometimes possible.
Not an official answer, but some measured data from a production run that may help.
We shoot a wordless film series on LTX-2.5 (distilled bf16, ComfyUI two-stage I2V, 720p, 121 frames @ 24 fps). Because "it looks static" by eye turned out to be unreliable, we measure camera motion with a small script: scale and shift of the background between the first and the last frame.
What words do (I2V, our prompts):
Static camera. held in roughly half of the clips. In the first batch 3 of 6 "static" clips moved (about 6%, 10% and 20β30% push/shift). On the same start frame and prompt, seed 7 stayed static while seed 11 moved whatever we wrote.
"Very slow push-in" (two different phrasings) overshot on all 5 pairs we tried: about 1.3β2Γ zoom instead of a gentle move. The phrasing made no difference.
In our one pull-out test, words alone did not produce a pull-out.
In two-person shots with a sharp gesture the model changed the camera angle by itself (6 of 6).
What works: the first + last frame workflow (the official video_ltx2_5_flf2v template). With a drawn last frame, all 6 test clips arrived at that frame: the push-in was exactly as drawn, and the camera was static when the two frames had the same framing. The trade-off we saw: the camera was right every time, but in 2 of 4 shots the performance looked unnatural, so we still judge every clip by eye.
So our practical rule now: any push-in, pull-out or tracking move is shot first+last frame, with the end frame made from the start frame (zoom/crop done by code); clips that must be static get a motion check after generation and a second seed if they drift.
To the LTX team: a short note in the model card on what camera wording I2V is trained to follow (if any), and whether camera_motion from the API has an equivalent in ComfyUI, would save people a lot of seeds.