Nodes/Chill Node Collection/Chill Enhanced Video Combine
ComfyUI Node

Chill Enhanced Video Combine

The video-combine node that picks your GPU encoder for you

By Megachill·Created about a month ago·Updated about a month ago· 0
Chill Enhanced Video Combine
  • images
  • audio
  • frames
  • filename
frame_rate24.00
codecH.264
containermp4
quality20
pingpongfalse
save_metadatatrue
filename_prefixvideo/%date:yyyy-MM-dd%/Chill_%date:hhmmss%
save_outputtrue
pass_framesfalse
crop_to_audiofalse
audio_codecAuto
audio_bitrate192k
save_first_framefalse
save_last_framefalse

You just generated 81 frames of Wan video and the one thing standing between you and a watchable file is ComfyUI's built-in "save the frames as a GIF or PNG sequence" life. This node is the other option: feed it an IMAGE batch, get an encoded H.264/H.265/VP9/AV1 video out the other side, via real FFmpeg. It's from a small, young pack called Chill Node Collection, and right now barely anyone has even loaded its page - but it's the kind of utility node that earns its place once you've hit the wall of "where do I actually get an .mp4 out of this graph?"

It competes with the heavyweight VideoHelperSuite VHS_VideoCombine, but where that one is a Swiss army knife with a settings panel the size of a CVS receipt, this is closer to "just give me an mp4." The headline feature is honest-to-goodness GPU encoder auto-detection: instead of you knowing whether h264_nvenc exists in your ffmpeg build, the node runs ffmpeg -encoders at runtime and picks the first working candidate - NVENC first, then QSV (Intel), then AMF (AMD), and finally software libx264/libx265. If you've ever pasted a random ffmpeg command from a forum and gotten Unknown encoder 'h264_nvenc', you know why that matters.

Under the hood it's dead simple and reasonably clever: the node writes your frames as raw RGB24 bytes straight into ffmpeg's stdin (no intermediate file), so it's fast and uses almost no disk. mp4 containers get +faststart, which browsers like. There's even a JS extension so the finished video plays back right inside the node.

The inputs that matter

Most defaults are fine. The ones a beginner actually touches:

  • codec / container - H.264 + mp4 is the safe default. VP9 and AV1 only work with webm/mkv; if you pick a mismatched combo the node silently falls back to the first compatible container and prints a note, so check your console if the file comes out .mkv.
  • quality - this is FFmpeg's CRF, and it's inverted from what you'd guess: lower is higher quality. 20 is a good default; 23+ gets visibly crunchy on animation, 14-17 is near-lossless and huge.
  • frame_rate - match your sampler. Wan frames at 24fps feel right.
  • pingpong - appends the interior frames in reverse for a seamless forward/reverse loop. This is the "make it loop" button, and it's the same trick AnimateDiff users lived on.
  • filename_prefix - supports %date:yyyy-MM-dd% / %time:HHmmss% macros and a subfolder, defaulting to video/YYYY-MM-DD/Chill_hhmmss.
  • audio (optional) - plug in a ComfyUI AUDIO value and it muxes it in; crop_to_audio trims the video to the audio's length.

Two outputs: frames (an IMAGE) and filename (a STRING - actually the full output path). Heads-up: frames comes back empty unless you flip on pass_frames, which returns the (possibly ping-ponged) sequence so downstream nodes can keep using it.

Install

Grab it via ComfyUI Manager (search "ComfyUI-ChillNodeCollection"), or the old-school way:

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

The only real dependency beyond ComfyUI is FFmpeg. It uses your system ffmpeg if it's on PATH; otherwise it falls back to the binary bundled with imageio-ffmpeg (installed by requirements.txt), so most people never need to install anything extra. Windows portable users should run the pip line with ../../../python_embeded/python.exe -m pip install -r requirements.txt from inside the node folder.

Gotchas

  • "FFmpeg was not found" means neither a PATH ffmpeg nor imageio-ffmpeg is importable. Install FFmpeg or re-run the requirements install.
  • It's an output node that always re-runs (IS_CHANGED returns nan), so it re-encodes every queue even if nothing changed. Fine for one-offs, annoying in long batch loops.
  • Quality vs. CRF confusion is the #1 "why is my video 4GB" trap. Lower number, bigger file.
CategoryChill/Video

Inputs (16)

NameTypeDefaultDescription
imagesIMAGE
frame_rateFLOAT24.000.1–240
codecCOMBOH.2644 options: H.264, H.265, VP9, AV1
containerCOMBOmp43 options: mp4, webm, mkv
qualityINT200–51
pingpongBOOLEANfalse
save_metadataBOOLEANtrue
filename_prefixSTRINGvideo/%date:yyyy-MM-dd%/Chill_%date:hhmmss%
save_outputBOOLEANtrue
pass_framesBOOLEANfalse
audiooptAUDIO
crop_to_audiooptBOOLEANfalse
audio_codecoptCOMBOAuto4 options: Auto, AAC, Opus, MP3
audio_bitrateoptCOMBO192k7 options: 64k, 96k, 128k, 160k, 192k, 256k, +1
save_first_frameoptBOOLEANfalse
save_last_frameoptBOOLEANfalse

Outputs (2)

NameTypeDescription
framesIMAGE
filenameSTRING