Side-by-side
| Aspect | SaveVideo | VHS_VideoCombine |
|---|---|---|
| Ships with | ComfyUI core — no install | ComfyUI-VideoHelperSuite custom node pack |
| Input | One VIDEO object — build it from frames with Create Video, or pass Load Video / model output | IMAGE batch, or LATENT plus an optional VAE decoded inside the node |
| Frame rate | Set upstream on Create Video (fps, default 30) | On the node itself (frame_rate, default 8) |
| Audio | Travels inside the VIDEO; muxed as AAC (MP4/MKV) or Opus (WebM) | Separate AUDIO input; writes a silent video, then an "-audio" file |
| Output socket | VIDEO — the input video, unchanged, for chaining | VHS_FILENAMES — ordered list of every file written |
| Containers | MP4, MKV, WebM | MP4, WebM, MOV (ProRes), MKV (FFV1), GIF, WebP, PNG sequences |
| Codecs | H.264 and AV1 (WebM is AV1-only) | H.264, H.265, AV1, ProRes, FFV1, NVENC variants, GIF paths |
| Quality controls | Encoding mode auto / re-encode with crf (H.264 23, AV1 30) | Per-format widgets: crf, pix_fmt, bitrate, profile |
| Bit depth & HDR | 8- or 10-bit; sRGB, HDR (HLG), or HDR PQ — chosen on Create Video | 10-bit pixel formats on supported formats |
| Transparency | No — writes yuv420p / yuv420p10le | Yes — WebM yuva420p and ProRes 4444 profiles |
| Encoder | In-process via PyAV — no FFmpeg binary needed | FFmpeg subprocess — FFmpeg formats hidden if no binary is found |
| Workflow metadata | prompt + workflow as container tags (MP4: mdta keys); off only with --disable-metadata | save_metadata toggle (on by default for main formats) plus a first-frame metadata PNG |
| Files per run | One video file | Metadata PNG + video, plus an "-audio" file when audio is wired |
| Long videos | Whole VIDEO handled in one execution | meta_batch (VHS_BatchManager) streams frames across executions |
| Re-save an existing file | Remuxes without re-encoding when container and codec are compatible | Always encodes from the incoming frames |
Which one should you use?
Choose SaveVideo when…
- You want a stock ComfyUI install with no custom nodes or FFmpeg setup
- Your graph already outputs VIDEO (Load Video, native video-model templates, API video nodes)
- You want exactly one self-describing file per run
- You need 10-bit or HDR (HLG/PQ) output
- You want to re-save a clip without a lossy re-encode
Choose VHS_VideoCombine when…
- You need GIF, WebP, H.265, ProRes, FFV1, or NVENC output
- You need transparency (WebM alpha or ProRes 4444)
- Your frames are too long for memory and need meta_batch streaming
- You want loop_count or pingpong playback
- You are maintaining AnimateDiff-era workflows built around VHS nodes
Workflow metadata and provenance
Both nodes embed the ComfyUI prompt and workflow in the file by default, but differently. SaveVideo writes them as JSON container tags on the one file it produces — in MP4 as QuickTime mdta keys; in MKV and WebM as Matroska tags. The only switch is ComfyUI’s global --disable-metadata flag. VHS_VideoCombine embeds prompt and workflow through FFmpeg metadata when save_metadata is on, and additionally saves a first-frame PNG that carries the full ComfyUI metadata as a sidecar.
Neither copy is durable. Container metadata disappears in editors, transcodes, and platform uploads; the VHS sidecar PNG survives only as long as it stays next to the video. Numonic reads the embedded workflow from both nodes’ MP4 output, and records the link between each render and its source workflow, models, seeds, and prompts independently of what survives inside the file. SaveVideo’s MKV and WebM tags are not yet read by Numonic’s in-file extractor, so save MP4 when in-file provenance matters.
Full node references
Frequently Asked Questions
Quick answers about SaveVideo vs VHS_VideoCombine.
Keep the workflow behind every video
Whichever node you save with, embedded metadata is one transcode away from gone. Numonic links every render to its source workflow, models, seeds, and prompts, independently of what survives inside the file.