Concat AV Latent
Stitch the audio stream onto your video latent
- video_latent
- audio_latent
- latent
LTXVConcatAVLatent merges a video latent and an audio latent into one joint AV latent - the node that lets an LTX-2-style model generate synchronized picture and sound in a single sampling pass. The model doesn't see video and audio as two separate things; it expects one packed latent with both streams, and this node is what builds that package. It's not LTX-specific in principle - the source notes any AV model (LTXV, MiniMax H3) can consume the format - but it's the LTX-2 audio-video workflow where you'll actually meet it.
The two inputs: video_latent (the frames, typically off an LTX image-to-video or conditioning node) and audio_latent (the audio stream, produced by encoding audio with the LTX audio VAE, or an empty audio latent for generate-from-scratch). Output is a single LATENT containing both, which goes into the sampler. To get the pieces back out later, its sibling LTXVSeparateAVLatent does the reverse split.
What it's actually doing
Under the hood it packs the two tensors as a nested tensor and, importantly, fits the audio to the video's length: if the audio stream is longer it trims it, if it's shorter it zero-pads the tail - and the padded tail is deliberately left unmasked, so the model generates sound to fill it. That's the right behavior for the common case of a music or voice clip shorter than the video: the clip plays, then the model invents the rest of the audio to match the remaining frames. Noise masks from both sides are carried through so masked regions (e.g. an inpaint region or a reference-audio constraint) survive the merge.
The gotchas
The length-fitting is the thing to respect. If you feed a 121-frame video and a 60-frame audio latent, you get 121 frames of audio where the last 61 are model-generated - which is a feature for "clip + filler" workflows and a surprise if you assumed your audio would loop or silence. The two latents also have to be compatible products of the same AV-VAE family; you can't concat an LTX video stream with an audio stream from a different architecture and expect the sampler to make sense of the mix. And note the direction of the operation: if your video latent is already a packed AV latent (say it came out of an earlier AV generation), this node keeps the existing video and swaps in the new audio stream rather than nesting again.
It ships with ComfyUI core - no install, no model files of its own. If you're doing LTX-2 audio-video generation, this is the seam where the two halves of your workflow become one tensor, and it's worth understanding precisely because it's the quiet node between encode and sample that makes the whole "generates sound" thing work.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| video_latent | LATENT | — | |
| audio_latent | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |