Video Saver (Deprecated)
Video Saver
- images
- audio
- image_info
- video_info
- image
- audio
- source_image_info
- video_info
- file_path
Video Saver is the bookend to the pack's Video Reader: it takes the image frames your workflow generated and writes them out as an MP4 - with the full generation recipe embedded as metadata. That second half is the point. ComfyUI has plenty of ways to dump frames to video, but very few that let you save a video and later recover how it was made without you having kept a separate log file.
It's built around the same image_info concept as the rest of the Info-Prompt-Toolkit pack: settings ride along inside the file so the next pass, or whoever you share the clip with, can reconstruct the workflow. That's the A1111-infotext idea the ecosystem has standardized on, applied to video.
What you set
The inputs that matter, in the order you'll touch them:
- images - the frames. An image batch or list of images. Required.
- codec -
av1(default) orh264, both in an MP4 container. AV1 gives smaller files; h264 is more universally playable. Pick based on where the file's going to end up. - av1_crf / h264_crf - the quality knob for the active codec. Lower = better quality, bigger file. The README's phrasing is right: the active CRF field is the quality/file-size tradeoff you actually control. Defaults are 23 for AV1, 19 for h264, and honestly those are sane starting points.
- frame_rate - output fps (defaults to 24).
- loop_count and pingpong - loop the clip N extra times, or play forward-then-backward (useful for the short seamless loops people love to generate).
pingpongskips duplicating the first and last frames so the loop stays clean. - output_dir / output_subdir - where under
ComfyUI/outputit lands;output_subdircan organize by date. - filename_suffix - the default naming appends a suffix to auto-incrementing names. Connect file_stem instead to force an exact filename (
<file_stem>.mp4).
Optional inputs worth knowing: audio (mux a track in), image_info and video_info (the metadata that gets embedded - feed it from Video Reader or the pack's image-info nodes to round-trip your settings).
Outputs
It's an output node, but it still passes data through: image, audio, source_image_info, and video_info come back out so you can keep chaining. file_path tells you exactly where the file landed - handy if you're scripting.
Installing and the dependency trap
Install via ComfyUI Manager (search "ComfyUI-Info-Prompt-Toolkit") or:
cd ComfyUI/custom_nodes
git clone https://github.com/kinorax/comfyui-info-prompt-toolkit.git
cd comfyui-info-prompt-toolkit
pip install -r requirements.txt
Then the trap: av (PyAV) is not installed by this pack. It's deliberately left out of requirements.txt so non-video nodes stay light - the file's comment says so verbatim. Video Saver errors out with "PyAV is required to save videos. Install av first." until you run:
pip install av
Restart ComfyUI afterward. If you get a "codec unavailable in this PyAV/FFmpeg build" error, that's your FFmpeg build missing an encoder (common for AV1 on some builds), not a node bug - switch to h264 or rebuild PyAV with the codecs you want.
One more thing
The same pack ships a newer Video Saver (class IPT-VideoSaverV2) that adds VP9 and FFV1 codecs plus color-encoding controls. This page is the original IPT-VideoSaver, which sticks to AV1/H.264 - fine for most people, but if you need lossless FFV1 or WebM output, grab the V2 instead. Both need the same PyAV install. And like the rest of this pack, it wants a recent ComfyUI (≥ 0.17.0).
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Image or image batch to save as video | |
| filename_suffix | STRING | video | Suffix part of output filename |
| output_dir | STRING | Base output directory under ComfyUI output | |
| output_subdir | COMBO | none | Output sub directory format |
| codec | COMBO | av1 | Output video codec in MP4 container |
| av1_crf | INT | 230–63 | AV1 CRF (0..63, lower is higher quality) |
| h264_crf | INT | 190–51 | H.264 CRF (0..51, lower is higher quality) |
| frame_rate | FLOAT | 160.001–1000 | Output frame rate (supports up to 3 decimal places) |
| loop_count | INT | 0 | Number of extra loops after first playback |
| pingpong | BOOLEAN | false | Play forward then backward (excluding first and last duplicated endpoints) |
| audioopt | AUDIO | Optional audio to mux into output video | |
| image_infoopt | IPT-IMAGEINFO | Source image info | |
| video_infoopt | IPT-IMAGEINFO | Video generation info | |
| file_stemopt | STRING | Optional output filename stem; when connected, save as <file_stem>.mp4 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| audio | AUDIO | — |
| source_image_info | IPT-IMAGEINFO | — |
| video_info | IPT-IMAGEINFO | — |
| file_path | STRING | — |