Nodes/ComfyUI-FFmpeg-Video/Video Concat (FFmpeg)
ComfyUI Node

Video Concat (FFmpeg)

Stitch Two Videos in ComfyUI Without Touching Your VRAM

By bbaudio-2025·Created about a month ago·Updated about a month ago· 2
Video Concat (FFmpeg)
  • source_video
  • extend_video
  • video
overlap15
overlap_type
audio_sample_rate

Here's the problem this node solves: most ComfyUI video nodes treat a video as a pile of frames. They decode every frame into a tensor, run them through the graph, and compress them back into a file. That's fine for short clips, but at high resolution with lots of frames it eats RAM and VRAM like it's going out of style. Video Concat (FFmpeg) skips all that. It hands your two video files straight to FFmpeg, which stitches them together with stream filters that never decode into tensors, so memory stays flat no matter how long or how big the clips are.

It's the pack's flagship node, and honestly its most useful one: you generate two Wan or LTX clips, want them as one continuous video, and this is the glue. The whole pack is a one-person, "vibe-coded by GLM5.2" project per the README - brand new, essentially no community track record, so treat it as an experiment with genuinely useful mechanics rather than battle-tested infrastructure. There are no model downloads and no heavy dependencies, so the cost of trying it is low.

How it works

The node takes both files, probes their metadata with ffprobe, and builds an FFmpeg filter graph:

  • linear_crossfade runs an xfade (fade transition) over the two video streams and an acrossfade on the audio. That's the smooth one you'll use when two shots are meant to blend.
  • cut_source drops the last N frames of the first video, then hard-concats. cut_extend drops the first N frames of the second. Use these when you just want to trim a duplicated or janky frame at the seam.
  • overlap = 0 skips the transition entirely - plain append, which is also how you avoid any resampling weirdness.

If the two videos have different frame rates, it converts the second one to match the first. On the audio side, it resamples both streams to a common sample rate (your pick via audio_sample_rate) and - nice touch - injects silence with anullsrc if one video has no audio, so a silent clip doesn't break the concat. The result is encoded to an mp4 (libx264, crf 23, AAC audio) in ComfyUI's temp folder and returned as a VIDEO.

The inputs that matter

Three of them, really:

  • source_video / extend_video (VIDEO): your two clips. They must be the same resolution - the node hard-errors if they're not, and it won't rescale for you. Fix that upstream (re-encode one to match) before you wire them in.
  • overlap (INT, default 15): the transition length in frames, not seconds. It's measured against the source video's fps.
  • overlap_type: linear_crossfade is the default and what you probably want for blending; the two cut modes for hard seams.

audio_sample_rate only matters when the clips' audio doesn't match - pick which one the other should conform to.

The single video output is the stitched clip. Wire it into any node that consumes a VIDEO - a preview, a save-to-file, or a further FFmpeg pass.

Installing it

ComfyUI Manager, search "ComfyUI-FFmpeg-Video", install, restart. Or the manual way:

cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/ComfyUI-FFmpeg-Video
cd ComfyUI-FFmpeg-Video
pip install -r requirements.txt   # installs ffmpeg-python

Two real prerequisites: the Python binding ffmpeg-python (that's the only pip dependency) and the FFmpeg binary itself on your PATH - the node shells out to it, and it won't pretend otherwise. On Windows, grab the gyan build or winget install ffmpeg, and make sure ComfyUI's process can see it.

Common issues

  • "Both videos must have the same resolution" - the most common stop. Resize one side to match before concatenating.
  • Overlap longer than the source clip - it errors rather than silently misbehaving. Shrink overlap.
  • "FFmpeg binary is not installed" - your PATH, not the node. Install FFmpeg.
  • Given it's vibe-coded, verify your output the first few times - the README literally suggests searching with AI when it misbehaves, which is a fair summary of the support situation.
CategoryFFmpeg Video

Inputs (5)

NameTypeDefaultDescription
source_videoVIDEOThe first (source) video to concatenate.
extend_videoVIDEOThe second (extend) video to append.
overlapINT150–10000Number of overlap frames for the transition.
overlap_typeCOMBOlinear_crossfade: smooth fade between the two videos. cut_source: drop the last N frames of source, then concat. cut_extend: drop the first N frames of extend, then concat.
audio_sample_rateCOMBOWhen the two videos have different audio sample rates, resample the other video's audio to match the selected one. source_video: use source video's sample rate. extend_video: use extend video's sample rate.

Outputs (1)

NameTypeDescription
videoVIDEO