Nodes/ComfyUI 1hewNodes/Save Video by Image
ComfyUI Node

Save Video by Image

You made 60 frames. Now turn them into an actual video.

By 1hew·Created about a year ago·Updated 7 days ago· 33
Save Video by Image
  • image
  • audio
  • file_path
fps8.00
filenamevideo/ComfyUI
auto_incrementtrue
save_outputtrue
save_metadatatrue

Here's a situation you'll hit the week you start doing anything with video in ComfyUI: your pipeline decoded a video into frames, or generated a batch of images frame-by-frame, and now you want an actual .mp4 on disk. The stock save nodes take a VIDEO object. You don't have one - you have an IMAGE batch sitting at the end of your graph. Save Video by Image is exactly for that moment.

It encodes an image batch as video frames in order, optionally muxes an audio track, and hands you back the absolute file path. No middleman, no "convert to video" detour.

How it works

The node streams raw frames to ffmpeg via stdin using PyAV - the same stack ComfyUI itself bundles, so no extra install. It auto-aligns width/height to even numbers (a hard requirement for most encoders), and if you pass an AUDIO input it writes the waveform to a temp WAV and muxes it in, cleaning up after itself. When save_metadata is on, it writes your prompt and workflow JSON into the container's comment field, so your video carries its own "workflow included" metadata the way your PNGs do.

The inputs that matter:

  • image - the batch, interpreted in time order. Frame 0 is frame 0. If your batch isn't in temporal order, fix that before this node; there's no sorting here.
  • fps - default 8. That's low on purpose (smooth-ish previews at small file sizes), but for anything you'll actually watch, bump it to 16, 24, or 30.
  • filename - default video/ComfyUI, saved under ComfyUI's output directory. Supports date placeholders like %date:yyyy-MM-dd%.
  • auto_increment - true gives you numbered files (name_00001_.mp4), false overwrites a fixed name. Keep it on unless you like losing renders.
  • save_output - true writes to output; false writes to temp (preview territory).
  • audio - optional, muxes an audio track.

Output is a single file_path string - the absolute path of the saved file. Wire it to a text-preview node if you want it visible in the UI, or just check ComfyUI/output/video/.

There's a nice alpha story here. If your frames are RGBA, you get a WEBM (VP9 + yuva420p) for playback, and when save_output is on it also exports a MOV (ProRes 4444) to the output directory - a real, chroma-key-friendly master file. That's a feature most stock save nodes don't have.

Install

Same pack for everything here - ComfyUI-1hewNodes:

cd ComfyUI/custom_nodes
git clone https://github.com/1hew/ComfyUI-1hewNodes

Restart ComfyUI. The video path relies on ffmpeg, which ComfyUI ships with; this node doesn't need anything beyond what's already in your ComfyUI install. Note the pack targets the newer v3 node API, so update ComfyUI if the nodes don't appear.

Common issues

  • No video appears in the output folder - check save_output; if it's off, it went to temp.
  • Timing is wrong - your batch order, not the fps, is usually the culprit.
  • Audio missing - the node prints a warning and continues without audio if muxing fails (e.g., sample rate mismatch); the video itself still saves.

The honest distinction: use this node when you have an IMAGE batch. If you already have a VIDEO object from a loader or a video-generation model, use the pack's Save Video node instead, which preserves the container format. Different tools, same pack.

Category1hewNodes/io

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
fpsFLOAT8.000.01–120
filenameSTRINGvideo/ComfyUI
auto_incrementBOOLEANtrue为 True 时自动编号;为 False 时固定文件名并覆盖。
save_outputBOOLEANtrue
save_metadataBOOLEANtrue
audiooptAUDIO

Outputs (1)

NameTypeDescription
file_pathSTRING