LTX2_LATENTS
The LTX empty-latent node that secretly decides everything about your video
- encoder
- a_encoder
- image
- audio
- ic_lora_video
- ic_lora_mask
- latent
Comfy users know the Empty Latent Image node: set a size, get noise, move on. LTX2_LATENTS is that node's cousin with a bunch of extra limbs. It's where you set the resolution, frame count, and frame rate of your generation - and it's also where image-to-video, audio-to-video, and InContext-LoRA conditioning get prepped. It looks like a utility node. It's actually the one that decides what your video is.
How it works
LTX2_LATENTS takes your numbers, snaps them to what the model can actually eat, and builds the "latent bundle" - a dict holding the stage-1 (half-resolution) and stage-2 (full) output shapes, any image conditionings, any encoded audio, and timing info. The KSampler then reads that bundle as the starting point and condition set.
The settings that matter:
- width / height (default 768×512) - snapped to multiples of 32. The rule is hard on 2.3: width and height must be divisible by 32 or off-grid values fail. If you're using an IC-LoRA, it's multiples of 64 (the node even prints a reminder).
- num_frames (default 81) - must be divisible by 8 plus 1 (81 = 8×10+1). This trips everyone up once.
- frame_rate (default 24) - for I2V, try 48; the temporal compression is kinder to fast motion.
- strength (default 1.0) - image influence strength when you're doing I2V; ~0.8 is the community's usual starting point, dial it down to let the model move more.
- audio_start_time / audio_max_duration - trim the conditioning audio (0 = from the start / no limit).
The optional inputs are where the magic happens:
- encoder (video VAE) + image → I2V. Feed the
encoderoutput ofLTX2_SM_VAEand an image, and the node builds image conditioning at both stage resolutions. - a_encoder (audio VAE) + audio → A2V. Feed
LTX2_SM_AUDIO_VAE's encoder and an audio file, and the node encodes it to audio latents. This is the "make the character say this" path. - ic_lora_video + ic_lora_mask → IC-LoRA conditioning, for InContext-LoRA workflows (control video plus an optional mask). Keep resolution to multiples of 64 here.
The single output latent feeds LTX2_SM_KSampler.
Gotchas
- You don't get pixels, you get a plan. The bundle carries shapes and conditionings, not just noise. If you're used to previewing the empty latent, there's nothing to see here.
- Silence when you expected audio? The
audioinput only does anything ifa_encoderis wired in - and the A2V mode only really works with the matchingsampling_modeon the Model node. Both or neither. - I2V that freezes after a second is the classic 2.3 complaint; lowering
strengthand/or raisingframe_rateis the usual fix before you go hunting in the sampler.
Install
Same pack, same commands - ComfyUI Manager (search "ComfyUI_LTX2_SM") or:
cd ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_LTX2_SM.git
cd ComfyUI_LTX2_SM && pip install -r requirements.txt
Restart, and remember this pack needs the diffusers/transformers stack plus gguf and omegaconf - those are the real dependencies behind the scenes.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 768256–16384 | — |
| height | INT | 512256–16384 | — |
| num_frames | INT | 8125–2147483647 | — |
| frame_rate | FLOAT | 248–120 | — |
| strength | FLOAT | 1.000.1–1 | — |
| audio_start_time | FLOAT | 0.000–10000 | — |
| audio_max_duration | FLOAT | 0.000–10000 | — |
| encoderopt | VAE | — | |
| a_encoderopt | VAE | — | |
| imageopt | IMAGE | — | |
| audioopt | AUDIO | — | |
| ic_lora_videoopt | IMAGE | — | |
| ic_lora_maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |