ACES IO — Video Saver
Turn a frame batch into MP4, ProRes, WebP, or GIF without leaving the graph
- images
- output_dir
- ocio_config
- input_transform
- colorspace
- images
- saved_path
ACES IO - Video Saver is the export half of this pack's "get AI frames into a deliverable" story. Feed it any IMAGE batch - from the EXR Loader, the Video Loader, or a batch of generated frames - and it writes a real video file. The headline feature is Apple ProRes MOV export in four flavors, because "AI output is just a bunch of PNGs" is exactly the thing that gets you thrown out of a Nuke or DaVinci Resolve pipeline. This node hands over 10-bit ProRes that an editor can drop straight onto a timeline.
What you get
The format dropdown is the whole node:
- MP4 (H.264) - via OpenCV. Plays everywhere; the default, and the right call for a quick review clip.
- MOV ProRes 422 / 422 HQ - 10-bit YUV 4:2:2 via PyAV/FFmpeg's
prores_ksencoder. - MOV ProRes 4444 / 4444 XQ - 10-bit 4:4:4, and here's the gem: alpha is preserved if your tensor has 4 channels. ProRes 4444 with alpha is the standard way to deliver transparency to a compositor.
- Animated WebP - high quality, browser-friendly, good for sharing a moving preview.
- Animated GIF - 256-colour limit, but it's the only format every platform on Earth renders.
Shared inputs: output_dir (Browse to pick), filename (extension added automatically - the placeholders tell you not to type one), and fps (1–120, default 24). Optional color handling mirrors the EXR Saver: connect ocio_config and set input_transform (default ACEScg, your working space) and colorspace (default sRGB Encoded Rec.709 (sRGB), what gets encoded into the file). The node converts before writing, so you can save display-ready video straight from linear ACEScg. Disconnect the config and it encodes pixels as-is.
Outputs: images (the tensor, passed through unchanged so the node can sit inline without breaking your chain) and saved_path (STRING - wire it to a text/note node to see where the file landed).
Install
Part of BISAM20/ComfyUI-ACES-IO. Manager → Install Custom Nodes → ComfyUI-ACES-IO, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/BISAM20/ComfyUI-ACES-IO
cd ComfyUI-ACES-IO
pip install -r requirements.txt
Two format-specific dependencies: ProRes MOV needs av (PyAV), MP4 needs opencv-python - both in requirements.txt. If a format raises "Install with: pip install av" (or cv2), that's what's missing.
Gotchas
- Don't encode linear values into an MP4. Without a connected config, an ACEScg batch saved as H.264 looks dark and grey - the encoder assumes display-encoded sRGB. Connect
ocio_configand setcolorspaceto sRGB, or pipe a Display Transform first. - Frame count = your tensor's batch size. If the Video Loader pulled 50 frames, you get a 50-frame video. There's no loop or repeat knob.
- Alpha only survives ProRes 4444/4444 XQ (and technically WebP). MP4 and the 422 ProRes variants drop the 4th channel - that's the format, not the node.
- Memory again: the whole batch is processed in one go; huge 4K sequences can blow RAM. Trim the range upstream.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| output_dir | ACES_PATH | /root/ | — |
| filename | STRING | output | — |
| format | COMBO | MP4 (H.264) | 7 options: MP4 (H.264), MOV ProRes 422, MOV ProRes 422 HQ, MOV ProRes 4444, MOV ProRes 4444 XQ, Animated WebP, +1 |
| fps | FLOAT | 24.01–120 | Frames per second |
| ocio_configopt | OCIO_CONFIG | — | |
| input_transformopt | ACES_COLORSPACE | ACEScg | Color space of the incoming image (working / pipe space) |
| colorspaceopt | ACES_COLORSPACE | sRGB Encoded Rec.709 (sRGB) | Color space to encode into the video file |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| saved_path | STRING | — |