LTX-2.5 Video to Video (IC-LoRA) ⚡
LTX-2.5 video-to-video that loads its IC-LoRA in-node
- model
- clip
- vae
- audio_vae
- images
- video
- reference_audio
- model
- positive
- negative
- latent
- frame_rate
This is the do-everything prep node for LTX-2.5: text-to-video, image-to-video, and - the headline feature - video-to-video via an IC-LoRA task adapter that loads inside the node. No external LoraLoaderModelOnly wiring, no "is the LoRA attached" boolean to guess at. You pick a task adapter from a dropdown, feed it your source clip, and the node handles the whole guide-injection mechanism. Beard removal, HDR grading, motion tracking, deblurring - any LTX IC-LoRA trained on whole-video reference conditioning - this is the node for it.
The mechanism is genuinely different from the i2v first-frame hold. The source video's frames get VAE-encoded and appended as extra reference tokens the model cross-attends to at the same timeline position as what it's generating (ComfyUI core's keyframe_idxs RoPE mechanism), then cropped back off after sampling. The official examples wire that by hand across ~10 nodes; this node collapses all of it into one prep step. Because those guide tokens are appended, the family's Crop Video Guide node strips them off after the distilled pass - and before the latent upscale, because the upscaler can't tell guide frames from output frames and would double both.
The inputs that matter
The mode dropdown declares the base behavior and is validated against what's connected: t2v (nothing connected), i2v (images required), v2v (video required). Then the interesting set:
video- your source clip. When connected,lengthandframe_rateare taken from the clip rather than the widgets.ic_lora- the task adapter, straight from yourmodels/lorasfolder. Loaded onto the model here atic_lora_strength. Set tononeand a connectedvideois used only for length/frame-rate/audio - useful for A/B-ing whether the adapter is doing anything.guide_strength- how hard the reference is held; 1.0 is the official default.keep_original_audio(default on) - keeps the source clip's own audio unchanged in the output. Off means the model generates new audio from scratch.reference_audio- drive generation from a voice or sound clip with no source video;length_from_audiosizes the video to it.latent_downscale_factor- ignore it unless your IC-LoRA's model card says it was trained on a downscaled reference grid. Most use 1.0.img_compression- the 2.5-specific widget, the H.264 CRF round-trip on i2v holds (official 18).
Outputs: model, positive, negative, latent, frame_rate. Chain: this node → KSampler (distilled) → Crop Video Guide → Latent Upscale x2 → KSampler (refine) → AV Decode.
Installing it
Part of the ComfyUI-GGUF-Loader pack (ChrisColeTech's fork of city96's ComfyUI-GGUF). ComfyUI Manager: search "ComfyUI-GGUF-Loader". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
pip install --upgrade gguf
Restart. The IC-LoRA weights themselves go in models/loras.
Common issues
Two worth flagging. First, the on-disk IC-LoRA adapters are 2.3-trained - they load cleanly onto 2.5 (same key layout), but cross-version quality is whatever the weights give you; don't be shocked if a 2.3-tuned adapter behaves differently here. Second, remember the crop: feed the distilled output straight into the upscaler and the guide frames get doubled into the final resolution. The node's own recipe order exists for a reason.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| mode | COMBO | t2v | Which base behavior this call is. t2v: images/video must be disconnected. i2v: images required (video may still layer on top as an IC-LoRA guide). v2v: video required (images may still layer on top as a first-frame hold). |
| vae | VAE | The loader's vae (video VAE) output. | |
| audio_vae | VAE | The loader's audio_vae output. | |
| prompt | STRING | With ic_lora set: describe the OUTPUT you want - most IC-LoRAs are trained on an instruction-style caption describing the transformed result. Otherwise: describe the scene and its motion, a caption not an instruction. | |
| negative_prompt | STRING | — | |
| width | INT | 128064–16384 | FINAL output width. Stage 1 samples at half this (the official recipe) and the latent upscaler doubles it back. |
| height | INT | 70464–16384 | FINAL output height - stage 1 runs at half, like width. |
| length | INT | 1219–16384 | Frames; 8k+1 tiles exactly. Ignored (taken from the clip instead) when video is connected. |
| frame_rate | FLOAT | 24.001–120 | Ignored (taken from the clip instead) when video is connected. |
| batch_size | INT | 11–4096 | — |
| imagesopt | IMAGE | First frame(s) for image-to-video (ordinary i2v hold, independent of video/ic_lora below) - resized and CENTER-CROPPED to the stage-1 grid. | |
| image_strengthopt | FLOAT | 0.700–1 | images only. How much of the init image(s) to keep. 0.7 is the official 2.5 stage-1 value; 1.0 locks the first frames hard. |
| img_compressionopt | INT | 180–100 | i2v hold only (the one 2.5-specific widget). Core LTXVPreprocess's H.264 crf round-trip on the input image (official value 18; 0 = off). |
| videoopt | VIDEO | Source clip for IC-LoRA video-to-video (see ic_lora) and/or its original audio (see keep_original_audio). Sets length/frame_rate from itself. | |
| ic_loraopt | COMBO | none | video only. The IC-LoRA task adapter (beard removal, HDR grading, motion tracking, ...) - loaded onto model HERE (no external LoraLoaderModelOnly needed) at ic_lora_strength, then drives the actual vid2vid guide-injection mechanism. "none" = video is used only for length/frame_rate/original audio, ignored for guidance - useful for A/B-ing whether the IC-LoRA is doing anything. |
| ic_lora_strengthopt | FLOAT | 1.00-100–100 | ic_lora only. Same as LoraLoaderModelOnly's strength_model. |
| guide_strengthopt | FLOAT | 1.000–1 | ic_lora only. How strongly the reference is held. 1.0 = fully held (official default). |
| keep_original_audioopt | BOOLEAN | true | video only. On = output keeps the source clip's own audio unchanged. Off = the model generates new audio from scratch instead. |
| latent_downscale_factoropt | FLOAT | 11–10 | ic_lora only. Only for IC-LoRAs trained on a downscaled reference grid (rare - check the LoRA's model card / reference_downscale_factor metadata; most use 1.0). Checked against the stage-1 half resolution, where the guide lands. |
| reference_audioopt | AUDIO | Drive generation from a voice/sound clip with no source video. Not meant to be combined with video+keep_original_audio. | |
| length_from_audioopt | BOOLEAN | true | With reference_audio and no video: size the video to the clip. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| frame_rate | FLOAT | — |