Video + Audio Combiner (V3)
Mix the original audio AND a new track, volumes included
- video
- audio
- VIDEO
The "Simple" combiner in this pack replaces your video's audio with a new track. Video Audio Combiner (V3) is the one that mixes: it keeps the video's original audio and blends a new track in on top of it, with independent volume control for each. That's the difference that matters - think voiceover over a music bed, or sound effects layered onto your render's existing audio, rather than muting one in favor of the other. The node description is refreshingly plain about it: "Mixes video's original audio with a new audio track. Both volumes are adjustable (0=mute, 1=normal, 2=double)."
It's also the most modern node in this family, built on ComfyUI's newer typed IO - it takes real VIDEO and AUDIO sockets (not file paths) and returns a VIDEO. That means it slots into graphs where your video and audio exist as in-memory objects, straight from a video loader or an audio node, with no file juggling in between.
How it works
Under the hood it's still ffmpeg, but the command is a proper mix rather than a replace. The node saves the incoming video to a temp file, converts the audio tensor to a WAV, then runs ffmpeg with a filter_complex: the new audio gets looped if needed, trimmed to the video's duration, and volume-adjusted; the original audio track gets its own volume stage; then both go into amix - a true audio mixer with the two streams blended. The video track is stream-copied (-c:v copy), so your pixels stay untouched. The mixed result comes back out as a VIDEO type via the new VideoFromFile wrapper.
The inputs that matter
video(VIDEO) - input video; its original audio is preserved and mixed.audio(AUDIO) - the track to mix in.original_volume/mix_volume(0–2, default 1) - independent gain per track. 0 mutes, 1 is normal, 2 doubles.audio_start_seconds(default 0) - start position inside the new audio.loop_audio(boolean) - loop the new track if it's shorter than the video.
Single output: VIDEO, the mixed result. No output_path string here - it's a first-class video object you can preview or save with whatever video-output node you normally use.
Install
Manager → search AnotherUtils, or:
cd ComfyUI/custom_nodes
git clone https://github.com/marcoc2/ComfyUI-AnotherUtils.git
Restart. Important caveat: this node is built on the new ComfyUI video API (comfy_api.latest) and only registers when that API is present. If the node simply isn't in your menu, that's why - update ComfyUI itself first. It also wants ffmpeg (VHS's bundled binary if installed, else system ffmpeg) like the rest of the combiner family.
Common issues
The "node doesn't exist" problem is the number-one report, and it's a ComfyUI version issue, not a pack bug - the whole V3 family loads conditionally, and older ComfyUI builds never see it. Audio that ends too early is handled by loop_audio, but if you leave it off, the mix just has silence after the short track ends (duration follows the video's audio). And the volume scale is linear 0–2, not decibels - 2.0 is double, which is louder than it sounds, so nudge volumes in 0.1 steps rather than jumping to extremes.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | Input video (original audio will be preserved and mixed) | |
| audio | AUDIO | Audio to mix with the video's original audio | |
| original_volume | FLOAT | 1.00–2 | Volume of the video's original audio (0=mute, 1=normal, 2=double) |
| mix_volume | FLOAT | 1.00–2 | Volume of the mixed audio (0=mute, 1=normal, 2=double) |
| audio_start_seconds | FLOAT | 0.00–36000 | Start position in the new audio file (seconds) |
| loop_audio | BOOLEAN | false | If new audio is shorter than video, loop it to fill the duration |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | — |