LTX-2.5 I2V ComfyUI: linked prompt, resolution, frame count and two-stage sampling controls
The pinned LTX-2.5 I2V ComfyUI graph routes prompt enhancement through the outer false setting, obtains dimensions from an external ResolutionSelector and links frame count to duration*FPS+1. Two sampling stages have separate sigma/noise and image-conditioning paths. Original graph wiring, file names and source-note conflicts are documented; no workflow was executed.
LTX-2.5 image-to-video in ComfyUI: trace the connected controls before copying saved widgets
This is static analysis of the official video_ltx2_5_i2v.json at workflow_templates commit 0cc0fba562efe9f68e48050c2b82ed6495050bc2. The complete graph and same-commit MIT license were inspected. No workflow was imported or run, and no model weights, source image or generated audio/video were downloaded. The analysis describes serialized wiring and documented intentions; it does not establish runtime compatibility, memory fit, speed, output geometry or character retention.
Start with an image you have permission to use and a motion/scene prompt. LoadImage395 feeds wrapper398, whose type identifies the embedded subgraph 6e397a2b-68f7-48f6-8930-f3a5491a163c. The internal UUID is an embedded graph identifier in this file. Within it, the image goes through ResizeImageMaskNode351 and LTXVPreprocess350 before the two image-conditioning nodes and the optional prompt-generation path. Keep this exact graph variant together with its declared components; do not substitute a GGUF or an older LTX-2 workflow by filename resemblance.
The graph's declared model files under ComfyUI/models are:
- diffusion_models/ltx-2.5-22b-distilled-transformer-comfy-int8-convrot.safetensors
- text_encoders/gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrot.safetensors
- vae/ltx-2.5-video-vae-bf16.safetensors
- vae/ltx-2.5-audio-vae-bf16.safetensors
- latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors
- For the enhancer path, text_encoders/gemma4_e2b_it_int8_convrot.safetensors
The source labels the enhancer checkpoint optional when prompt_enhance is disabled. Treat that as the author's dependency guidance: this desk review did not test missing-file resolution or whether an unselected branch is evaluated. The graph still contains its loader and generator. Weight URLs in the graph use moving main revisions rather than immutable weight hashes. The source also says to obtain access to LTX-2.5 before downloading. Its MIT workflow license does not grant rights to those separate models, encoders, input images, audio, likenesses or outputs.
Prompt enhancement is off in the outer saved configuration. Wrapper398 stores false for prompt_enhance and passes it through subgraph input value_1 to PrimitiveBoolean383. The inner primitive's own saved true widget is therefore not the controlling value. ComfySwitchNode382 selects original prompt376 on_false and TextGenerateLTX2Prompt380 output on_true; its selected string feeds positive text encoding364 and preview381. The generation node receives the preprocessed image, the original prompt and its separate Gemma E2B encoder393. The projected Gemma encoder387 serves the diffusion prompt encoders. Choosing the raw prompt is a routing conclusion, not proof that the unused model need never load. The notes also disagree on enhancer size: one says approximately 10 GB, while the model-links note says 4.84 GB for the named E2B file. Neither value is a measured memory requirement here, and the claimed extra generation time was not tested.
Resolution is connected from outside the wrapper. Root ResolutionSelector403 is set to 16:9 widescreen, 0.9 megapixels and a multiple of 32. Links783/784 drive the wrapper's width/height, overriding its displayed 1280x720 widgets and the inner width/height primitives. The source's sizing table maps that selector setting to 1280x736. That is the supplied table's expectation; the selector implementation and actual rendered pixel dimensions were not tested. Inside the graph, math353/355 request half the connected width/height for the first video latent. The later learned spatial upscaler is named x2. Do not read the latent node's saved 768x512 widgets as the active requested size, or infer final encoded pixels solely from these labels.
Duration and FPS share an explicit frame-count path. The outer configuration stores five seconds and 24 FPS. Primitive362 and Primitive361 feed math378, whose expression is a * b + 1. Its integer output supplies video latent356 and audio latent366: 121 is the arithmetic result for those stored inputs. Both the video's saved 97-frame widget and the audio node's saved 97 frames at 25 FPS are overridden by links. FPS also reaches conditioning365 and CreateVideo370. This does not verify an observed clip length or generated frame count. Although the general note advertises Auto Duration, this graph's frame math is connected to the duration primitive; no predicted-duration output is wired into that path.
The graph contains two sampling stages, with the same diffusion loader384 feeding both dual CFG guiders:
- Stage one: conditioned video357 and empty audio366 are joined by concat377, then sampled by344. Sampler352 stores euler_ancestral; guider388 stores the pair [1,1]. ManualSigmas397 supplies 1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0. These are nine serialized sigma values, or eight adjacent intervals by arithmetic. Noise339 is connected to the exposed subgraph noise_seed. The outer serialized seed is 875362541677469; the inner node's saved 900359092894726 is not the connected seed source. Queue-time randomization was not tested.
- Between stages: separator367 sends video through latent upsampler348, then image-conditioning349. Audio from the same separator bypasses the video upscaler and joins the reconditioned video at concat340. The image-conditioning nodes have stored numeric values 0.7 first and 1 second; their bypass inputs are both wired to primitive363, stored false. That primitive is titled Switch to Text to Video?, but changing it alone does not prove that the image loader or enhancer image dependency can be removed.
- Stage two: sampler368 uses euler_ancestral from341, guider391's saved [1,1], and sigmas396 = 0.85, 0.7250, 0.4219, 0.0. These are four values and three adjacent intervals. Noise338 separately stores seed42 in fixed mode. Record both noise sources when comparing configurations. Separator369 feeds tiled video decode374 and audio decode358; CreateVideo370 combines both, then the outer SaveVideo writes the result.
Do not transplant the 40+3-step recipe from the separate LTX-2 19B diffusers guide into this LTX-2.5 ComfyUI graph. Existing model-file and template-index records remain useful discovery material; this analysis adds the exact graph's input precedence, optional-path caveats and stage wiring. The saved node/frontend version labels do not establish a minimum compatible ComfyUI installation. Record the exact graph revision, chosen components and settings, input image and prompt, both noise settings and actual runtime before a real comparison. A successful import, render, hardware assessment and quality/continuity evaluation remain separate work.
Structured fields
{
"citations": [
{
"url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/0cc0fba562efe9f68e48050c2b82ed6495050bc2/templates/video_ltx2_5_i2v.json",
"note": "Pinned original document; exact byte ranges and hashes are preserved in the curation source pins."
},
{
"url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/0cc0fba562efe9f68e48050c2b82ed6495050bc2/LICENSE",
"note": "Pinned original document; exact byte ranges and hashes are preserved in the curation source pins."
}
]
}Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | permitted | unknown | Original attributed explanation only. Pinned workflow MIT notice retained in private evidence. Models, media, dependencies, outputs and likeness rights remain separate. |