Nodes/comfy_Pond_Nodes/🐳Video Frame Extractor (Advanced)
ComfyUI Node

🐳Video Frame Extractor (Advanced)

Grab any frame by index, percent, or timecode

By Pondowner857·Created about a year ago·Updated 21 days ago· 45
🐳Video Frame Extractor (Advanced)
  • video
  • image
  • frame_index
mode
value0.0
fps30.0

Video Frame Extractor (Advanced) is the node you reach for when you've loaded a video into ComfyUI and need one specific frame out of it - the frame that becomes your conditioning image, your storyboard thumbnail, or the reference you're about to run through an inpainter. The basic version of this node (same pack) only does index-based extraction; this one adds two smarter ways to ask for a frame: by percentage of the clip, or by a time in seconds.

The single most important thing to understand: the video input is an IMAGE tensor - a batch of frames - not a file path. So this node doesn't open video files itself; it slices a frame sequence that's already been loaded by a video loader (Comfy's native video nodes, VHS, or whatever you're using to decode the clip). Wire the loader's frame sequence into video, and you're working on a pure tensor slice.

How it picks the frame depends on mode:

  • index - value is the raw frame number (0-based)
  • percentage - value is a 0-100 number; it maps to a frame proportionally ((value/100) * (total_frames - 1))
  • time - value is seconds, multiplied by the optional fps input (default 30) to get the frame number

The time mode is the reason this node exists - if you know your clip is 2.5 seconds in and running at 24fps, you set value to 2.5 and fps to 24, and it lands on the right frame without you counting frames. The index clamps to valid bounds, so asking for frame 5000 of a 120-frame clip just gives you the last frame instead of crashing (it prints a warning).

Outputs are image (the single extracted frame) and frame_index (the actual computed index). That second output is quietly important: in percentage or time mode you often don't know the numeric index, and feeding it forward lets downstream nodes reference exactly where the frame came from - handy for keeping a frame log or for wiring into a workflow that needs to re-find that position later.

Where it fits

The canonical use in this pack's world is video-to-image: load a generated video, extract the frame you want to keep, then run it through post-processing or save it. It's also the right tool for pulling a keyframe to feed an i2v model as the first-frame condition - pick a clean early frame by time, and you've got your starting image without hunting through the sequence.

The honest gripe: it's a convenience wrapper over a tensor slice, so don't expect any fancy interpolation or frame analysis. If mode is index and value isn't an integer, it truncates. And remember fps only matters in time mode - set it to your clip's actual framerate, not the default, or your "time" will silently be off.

Install

Part of Pond Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/Pondowner857/comfy_Pond_Nodes
cd comfy_Pond_Nodes
pip install -r requirements.txt

Restart after (or Manager → "comfy_Pond_Nodes"). Pure torch/numpy under the hood - no extra models. README caveat stands: a comfyui_HiDream-Sampler install alongside this pack causes console spam.

Category🐳Pond/video

Inputs (4)

NameTypeDefaultDescription
videoIMAGE
modeCOMBO3 options: index, percentage, time
valueFLOAT0.00–9999
fpsoptFLOAT30.01–120

Outputs (2)

NameTypeDescription
imageIMAGE
frame_indexINT