Nodes/NanoBanana&Veo_Suite_3DeLAB/Load Video (Extract Frame)
ComfyUI Node

Load Video (Extract Frame)

Grab a frame out of a video and hand it to the Mask Editor

By PATAGONIABIM·Created 7 months ago·Updated 6 months ago· 1
Load Video (Extract Frame)
    • video
    • extracted_image
    video
    frame_target0
    save_prefixextracted_frame

    This is the node that makes Veo video editing workflows tolerable. Veo's inpaint and extend modes want a video plus a mask - and you need a mask you can actually see and draw. This node loads a video for the video side and pulls a single frame out for the mask side, so you can mark up the exact moment you're editing instead of guessing frame numbers blind.

    It does two jobs in one pass, and both outputs come out together:

    • video - the video itself as a VIDEO object (falling back to the file path), which feeds the Veo node's video input for extend and inpaint modes.
    • extracted_image - the frame at frame_target as an IMAGE tensor, for masking and reference.

    The frame-grabbing runs on OpenCV - that's why opencv-python sits in the pack's requirements.txt. It seeks to the frame you ask for, converts BGR to RGB, and returns it. But here's the part that makes it genuinely useful: the node also physically saves that frame into your ComfyUI input folder as !_nano_<save_prefix>_<timestamp>.png, then fires a websocket message that the pack's JavaScript listens for. Any Load Image (Passthrough) node on your canvas automatically flips to that freshly-extracted file - which means one right-click later you're in ComfyUI's native Mask Editor drawing on the actual frame, no file-hunting.

    What you set

    Three inputs, all required:

    • video - a dropdown of video files in your input folder, with an upload widget.
    • frame_target - which frame to extract, an integer starting at 0 (so 0 is the first frame). Defaults to 0.
    • save_prefix - the filename prefix for the auto-saved frame, defaults to extracted_frame.

    Install

    Same pack, same routine:

    cd ComfyUI/custom_nodes
    git clone https://github.com/PATAGONIABIM/comfyui-NanoBananaPro_3DeLAB.git
    cd comfyui-NanoBananaPro_3DeLAB
    pip install -r requirements.txt
    

    Restart ComfyUI, or install via Manager under comfyui-NanoBananaPro_3DeLAB. Make sure opencv-python actually installed - it's the one dependency in the pack with a real job to do here, and frame extraction silently degrades to an error message if it's missing.

    Gotchas

    • Frame numbers count from 0. If you think "frame 5 is the fifth second," you'll be off. Seek past the end of the video and the node just logs a warning and hands you a fallback blank tensor - the mask you drew on will then be garbage, so double-check frame_target against the actual length.
    • It writes files into your input folder every run. Those !_nano_ PNGs accumulate; the prefix is there for a reason, and a little tidying keeps the file dropdown from turning into a junk drawer.
    • It's built as a companion to the Veo node, but nothing stops you using it as a general video-frame extractor - extracted_image is a plain IMAGE and works with any downstream node.
    Category3DELAB

    Inputs (3)

    NameTypeDefaultDescription
    videoCOMBO0 options:
    frame_targetINT00–99999Frame number to extract and save.
    save_prefixSTRINGextracted_framePrefix for the automatically saved image file.

    Outputs (2)

    NameTypeDescription
    videoVIDEO
    extracted_imageIMAGE