Save Video+
The video saver that actually gives you H.265, CRF control, and audio
- video
- latent
- filename
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) orh265/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), oryuv444(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.latentfile 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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | The video to save. | |
| filename_prefix | STRING | Vids/%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. |
| codec | COMBO | h264 | Video codec. h264 = 8-bit, better compatibility. h265/HEVC = 10-bit, better compression & gradients. |
| chroma | COMBO | yuv420 | Chroma subsampling. yuv420 = most compatible. yuv422 = better color for video editing. yuv444 = best color, no chroma loss. |
| crf | INT | 180–51 | Constant Rate Factor (quality). Lower = better quality, larger file. 0 = lossless 18-23 = high quality 28+ = lower quality. Recommended: 18-28. |
| save | BOOLEAN | true | Save to output folder. Off = preview only (saves to temp with fast encoding). |
| save_latent | BOOLEAN | true | Save latent alongside the video. Off = don't save the connected latent. |
| browser_compat | BOOLEAN | true | When 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_play | BOOLEAN | true | UI preview behavior: when ON, the Save Video+ preview starts playback automatically when a new video is displayed. |
| latentopt | LATENT | Optional latent to save alongside the video (same filename with .latent extension). | |
| metadataopt | STRING | Optional metadata JSON string to embed in the video (e.g. from VACE Stitcher). | |
| exec_startopt | STRING | Unix timestamp stamped by the UI when Execute is pressed. Enables %time% in filename_prefix (workflow generation seconds, excluding save/encode). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| filename | STRING | — |