Nodes/Mickmumpitz-Nodes/Video Concatenate
ComfyUI Node

Video Concatenate

Stitch your Wan clips end-to-end without re-encoding the planet

By mickmumpitz·Created 8 months ago·Updated 9 days ago· 47
Video Concatenate
  • video_1
  • video_2
  • video_3
  • video_4
  • video_5
  • video_6
  • video_7
  • video_8
  • video_9
  • video_10
  • VIDEO
resolution_modeletterbox_to_first

Local video generation tops out at about 81 frames per Wan clip - roughly three seconds. So every serious long-form workflow becomes the same problem: generate a bunch of clips, then glue them into one video that doesn't look stitched. Video Concatenate is the glue. It takes up to ten VIDEO inputs and concatenates them end-to-end into a single output, audio track included, and it's the exact same engine Mickmumpitz's Shot Assembler uses under the hood.

This is the pack's "Video Utilities" workhorse, from the same author whose iterative Wan builds taught half of r/comfyui how to make clips longer than the model natively allows. Nothing clever about the concept - but the resolution handling is where naive concatenators fall apart, and this one actually deals with it.

How it works

Grounded in the pack's _video_utils.py: it pulls the frame components out of each input, uses the first video's frame rate as the master, and concatenates the frame tensors along the time axis with torch.cat. Audio gets the same treatment - each clip's waveform is appended, and clips without audio get a silent gap padded to the right length so the final track stays in sync.

The wrinkle is resolution. If your clips don't all match (and they usually won't), every frame gets resized and either letterboxed or center-cropped to a common target chosen by resolution_mode:

  • letterbox_to_first / largest / smallest - scale to fit, pad the rest with black bars (the default letterbox_to_first means "match whatever the first clip is").
  • crop_to_first / largest / smallest - scale to cover and crop the edges instead.
  • stretch_to_first - don't. It just squashes everything to the first clip's size.

The inputs that matter

  • resolution_mode - the 7-mode enum above. Default letterbox_to_first is the least surprising: your output matches your first clip and nothing gets cropped.
  • video_1 … video_10 - all optional. It concatenates whichever are connected, in slot order.

Output

One VIDEO out, ready to feed a video preview, VHS decode, or the next stage of your pipeline.

Install

It's part of Mickmumpitz-Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes

then restart - or search "Mickmumpitz" in ComfyUI Manager. Only numpy/Pillow/opencv-python as deps; no models.

Gotchas

The VIDEO type is ComfyUI's newer native video format, so this needs a current ComfyUI - if the node loads but the socket won't accept your video, update ComfyUI first. Mismatched resolutions mean black bars (or crops, if you chose that mode), so if your concatenation shows a hard cut between letterboxed and non-letterboxed sections, that's your clips disagreeing on aspect ratio, not the node. And it needs at least one connected input - it'll raise "at least one video input must be connected" rather than silently doing nothing. A single connected video just passes through.

CategoryMickmumpitz/Video

Inputs (11)

NameTypeDefaultDescription
resolution_modeCOMBOletterbox_to_first7 options: letterbox_to_first, letterbox_to_largest, letterbox_to_smallest, crop_to_first, crop_to_largest, crop_to_smallest, +1
video_1optVIDEO
video_2optVIDEO
video_3optVIDEO
video_4optVIDEO
video_5optVIDEO
video_6optVIDEO
video_7optVIDEO
video_8optVIDEO
video_9optVIDEO
video_10optVIDEO

Outputs (1)

NameTypeDescription
VIDEOVIDEO