ComfyUI Node

Save Video+

The video saver that actually gives you H.265, CRF control, and audio

By FranckyB·Created 6 months ago·Updated 3 days ago· 13
Save Video+
  • video
  • latent
  • filename
filename_prefixVids/%date:yy-MM-dd%/vid_%date:HH-mm-ss%
codech264
chromayuv420
crf18
savetrue
save_latenttrue
browser_compattrue
auto_playtrue
metadata
exec_start

Save Video+ is the save node you wish the base install shipped with. Where ComfyUI's built-in video saver gives you a filename and not much else, this one gives you a real codec choice (H.264 or H.265), a CRF quality dial, chroma subsampling control, audio muxing, workflow metadata embedding, and - the feature that makes it a workflow tool rather than a write-file node - an option to save the latent alongside the video so you can re-enter the pipeline losslessly.

It's the flagship of ComfyUI-FBnodes, François Beaudry's utility pack, and the rest of the pack is largely built around it: VACE Stitcher and Get Video Components+ both understand the .latent files it writes.

How it works

The video (VIDEO) input is what you're saving. Then the choices that matter:

  • codec - h264 (8-bit, max compatibility) or h265/HEVC (10-bit, better compression and smoother gradients). If you're delivering somewhere with picky players, h264; if it's your own archive, h265.
  • crf (0–51, default 18) - the constant-rate-factor quality dial. Lower is better; 0 is lossless, 18–23 is the sweet spot for high quality, 28+ gets small and crunchy. This is the single most useful control on the node, and the README's recommended range of 18–28 is a fair baseline.
  • chroma - yuv420 (most compatible), yuv422 (better color for editing), or yuv444 (no chroma loss). Pick yuv444 and the node also generates a browser-compatible preview clip so you can still watch it in the UI - a nice touch since yuv444 files often won't preview directly.
  • save (BOOLEAN) - OFF flips it into preview-only mode: fast encoding to temp, no permanent file. That's the "is this take worth keeping?" mode.
  • save_latent (BOOLEAN) - writes a .latent file beside the video so Load Latent File / Get Video Components+ can recover the exact generation state. This is the pack's signature move.

The filename_prefix input supports date patterns like %date:yy-MM-dd% and %time% so you can organize output into dated folders without a filename-math node. Audio comes along via the AUDIO carried inside the VIDEO stream, workflow metadata is embedded in the file, and the node outputs the filename (STRING) it actually wrote - handy for wiring into a preview node or a notes field.

The inputs that matter

  • video (VIDEO) - what you're saving (often the output of VACE Stitcher or Clip Stitcher).
  • codec, crf, chroma - the quality stack.
  • save - the preview-only toggle.
  • save_latent - keep the lossless intermediate.
  • latent (LATENT, optional) - the latent to save alongside, when it isn't already in the stream.

Installing it

ComfyUI Manager - search "ComfyUI-FBnodes" - or:

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

Restart ComfyUI. This node is the reason av (PyAV) is in requirements.txt - it does all the encoding. No model files.

Common issues

Two things trip people up. First, H.265 10-bit files frequently won't preview in a browser - that's what browser_compat and the auto-generated H.264 preview are for, so keep it ON unless you know the player handles HEVC. Second, crf is a quality target, not a size target: two clips at the same CRF can come out very different sizes depending on how noisy the content is - lower CRF for animation-style flat content, higher for noisy video, and expect to iterate. And if a saved video looks washed out or dark, that's almost always a VAE/decode issue upstream, not this node - it encodes what it's given.

CategoryFBnodes

Inputs (12)

NameTypeDefaultDescription
videoVIDEOThe video to save.
filename_prefixSTRINGVids/%date:yy-MM-dd%/vid_%date:HH-mm-ss%The prefix for the file to save. Supports: %date:format% patterns (e.g. %date:yy-MM-dd%). %time% = workflow generation time.
codecCOMBOh264Video codec. h264 = 8-bit, better compatibility. h265/HEVC = 10-bit, better compression & gradients.
chromaCOMBOyuv420Chroma subsampling. yuv420 = most compatible. yuv422 = better color for video editing. yuv444 = best color, no chroma loss.
crfINT180–51Constant Rate Factor (quality). Lower = better quality, larger file. 0 = lossless 18-23 = high quality 28+ = lower quality. Recommended: 18-28.
saveBOOLEANtrueSave to output folder. Off = preview only (saves to temp with fast encoding).
save_latentBOOLEANtrueSave latent alongside the video. Off = don't save the connected latent.
browser_compatBOOLEANtrueWhen ON, non-browser-compatible clips get an auto-generated H.264 preview for UI playback. When OFF, UI uses the original file and may not preview in browser.
auto_playBOOLEANtrueUI preview behavior: when ON, the Save Video+ preview starts playback automatically when a new video is displayed.
latentoptLATENTOptional latent to save alongside the video (same filename with .latent extension).
metadataoptSTRINGOptional metadata JSON string to embed in the video (e.g. from VACE Stitcher).
exec_startoptSTRINGUnix timestamp stamped by the UI when Execute is pressed. Enables %time% in filename_prefix (workflow generation seconds, excluding save/encode).

Outputs (1)

NameTypeDescription
filenameSTRING