Nodes/OmniNodes/Video Concat / Splice πŸ”—
ComfyUI Node

Video Concat / Splice πŸ”—

Stitching clips end-to-end, crossfade optional

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
Video Concat / Splice πŸ”—
  • clip_a
  • clip_b
  • clip_c
  • clip_d
  • images
  • frame_count
  • summary
β—„crossfade_frames0β–Ί

In ComfyUI, a video is just a batch of images - a stack of frames in one IMAGE tensor. That convention is why a "video concat" node is really a "join these batches" node, and it's exactly what the Video Concat / Splice from TensorVizion/OmniNodes does: it takes up to four IMAGE batches and joins them end-to-end into one sequence. The "splice" in the name comes from the optional crossfade - blend the tail of one clip into the head of the next instead of cutting hard.

It's the assembly step for everything the pack's video tools produce: per-scene segments from Video Trim/Extract, separate generation runs, or Latent Interpolate outputs that need to become one timeline. And it color-matches well with the rest of the workflow - run Video Color Match first so the joined clips actually look like they belong together.

Inputs and outputs

Inputs: clip_a (required) plus optional clip_b, clip_c, and clip_d (unused slots are skipped). crossfade_frames (0–64, default 0) sets the blend length at each seam - a value of 0 is a hard cut. When crossfading, the node consumes frames from the end of the earlier clip and the start of the next, so the blended region isn't duplicated on top of a hard edit. Outputs: images (the joined batch), frame_count (handy for downstream FPS/duration math), and summary.

One genuinely thoughtful touch: if a later clip's resolution differs from clip_a's, it's resized (bilinear) to match before splicing. Mismatched resolutions would otherwise crash or produce a malformed batch, and the author removed that footgun rather than documenting it.

Install

Ships with OmniNodes:

cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes

Or ComfyUI Manager β†’ OmniNodes β†’ restart. Pure PyTorch, no extra dependencies. Found under TensorVizion/Video.

Troubleshooting

  • Crossfade looks duplicated/smeared - you may be double-blending: if your source clips already overlap (you trimmed them with overlap), a crossfade stacks frames. Cut clips with a clean end, or use crossfade_frames small enough to stay inside each clip's own frames.
  • Joined clip is the wrong length - check frame_count against the sum of inputs; if it's short, a clip was skipped (an optional input left unwired) or an input resolved to empty.
  • Visual jump at the seam - that's a hard cut doing its job; either raise crossfade_frames or run the clips through Video Color Match first so the cut at least lands on matching grades.
  • Node missing - restart ComfyUI and check the [OmniNodes] terminal log.

Reach for it when separate clips need to become one timeline. It's the unexciting node that makes a multi-shot video possible.

CategoryTensorVizion/Video

Inputs (5)

NameTypeDefaultDescription
clip_aIMAGEβ€”
crossfade_framesINT00–64β€”
clip_boptIMAGEβ€”
clip_coptIMAGEβ€”
clip_doptIMAGEβ€”

Outputs (3)

NameTypeDescription
imagesIMAGEβ€”
frame_countINTβ€”
summarySTRINGβ€”