Nodes/AusBoss/Save Video πŸ†Ž
ComfyUI Node

Save Video πŸ†Ž

The video saver that knows what 'lossless' means

By ausbossΒ·Created 2 months agoΒ·Updated 3 days agoΒ· 2
Save Video πŸ†Ž
  • frames
  • audio
  • video
  • file_path
β—„fps16β–Ί
β—„filename_prefixAusBoss/videoβ–Ί
β—„crf19β–Ί
β—„formatmp4 h264β–Ί
β—„pingpongfalseβ–Ί
β—„save_metadatatrueβ–Ί

The end of every video workflow is the same disappointment: you rendered something beautiful and the save node mangled the colors, dropped the timing, or shipped a file that loops with a visible jump. Save Video πŸ†Ž is the AusBoss pack's answer - one node that encodes frames (or a connected core VIDEO) to a real spread of formats, tags them properly, and doesn't freeze the UI while it works.

The formats

The format dropdown covers the realistic choices:

  • mp4 h264 - plays everywhere. The default, and the right default.
  • mp4 h265 - roughly half the size at the same quality where supported.
  • mp4 h264/h265 nvenc - the same codecs encoded on an NVIDIA GPU instead of the CPU. Much faster, slightly larger.
  • webm vp9 / webm av1 - for the web, muxing Opus audio.
  • mov prores - a ProRes HQ editing master.
  • mkv ffv1 - bit-exact lossless, and yes, very large. This is the "archive the master" option.
  • gif / webp - silent, loop forever, and hold every frame in memory, so keep them to short clips.

crf (default 19) is the quality dial - lower is better and larger. 19 is visually lossless for h264; vp9 tolerates a few points higher on the same scale.

The details that make it feel finished

  • bt709 tagging on the video formats, so platforms don't shift your colors. The sort of thing you only notice when it's missing.
  • save_metadata (default true) embeds the prompt and workflow in the file - drag that mp4 back onto the canvas and the graph restores. Turn it off when sharing a file you don't want your prompts inside. gif/webp never carry metadata.
  • pingpong bounces the clip forward then backward for a seamless loop without repeating the turnaround frames. The standard "make it loop" trick, built in.
  • Encoding runs off the executor thread with per-frame progress, so a long export doesn't freeze the UI.

Wiring it right

fps defaults to 16 - wire it from Load Video's fps output to preserve source timing, or connect a video input and the clip brings its own rate (a differing widget rate is logged once, then ignored). audio muxes a track in, e.g. Load Video's audio output. The frames input is a BHWC batch; video supersedes frames and audio when both are connected.

One honest caveat in the tooltip: when you feed a core VIDEO, ComfyUI decodes the whole file into memory before this node sees a frame, and that phase reports no progress and doesn't stop on Cancel. Wiring frames instead keeps the whole run interruptible.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/ausboss/ComfyUI-AusBoss.git

Restart ComfyUI and search for AusBoss (Manager: ComfyUI-AusBoss). No extra Python dependencies - encoding uses PyAV, bundled with ComfyUI. Minimum ComfyUI 0.27.1. NVENC needs an NVIDIA GPU with an encode-capable encoder; everything else runs on CPU.

Troubleshooting

If an NVENC format errors on a non-NVIDIA GPU, that's expected - switch to the CPU pair. If a long clip's export appears frozen, that's the decode phase on a connected VIDEO; wire frames for interruptibility. And if colors shift when you upload a result, check that you're not saving gif/webp (no color tagging) - mp4/mov/webm get the bt709 tag automatically.

CategoryπŸ†Ž AusBoss/Video

Inputs (9)

NameTypeDefaultDescription
fpsFLOAT160.01–240Playback frame rate; wire Load Video's fps output to match the source. A connected video input brings its own rate and overrides this widget. Fractional rates like 23.976 and 29.97 can be typed in.
filename_prefixSTRINGAusBoss/videoSaved under the output folder; subfolders are created automatically.
crfINT190–51Encode quality: lower is better and larger. 19 is visually lossless for h264; h265 and vp9 read the same scale (vp9 tolerates a few points higher).
framesoptIMAGEBHWC frame batch to encode. Not needed when a video is connected.
audiooptAUDIOOptional track muxed into the file, e.g. Load Video's audio output.
videooptVIDEOOptional core VIDEO. When connected, its frames and audio supersede the frames and audio inputs, and its own frame rate wins over the fps widget; a differing widget rate is logged once to the console. ComfyUI core decodes the whole file into memory before this node sees a frame: that phase reports no progress and does not stop on Cancel, which takes effect once the encode starts. Wiring frames instead keeps the whole run interruptible.
formatoptCOMBOmp4 h264Container and codec. mp4 h264 plays everywhere; mp4 h265 halves the size at the same quality where supported; the nvenc pair encodes on an NVIDIA GPU instead of the CPU (much faster, slightly larger); webm vp9 and webm av1 suit the web and mux Opus; mov prores is a ProRes HQ editing master; mkv ffv1 is bit-exact lossless and very large. gif and webp are silent, loop forever, and hold every frame in memory - keep those to short clips.
pingpongoptBOOLEANfalsePlay the clip forward then backward so it loops seamlessly. Roughly doubles the frame count and the encode time; the first and last frames are not repeated at the turnaround.
save_metadataoptBOOLEANtrueEmbed the prompt and workflow in the file, so an mp4 dragged back onto the canvas restores its graph. Turn off to share a file without your prompts and node graph inside it. gif and webp never carry metadata.

Outputs (1)

NameTypeDescription
file_pathSTRINGAbsolute path of the file this run saved, for downstream nodes that want the file itself.