Nodes/WAS Node Suite v3/Save Video (Advanced)
ComfyUI Node Runs on cloud

Save Video (Advanced)

Save video with an audio track — the option core ComfyUI's node lacks

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Save Video (Advanced)
  • images
  • video
  • audio
  • video
  • file_path
  • filename
fps24.00
root
filename_prefixComfyUI
filename_delimiter_
filename_number_padding4
containerauto
codecComfyUI Auto
crf0.0
overwritefalse

Save Video (Advanced) writes a video file from an image batch, from a whole video, or from either with a sound track alongside. That last part is the headline: core ComfyUI's Save Video takes a video only and has no audio input, so if you're pairing generated frames with music or a voice track, this node is the one that lets you do it in a single save.

The "(Advanced)" label is doing two jobs. It distinguishes the node from core ComfyUI's own Save Video (which shares the old name), and it signals the extras: codec choice, quality control via CRF, overwrite behavior, and the audio socket. It also passes a VIDEO through its output, so it can sit in the middle of a chain rather than only at the end.

What goes in

  • images - frames to encode, in order, at the fps you set (24 is the default).
  • video - a whole video to write out, used in preference to images when both are wired.
  • audio - sound laid under the frames. Read only when images are encoded, since a video already carries its own.
  • crf - quality, lower is better and larger. 0 leaves the encoder's default; 18 is near-lossless, 23 typical, 28 small.
  • overwrite - write prefix.mp4 every run instead of a new number.

The codec menu is where "Advanced" earns its name. ComfyUI Auto copies a wired video through without re-encoding it, so nothing is lost when you're just relabeling or recontaining a clip. Then there are the ComfyUI codecs (auto and H.264) plus the pack's own list, each bringing its own container - the tooltip spells out which container each codec implies, so you don't end up asking for an H.264 stream inside an incompatible wrapper. Set container to auto and it writes mp4.

Filename handling and outputs

The name follows the same prefix/delimiter/numbering pattern as the pack's Image Save, and the pack's tokens resolve in it - [time(%Y-%m-%d)] becomes the date, [hostname] the machine name. filename_prefix, filename_delimiter and filename_number_padding (4 gives clip_0001) are the usual suspects.

Outputs are video (what was written, so the node can sit mid-chain), file_path (full path, for a log or archive step) and filename (its name alone). Wire file_path into a reporting node and your render log tells you exactly what got written and where.

Installing

Save Video (Advanced) ships in WAS Node Suite v3. ComfyUI Manager → search WAS Node Suite v3, or:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui

Restart after; needs ComfyUI 0.14.0+ and Python 3.10+. No packages download - the codecs run on what ComfyUI already provides, consistent with v3's zero-dependency rewrite. And because it writes under ComfyUI's output/temp folders by default, remember root can point at any folder you've added under paths.allow_write if you want videos somewhere more permanent.

Honest note: for the frames-to-video job with no audio, core ComfyUI's Save Video and this node overlap; the reason to reach for this one specifically is the audio input, the codec/crf control, or a workflow that wants the output on a VIDEO socket for further processing.

CategoryWAS Suite/IO

Inputs (12)

NameTypeDefaultDescription
fpsFLOAT24.000.01–240Rate the frames play at. Read only when images are encoded.
rootCOMBOWhich folder the files land in: ComfyUI's own 'output' or 'temp', or any folder added under paths.allow_write in config.yaml, listed by its own name. The name below it says the rest.
filename_prefixSTRINGComfyUIText before the number. Tokens resolve here, so [time(%Y-%m-%d)] becomes the date and [hostname] the machine name.
filename_delimiterSTRING_What separates the prefix from the number: clip_0001.mp4.
filename_number_paddingINT41–9Digits the number is padded to. 4 gives 0001.
containerCOMBOautoFile container, read only on the two ComfyUI codecs. auto writes mp4. The other codecs each bring their own: mkv for FFV1 and H264, mov for PRORES, webm for VP90, mp4 for the rest.
codecCOMBOComfyUI AutoHow the video is encoded. 'ComfyUI Auto' copies a wired video through without re-encoding it, so nothing is lost; 'ComfyUI H264' re-encodes to mp4. The rest are the pack's own: FFV1 and PRORES are lossless, AV01 and VP90 make the smallest files, AVC1 and H265 play everywhere.
imagesoptIMAGEFrames to encode, in order, at the rate below. Leave unconnected when a video is wired instead.
videooptVIDEOA whole video to write out. Used in preference to images when both are wired.
audiooptAUDIOSound laid under the frames. Read only when images are encoded, since a video already carries its own.
crfoptFLOAT0.00–51Quality, lower is better and larger. 0 leaves the encoder's default; 18 is near-lossless, 23 typical, 28 small.
overwriteoptBOOLEANfalseWrite prefix.mp4 every run instead of a new number, so the file is replaced rather than added to.

Outputs (3)

NameTypeDescription
videoVIDEOWhat was written, so the node can sit in the middle of a chain.
file_pathSTRINGFull path of the file written.
filenameSTRINGIts name alone, without the folder.