🎬🪡AGSoft Video Concatenate Plus
Concatenate without the 'everything must match' lecture
- video_path
- duration_seconds
- duration_timecode
- file_size_mb
- width
- height
- fps
- frames_est
🎬🪡AGSoft Video Concatenate Plus is the sibling that re-encodes. Where the plain Video Concatenate stream-copies clips and demands they all match, this one happily takes a pile of clips of different sizes, frame rates, and codecs, normalizes them, and produces a single consistent file - with transitions, fades, and audio handling on top. It's slower than a stream copy, obviously, but it's the "just make it work" node.
Set inputs_count and the node grows that many video_N inputs. Then the fields that do the real work:
transition_type/transition_duration- a global transition between clips (defaultfade,duration1s; 0 = hard cut). This is the biggest reason to pick Plus over the plain version.resize_mode(defaultfirst_clip) - how the output resolution is chosen, withfit_mode(letterbox/crop/stretch) deciding how clips that don't match the target are fitted, pluscustom_width/custom_heightfor hand-picked output.output_fps- defaultautouses the first clip's frame rate; pick a common one (24, 30, 60...) to force consistency.audio_mode- defaultautokeeps each clip's original audio and pads missing audio with silence. The pack's fuller audio tools (loudnorm etc.) live on the audio concatenator.auto_color- an experimental per-clip color normalization. It's labeled experimental for a reason; leave it off unless clips visibly clash.video_fade_in/video_fade_out,audio_fade_in/audio_fade_out- global fades for the whole result, nice for a finished piece that should fade up from black.audio_loudnorm- EBU R128 normalization on the final audio, if you want every clip's sound leveled too.encoder_mode-autouses NVENC when available, otherwise CPU; forcenvencorcpuwhen you know your hardware.quality_preset-fast/balanced/quality.
Outputs
The standard pack set: video_path (STRING), duration_seconds, duration_timecode, file_size_mb, width, height, fps, frames_est. If output_path is empty, the result lands in ComfyUI/output.
Install
Part of the comfyui-AGSoft pack. ComfyUI Manager → search "comfyui-AGSoft" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft
Restart. No model downloads; the node drives the bundled FFmpeg (or a system ffmpeg on PATH).
Where people get burned
If you force nvenc on a machine without a working NVENC build, you'll get an encoder error - that's the classic one. Drop to auto or cpu and it recovers. Otherwise, this is a forgiving node: it's the one you reach for when clips were generated at different times and nothing matches, and you'd rather render once than hand-normalize six inputs.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| output_name | STRING | output_video_plus.mp4 | Output filename. The extension is kept as entered (.mp4 by default). --- Имя итогового файла. Расширение сохраняется как введено (по умолчанию .mp4). |
| output_path | STRING | Output directory. If empty, ComfyUI/output is used. --- Папка сохранения. Если пусто, используется ComfyUI/output. | |
| inputs_count | COMBO | 2 | Number of video clips to concatenate. --- Количество клипов для склейки. |
| transition_type | COMBO | fade | Global transition type. cut = no transition (hard cut). random = random transition at each junction. --- Глобальный тип перехода. cut = без перехода (жёсткая склейка). random = случайный переход на каждом стыке. |
| transition_duration | FLOAT | 1.00–10 | Global transition duration in seconds. 0 = cut mode. Automatically clamped if longer than a clip. --- Глобальная длительность перехода в секундах. 0 = режим cut. Автоматически ограничивается, если длиннее клипа. |
| audio_mode | COMBO | auto | auto = keep original audio, fill missing audio with silence. mute = silent output. --- auto = сохранять оригинальный звук, отсутствующий заменять тишиной. mute = итоговое видео без звука. |
| encoder_mode | COMBO | auto | auto = use NVENC if available, otherwise CPU. nvenc = force NVIDIA NVENC. cpu = force libx264. --- auto = NVENC, если доступен, иначе CPU. nvenc = принудительно NVIDIA NVENC. cpu = принудительно libx264. |
| quality_preset | COMBO | balanced | Encoding quality preset (speed vs quality trade-off). --- Пресет качества кодирования (баланс скорости и качества). |
| output_fps | COMBO | auto | Common output FPS. auto = use FPS from the first clip. --- Общий FPS результата. auto = FPS первого клипа. |
| resize_mode | COMBO | first_clip | How to choose the output resolution. first_clip = first clip size. max_size/min_size = extremes. custom = use custom_width/custom_height. --- Как выбирать разрешение результата. first_clip = по первому клипу. max_size/min_size = экстремумы. custom = использовать custom_width/custom_height. |
| fit_mode | COMBO | letterbox | letterbox = fit with black bars. crop = fill and crop center. stretch = stretch to output size. --- letterbox = вписать с чёрными полосами. crop = заполнить и обрезать центр. stretch = растянуть. |
| custom_width | INT | 00–8192 | Custom width, used only when resize_mode = custom. 0 = fallback. --- Кастомная ширина, только при resize_mode = custom. 0 = fallback. |
| custom_height | INT | 00–8192 | Custom height, used only when resize_mode = custom. 0 = fallback. --- Кастомная высота, только при resize_mode = custom. 0 = fallback. |
| auto_color | COMBO | off | Experimental auto color normalization per clip. --- Экспериментальная авто-нормализация цвета для каждого клипа. |
| video_fade_in | FLOAT | 0.00–60 | Global video fade-in duration in seconds (start of the result). --- Длительность глобального появления видео в секундах (начало результата). |
| video_fade_out | FLOAT | 0.00–60 | Global video fade-out duration in seconds (end of the result). --- Длительность глобального затухания видео в секундах (конец результата). |
| audio_fade_in | FLOAT | 0.00–60 | Global audio fade-in duration in seconds. --- Длительность глобального появления звука в секундах. |
| audio_fade_out | FLOAT | 0.00–60 | Global audio fade-out duration in seconds. --- Длительность глобального затухания звука в секундах. |
| audio_loudnorm | COMBO | off | Apply EBU R128 loudness normalization to the final audio. --- Применить нормализацию громкости EBU R128 к итоговому звуку. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |
| duration_seconds | FLOAT | — |
| duration_timecode | STRING | — |
| file_size_mb | FLOAT | — |
| width | INT | — |
| height | INT | — |
| fps | FLOAT | — |
| frames_est | INT | — |