Nodes/Bjornulf_custom_nodes/๐Ÿ“น๐Ÿ”— Concat Videos (FFmpeg)
ComfyUI Node

๐Ÿ“น๐Ÿ”— Concat Videos (FFmpeg)

Join clips end-to-end with FFmpeg, right inside ComfyUI

By justUmenยทCreated 2 years agoยทUpdated about a year agoยท 545
๐Ÿ“น๐Ÿ”— Concat Videos (FFmpeg)
    • concat_path
    • ffmpeg_command
    โ—„number_of_videos2โ–บ
    โ—„output_filenameconcatenated.mp4โ–บ
    โ—„use_python_ffmpegfalseโ–บ
    โ—„FFMPEG_CONFIG_JSONโ€”โ–บ

    This node stitches videos together end to end - clip one, then clip two, then clip three, into a single file. It's a thin, honest wrapper around FFmpeg's concat, exposed as a ComfyUI node so you don't have to drop to a terminal. If you're generating video clips (Wan, LTX, Hunyuan, whatever) and want to chain them into one continuous output, this is the join step.

    Nothing fancy, and that's the appeal. It takes video paths in, runs FFmpeg, gives you the path to the joined result plus the exact command it ran.

    How it works

    You tell it how many videos you're joining, it exposes that many inputs, and it concatenates them in order. By default it shells out to a system FFmpeg (fast, standard). There's a toggle to use the Python-ffmpeg binding instead. Crucially, it can take an FFMPEG_CONFIG_JSON from the pack's FFmpeg Configuration node, so you can control the output codec, container, quality, and so on rather than accepting whatever defaults - useful because concatenating clips with mismatched encodings is exactly where video joins go wrong.

    The inputs and outputs that matter

    • number_of_videos - how many clips to join (2 to 50, default 2). Raising it adds more input slots.
    • output_filename - the name of the joined file (default concatenated.mp4).
    • use_python_ffmpeg - off (default) uses your system FFmpeg; on uses the Python binding. Leave it off unless system FFmpeg gives you trouble.
    • FFMPEG_CONFIG_JSON (optional) - a config blob from the FFmpeg Configuration node to set codec/quality/format on the output.

    Outputs are concat_path (the path to the joined video, which you can feed into a Video Preview or a save node) and ffmpeg_command (the exact command it ran - genuinely handy for debugging). It's an output node, so it caps the branch.

    How to install it

    ComfyUI Manager: search Bjornulf_custom_nodes, install, restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/justUmen/Bjornulf_custom_nodes
    pip install -r Bjornulf_custom_nodes/requirements.txt
    

    Restart ComfyUI. You also need FFmpeg installed and on your PATH - that's the real dependency here, separate from the pip packages. On Linux, apt install ffmpeg (or your distro's equivalent); on Windows, install FFmpeg and make sure it's callable.

    Common issues

    Two honest heads-ups. First, the pack's video nodes are developed and tested primarily on Linux - the author has said outright that the video and TTS nodes were originally Linux-only and may not behave on Windows. If you're on Windows and a video node misfires, that's a known rough edge, not you doing something wrong; the use_python_ffmpeg toggle is one lever to try, and setting an explicit FFmpeg path in the Configuration node is another.

    Second, concatenation is picky about matching formats. Clips with different resolutions, frame rates, or codecs can fail to join or produce a glitchy result. The fix is to normalize them first - route an FFMPEG_CONFIG_JSON through so every clip is re-encoded to the same spec, or convert them individually before joining. When a join fails, read the ffmpeg_command output; it usually tells you exactly what FFmpeg choked on. Also note the author rewrote all the FFmpeg nodes substantially across several versions, so make sure you're on a recent pull.

    CategoryBjornulf

    Inputs (4)

    NameTypeDefaultDescription
    number_of_videosINT22โ€“50โ€”
    output_filenameSTRINGconcatenated.mp4โ€”
    use_python_ffmpegBOOLEANfalseโ€”
    FFMPEG_CONFIG_JSONoptSTRINGโ€”

    Outputs (2)

    NameTypeDescription
    concat_pathSTRINGโ€”
    ffmpeg_commandSTRINGโ€”