Start Images To Video Latent ??
Inject start frames into your LTX latent so every segment continues cleanly
- start_images
- vae
- latent
- latent
- frames_loaded
- report
The whole trick of LTX-2 long-video extension is making segment N+1 start where segment N ended. IAMCCS_StartImagesToVideoLatent is the node that makes that mechanical: you hand it the last frames of the previous segment (as an IMAGE batch), your VAE, and the next segment's latent, and it encodes those frames, splices them into the latent at the right position, and sets a noise mask so the sampler treats them as given rather than regenerating them.
Without this kind of injection, extension workflows either regenerate the boundary frames (flicker and drift) or hand-roll latent math, which is exactly the "frame math everywhere, one wrong value breaks everything three segments later" mess the pack's author built this whole family to remove.
How it works
It takes the start_images, optionally runs them through ComfyUI's LTXVPreprocess (with preprocess_crf, default 33, applying the standard CRF-based conditioning preprocessing that LTX video conditioning uses), resizes to the latent's pixel dimensions if needed, encodes with your vae, and writes the encoded frames into latent["samples"] starting at insert_at_pixel_frame. The strength control (0–1, default 1) sets how strongly the injected frames are held: strength 1 writes a full conditioning mask (frames are fixed), lower strength lets the sampler modify them. mode (all/from_start/from_end) with count (default 9) trims which of the start frames you feed, so you can inject just the last 9 frames instead of everything.
The output is the same latent dict with a noise_mask - that's what signals the sampler to keep the injected frames fixed.
Inputs and outputs
- start_images (IMAGE) - the frames to carry forward (typically the last N frames of the previous segment).
- vae - your LTX video VAE.
- latent - the empty latent for the segment you're about to generate.
- insert_at_pixel_frame - where in the segment timeline to inject (0 = very start).
- strength, mode, count, preprocess, preprocess_crf - injection control.
Outputs: latent (the modified latent + mask), frames_loaded, report.
Installing
ComfyUI Manager → search "IAMCCS", or
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart. It depends on ComfyUI's native LTXV nodes (comfy_extras.nodes_lt) for preprocessing - if LTXVPreprocess is missing it falls back to no preprocessing with a log warning, so keep ComfyUI current.
Gotchas
Two common traps. First, insert_at_pixel_frame is in pixel frames but the latent is time-downsampled (LTX uses a time factor of 8), so the node floors it to the nearest latent slot - pick a value aligned to the time factor or you'll inject one slot off. Second, the injected frames and the target latent must agree on aspect and resolution or you pay for a resize at every segment; the pack's planner nodes keep this consistent, but if you're hand-wiring, use the same width/height everywhere. And lower strength than 1.0 means the boundary isn't locked - great for deliberate motion at the seam, wrong tool if you want a hard cut.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| start_images | IMAGE | — | |
| vae | VAE | — | |
| latent | LATENT | — | |
| mode | COMBO | all | 3 options: all, from_start, from_end |
| count | INT | 91–512 | — |
| insert_at_pixel_frame | INT | 00–100000 | — |
| strength | FLOAT | 1.000–1 | — |
| preprocess | BOOLEAN | true | — |
| preprocess_crf | INT | 330–100 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| frames_loaded | INT | — |
| report | STRING | — |