Nodes/ComfyUI_LTX2_SM/LTX2_LATENTS
ComfyUI Node

LTX2_LATENTS

The LTX empty-latent node that secretly decides everything about your video

By smthemex·Created 7 months ago·Updated 3 months ago· 31
LTX2_LATENTS
  • encoder
  • a_encoder
  • image
  • audio
  • ic_lora_video
  • ic_lora_mask
  • latent
width768
height512
num_frames81
frame_rate24
strength1.00
audio_start_time0.00
audio_max_duration0.00

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 encoder output of LTX2_SM_VAE and 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 audio input only does anything if a_encoder is wired in - and the A2V mode only really works with the matching sampling_mode on the Model node. Both or neither.
  • I2V that freezes after a second is the classic 2.3 complaint; lowering strength and/or raising frame_rate is 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.

CategoryLTX2_SM

Inputs (13)

NameTypeDefaultDescription
widthINT768256–16384
heightINT512256–16384
num_framesINT8125–2147483647
frame_rateFLOAT248–120
strengthFLOAT1.000.1–1
audio_start_timeFLOAT0.000–10000
audio_max_durationFLOAT0.000–10000
encoderoptVAE
a_encoderoptVAE
imageoptIMAGE
audiooptAUDIO
ic_lora_videooptIMAGE
ic_lora_maskoptMASK

Outputs (1)

NameTypeDescription
latentLATENT