UV Audio Mux
Stick audio onto a silent render without re-encoding the picture
- output_path
Generated video is almost always silent, and the fastest way to fix that isn't a node at all - it's this one. UV_AudioMux takes a finished video file and a separate audio file and merges them into one output. If you've ever run a 90-second render, only to realize you need to glue a music track onto it in a video editor afterward, this is the node that skips that detour.
It's an output node (a terminal one), so it doesn't feed anything downstream - you wire your video and audio paths in, it does the merge, done. It's also one of the simplest nodes in the pack, which is exactly right: muxing is a job with no interesting parameters.
How it works
Under the hood it runs ffmpeg with a deliberately boring command:
- maps the first video stream from your video file
- maps the first audio stream from your audio file
- copies the video stream (
-c:v copy) - no re-encode, so the picture is untouched and the job is near-instant - re-encodes the audio to AAC
-shortest, so the output stops when the shorter of the two inputs runs out
That stream-copy detail is the one worth remembering. Because the video is copied, the container has to accept the codec as-is: muxing a ProRes master into an .mp4 will fail fast, and h264 into .mov usually won't play nicely. Keep the output extension aligned with the video codec - mp4 for h264/hevc, mov for ProRes, mkv/webm for AV1.
The inputs are as thin as the node: video_path, audio_path, output_path (default muxed_output.mp4), and overwrite (default on, so it clobbers an existing file without asking). One small gotcha on overwrite: with it on, ffmpeg runs with -y, so if you point it at a file you care about, it's gone.
Where the audio comes from
Two ways. Drag a file path in directly, or - the tidy trick - wire UV_LoadVideo's audio_ref output into audio_path. That output is just the source video's own path when the file has audio, so you can re-render a clip's frames through the pack and then re-attach the original sound in one wire. UV_SaveVideo has its own built-in audio_mode: mux that does roughly the same thing at export time; this node is for when you've already got the video file and just want to attach audio without re-encoding the picture.
Install
Same story as the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekatplayStudio/ComfyUI-UniversalVideoIO
cd ComfyUI-UniversalVideoIO
pip install -r requirements.txt
Restart ComfyUI and it's there. No models, no heavy deps - just ffmpeg, which the pack resolves from your system PATH first and then from the imageio-ffmpeg bundle. If the mux fails with an ffmpeg error, your binary is the first thing to check; a build without an AAC encoder is rare but real.
One more honest note: the audio always lands as AAC, so a lossless or high-bitrate source gets squashed to delivery-grade quality. For a music bed on a social clip that's completely fine. For an archival audio master, this isn't the node - but then, neither is anything else in this pack.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | — | |
| audio_path | STRING | — | |
| output_path | STRING | muxed_output.mp4 | — |
| overwrite | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_path | STRING | — |