NS Video Concat
Stitch 20 Clips With Real Transitions
- video_1
- video_2
- transition_settings
- video
ComfyUI's video ecosystem has a gap: it's great at generating clips and terrible at assembling them into something you'd actually post. NS Video Concat Multi is the assembly node. It takes 2 to 20 video inputs and stitches them into one file - plain concatenation by default, or with a real transition between each pair when you feed it a Transition Settings node. One press of Queue turns a folder full of clips into an edit.
It uses FFmpeg under the hood (no frame tensors, no re-encoding the world unnecessarily - it's a filter-graph concat), so it's fast and it runs anywhere ffmpeg does. If you've been avoiding this pack's video side because you assumed the composition was a frame-by-frame pain, this is the pleasant surprise.
How it works
Set inputcount to the number of clips (2–20); that many video_N sockets become available. With no transition settings wired, it builds a simple concat filter - clips join end to end, whatever codec/geometry they have (matching formats will serve you best). With a transition_settings connected, it switches to FFmpeg's xfade graph, chaining the transition type and duration between every adjacent pair - so three clips give you two transitions, five give you four. The whoosh from your Transition Settings node rides along if you turned its sound on.
The one socket worth noting: video_1 is required, video_2 onward are optional - which is just ComfyUI's way of saying the first clip is mandatory and the rest fill in as you raise inputcount.
Inputs and output
Required: inputcount, video_1. Optional: video_2 (and up to 20 total as inputcount grows) plus transition_settings (from NS Transition Settings). Output: a single stitched video.
Install and setup
Part of the Symbiotica pack. ComfyUI Manager → search "Symbiotica", or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart, and make sure ffmpeg is on PATH (the pack checks /opt/homebrew/bin, /usr/local/bin, /usr/bin too - Homebrew installs land in the first of those automatically). No API key.
Troubleshooting
- "No such filter: xfade" - your ffmpeg is ancient.
xfadehas been in ffmpeg since 4.3 (2020); update it. - Clips with mismatched resolution/framerate - concat expects consistent geometry; mixed clips produce weird results. Convert them to match first (this pack's Video Effects or a standard ffmpeg step).
- Transitions don't appear - either
transition_settingsisn't wired in, or you've only got one clip connected. Transitions need a pair boundary to live on. - The output is shorter than expected - with transitions, the
xfadeoverlaps clips by the transition duration (that's how a crossfade works). A 0.5s fade eats 0.5s of the combined length. It's the math, not a bug. - Audio goes missing - concat mixes audio streams per clip; if any source clip is silent or has no audio track, the mix can behave oddly. Feed all-audio or all-silent sources together.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| inputcount | INT | 22–20 | — |
| video_1 | VIDEO | — | |
| video_2opt | VIDEO | — | |
| transition_settingsopt | TRANSITION_SETTINGS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |