FFmpeg Split Video
Video in, frames out — feed real footage into ComfyUI without leaving the graph
- video
- frames
You've got a video clip and you want ComfyUI to do something to every frame - img2img restyle, denoise, upscale, interpolate, keyframe a face. That's the problem this node is the answer to: it takes a real video and hands you a batch of frames, right there in the graph. No dragging files into some separate script, no ffmpeg CLI you have to remember the syntax for.
ComfyUI's video generation (Wan, LTX, AnimateDiff) works in latent space, but the footage you actually own lives as an mp4 on disk. Something has to make that leap, and Video Helper Suite is the heavyweight everybody names for it. FFmpegSplitVideo is the lightweight sibling from the ffmpeg-toolkit pack: same job, ~80 lines of code, nothing but ffmpeg under the hood. If you don't want a 5,000-line suite just to rip frames, this is the one to grab.
How it works
The node accepts either of two things: an IMAGE batch or ComfyUI's newer VIDEO type. Feed it an IMAGE tensor and it just passes the frames straight through - useful if you're using it as a converter between type systems. Feed it a VIDEO and it does the real work: resolves the stream to a temp file, runs ffmpeg -i input -vsync 0 frame_%06d.png, loads the PNGs back with Pillow as a [N, H, W, C] float tensor, then cleans up its temp directory. Everything lives in ComfyUI's temp folder, so after the run there's nothing left lying around on your disk.
The fps input (default 0, range 0–120) is the only knob that matters. 0 means "grab every frame at the source's own rate" - that's the setting you want for editing or upscaling where you don't want to drop a single frame. Set it to a positive number and ffmpeg resamples to that target rate, which is how you thin out a 60fps capture before you run an expensive per-frame pass.
The wiring
- video - your VIDEO input or an IMAGE batch.
- fps -
0= every frame, or a target rate to resample to.
Output: frames (IMAGE). That's the one socket. It feeds a VAE Encode → KSampler chain for img2img, a per-frame upscaler, or frame interpolation - anything that expects an IMAGE batch. That's it; the node is a clean bridge with a single exit.
Installing it
ComfyUI Manager is the easy path - search for "ComfyUI-ffmpeg-toolkit" and hit install. Or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/RCAKangle/ComfyUI-ffmpeg-toolkit
Then restart ComfyUI. The Python requirements are just numpy and Pillow - both already in a stock ComfyUI environment, so no real dependency install. The one genuine external requirement is the ffmpeg binary on your PATH:
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# Windows - grab the gyan.dev build, or: winget install Gyan.FFmpeg
The gotcha
The #1 failure with this pack is "FFmpeg not found". It's looking for the ffmpeg executable via shutil.which("ffmpeg") - a pip install ffmpeg wrapper package does not count. Install the real binary, make sure it's on PATH, and restart ComfyUI after you add it (Windows loves to keep stale PATHs around). And a heads-up before you rip a long clip: every frame becomes a row in that IMAGE tensor, and when you VAE-encode a few hundred frames you'll feel the VRAM. Split short, or resample down with fps first.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| video | IMAGE,VIDEO | Video input or frame batch. | |
| fps | FLOAT | 00–120 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |