ComfyUI Node

Smart Load Video

The video loader that fixes your color shift

By slvslvslv·Created about a year ago·Updated 24 days ago· 2
Smart Load Video
    • images
    • frame_count
    • fps
    video
    force_rate0.00
    frame_load_cap0
    skip_first_frames0
    select_every_nth1

    Load a video into ComfyUI with the usual OpenCV-based loaders and, on HD or 4K footage, you might notice the colors look slightly red and oversaturated compared to the file. That's not your monitor - it's a real bug in how those loaders convert video color. Smart Load Video is built to avoid exactly that: it shells out to FFmpeg, which reads the video's color metadata and applies the correct conversion matrix instead of assuming one.

    How it works

    Most video loaders (including the popular VHS "Load Video Path") decode with OpenCV, which converts YUV to RGB using the BT.601 matrix regardless of what the video actually is. That's correct for old SD content but wrong for HD/4K, which is BT.709 - the mismatch produces that visible red push and over-saturation. This node runs FFmpeg instead, probes the stream's color-space and range metadata, and lets FFmpeg's decoder handle the conversion properly. Same frames, correct colors, no post-hoc hue correction needed.

    Once decoded, it gives you the usual frame-batch controls:

    • force_rate - resample to a target fps (0 = keep the source rate).
    • frame_load_cap - stop after N frames; vital for not loading a 10-minute clip into VRAM.
    • skip_first_frames - drop N frames from the start.
    • select_every_nth - keep every Nth frame (decimation).

    It probes the file for width, height, and fps automatically and reports frame_count and fps as outputs you can wire onward.

    Inputs and outputs

    • video - an absolute path to the video file.
    • force_rate, frame_load_cap, skip_first_frames, select_every_nth - the trimming/decimation controls.

    Outputs: images (frame batch), frame_count, fps.

    Installing it - the ffmpeg caveat

    This is the one node in the pack with a real external requirement. It needs an ffmpeg binary, and the pack's requirements.txt does not include one. The node looks, in order: the VHS_FORCE_FFMPEG_PATH environment variable, imageio-ffmpeg's bundled binary, then system PATH. The straightforward fix:

    cd ComfyUI/custom_nodes
    git clone https://github.com/slvslvslv/ComfyUI-SmartImageTools
    pip install -r ComfyUI-SmartImageTools/requirements.txt
    pip install imageio-ffmpeg   # provides a bundled ffmpeg the node can find
    

    Restart ComfyUI afterward (or use ComfyUI Manager for the pack itself). If you already have ffmpeg on PATH or VHS installed, you're fine as-is.

    The honest verdict

    If your footage is SD, 24fps, or you don't care about a slight color shift, the built-in loaders work fine and this node's advantage is invisible. But the moment you feed it BT.709 HD footage and compare frames side by side with an OpenCV loader, you'll see the difference - and for video-to-video work where color consistency matters, that's worth an install all by itself.

    CategorySmart Image Tools

    Inputs (5)

    NameTypeDefaultDescription
    videoSTRING
    force_rateFLOAT0.000–60
    frame_load_capINT00–999999
    skip_first_framesINT00–999999
    select_every_nthINT11–999999

    Outputs (3)

    NameTypeDescription
    imagesIMAGE
    frame_countINT
    fpsFLOAT