Nodes/ComfyUI-ACES-IO/ACES IO — Video Loader (MOV/ProRes)
ComfyUI Node

ACES IO — Video Loader (MOV/ProRes)

Drop ProRes and MP4 footage straight into your graph

By BISAM20·Created 6 months ago·Updated 6 months ago· 9
ACES IO — Video Loader (MOV/ProRes)
  • file_path
  • image
  • frame_count
  • first_frame
  • last_frame
frame_modeall
first_frame0
last_frame0
preview_fps24.0

ACES IO - Video Loader is the sibling of the EXR Loader for when your source is a video file instead of a frame sequence: .mov, .mp4, .mxf, .avi, .mkv. The reason this matters more than it sounds: ProRes MOVs - the default deliverable for basically every camera and every NLE - are a blind spot for ComfyUI's built-in loaders. This node decodes them via PyAV (FFmpeg) and hands you the same [B, H, W, C] float32 IMAGE batch the EXR Loader produces, so video footage flows into image-to-image, frame-by-frame upscaling, or your color pipeline without an external ffmpeg step first.

Inputs and behavior

  • file_path - Browse or type a path to the video. The picker filters to video extensions.
  • frame_mode - all (default) decodes every frame; range decodes everything then slices first_framelast_frame (note: 0-based and inclusive, unlike the EXR Loader's 1001-style VFX numbering - set first_frame=0 to start at the first frame).
  • preview_fps - playback speed of the animated WebP preview rendered in the node.

Outputs are image, plus frame_count, first_frame, last_frame (all INT). Because it's an output node, the preview shows inline; the frames themselves are what you wire onward.

One honest limitation: this node loads frames as-is - there's no ocio_config / colorspace input like the EXR Loader has. Video files are almost always display-encoded (sRGB-ish, Rec.709), so the standard pattern is Video Loader → ColorSpace (sRGB → ACEScg) to get into your working space, then on to the Viewer. That's exactly what you'd do with the EXR Loader anyway; you just have to add the step yourself.

Install

Part of BISAM20/ComfyUI-ACES-IO. ComfyUI Manager → Install Custom Nodes → search 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

The non-negotiable here is av (PyAV) - video loading hard-fails with a clear "Install with: pip install av" if it's missing. It's in requirements.txt, so Manager handles it; if you installed the pack manually before, re-run pip install -r requirements.txt. The pack's other heavy dependency, PyOpenColorIO, is installed by the Manager hook (pip package opencolorio).

Gotchas

  • Memory. "all" mode decodes the whole file into one tensor. A 10-minute 4K clip will happily eat many GB of VRAM/RAM. Use range to pull only the frames you actually process, or trim the source first.
  • No alpha handling to speak of - frames are decoded to rgb24, so 4-channel video (ProRes 4444) loses its alpha on load. If you need to preserve alpha from video, the EXR route is the ACES-correct way to carry it anyway.
  • Color isn't touched. Out of the loader, footage looks like the encoded video because it is the encoded video. Go through ColorSpace → Viewer before judging the grade.
  • Every node in this pack re-runs each queue, so if the file changes on disk your next run picks it up - no stale caching.
CategoryACES IO/EXR

Inputs (5)

NameTypeDefaultDescription
file_pathACES_PATH
frame_modeCOMBOall2 options: all, range
first_frameoptINT00–9999990-based frame index, used by 'range' mode
last_frameoptINT00–9999990-based frame index inclusive, used by 'range' mode
preview_fpsoptFLOAT24.01–120

Outputs (4)

NameTypeDescription
imageIMAGE
frame_countINT
first_frameINT
last_frameINT