Video Combine
Save your frame batch as an actual video file
- images
- audio
- filename
The "render it out" node of the pack: take the IMAGE batch your sampler produced and write it to a real video file on disk - mp4, avi, mkv, mov, or wmv - with an optional audio track muxed in. Video Combine is an output node, so it's a terminal point in your graph: whatever you wire in comes out as a file.
The defaults say a lot about its ancestry. frame_rate of 8 and a filename_prefix of "AnimateDiff" are straight out of the SD1.5 AnimateDiff playbook (16 frames at 8fps was the classic clip), so this node is clearly descended from that era's save step. It still works fine for any frame batch - just change the defaults.
Mechanism, straight from the source: frames go through OpenCV's VideoWriter with a format-specific codec - mp4v for mp4/mov, XVID for avi, X264 for mkv, WMV2 for wmv. The pingpong toggle mirrors the sequence (A, B, C → A, B, C, B, A), the classic trick for turning a short animation into a seamless loop. If you feed the optional audio input, it writes the video, writes a WAV, then hands both to ffmpeg to mux into the final container.
Inputs:
images(IMAGE),frame_rate(default 8, min 1),filename_prefix(default "AnimateDiff"),format(the five containers above),pingpong(off),save_output(on - turn it off to dump to the temp dir and skip output clutter),custom_output_path(default empty).- Optional
audio(AUDIO) - wire this from Video Sequence Processor'saudiooutput (assuming you got theavpackage working there) or from any audio loader.
Output: filename (STRING) - the full path of the file it wrote.
Now the fiddly part, which the README under-sells: audio muxing depends on finding ffmpeg. The node checks, in order, the FFMPEG_PATH env var, an imageio-ffmpeg bundled binary, a Scripts/ffmpeg.exe next to your Python, then your PATH. Notice imageio-ffmpeg isn't in the pack's requirements, so on a fresh install those middle checks usually miss and it falls back to PATH. The good news: if ffmpeg isn't found, it doesn't crash - it saves the video without audio and prints a note. You get your clip either way; you just might not get your soundtrack. Install system ffmpeg (or pip install imageio-ffmpeg) if you want the mux.
Two more honest notes. custom_output_path is only honored if that directory already exists - otherwise it silently falls back to the normal output folder. And while all five formats are offered, mp4 is the one that just works everywhere; mkv via the X264 fourcc and wmv via WMV2 are the cranky corners. If a format misbehaves, blame the container/codec pairing before you blame the node.
Install: ComfyUI Manager → search "ComfyUI Video BC", or cd ComfyUI/custom_nodes && git clone https://github.com/JioJe/comfyui_video_BC and restart. Real dependencies: opencv-python for the writing, plus a system ffmpeg only if you want audio muxing. No models to download.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| frame_rate | FLOAT | 8 | — |
| filename_prefix | STRING | AnimateDiff | — |
| format | COMBO | 5 options: video/mp4, video/avi, video/mkv, video/mov, video/wmv | |
| pingpong | BOOLEAN | false | — |
| save_output | BOOLEAN | true | — |
| custom_output_path | STRING | — | |
| audioopt | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| filename | STRING | — |