First Frame Selector
Pull the opening frame of a clip
- images
- IMAGE
First Frame Selector is the mirror image of its more famous sibling: hand it a clip, get back the very first frame as a single image. The README is candid about its origin - it "will do the same [as Final Frame Selector] but with the first frame, this was a requested node." In other words, people were already using the last-frame version to extend video forward, and enough of them wanted to work the other direction that DoctorDiffusion shipped the bookend.
It lives in the MediaMixer pack, DoctorDiffusion's little collection of video utility nodes, and like the rest of the suite it's dead simple by design.
Why you'd reach for the first frame
Two solid reasons, and they're different from the last-frame use case.
Backward extension. Sometimes you want to generate what came before your clip, not after it. The trick most people use is to reverse the clip (there's a Reverse Frame Sequence node right in this same pack), extend it forward from what is now the "end," then reverse the result back. First Frame Selector fits the other half of that dance: grab the opening frame so you have a clean anchor for the prequel segment.
A reference image straight from a render. A video's first frame is often the cleanest, most fully-formed image in the whole sequence - it hasn't accumulated any of the motion softening or drift that creeps in later. So it's a handy grab for a thumbnail, a poster frame, or a reference to feed into a separate image workflow (an upscale, a face fix, a style pass) without dragging the whole batch along.
Under the hood it's the same idea as everything in this pack: a ComfyUI "video" is just a batch of IMAGE frames, and this node reaches into that batch and returns index zero.
Inputs and outputs
images(IMAGE) - the clip you want the opening frame from. Wire in a frame batch from a sampler or a Load Video node.
The single IMAGE output is that first frame. It plugs into whatever wants an image: the conditioning input of an image-to-video node, an upscaler, a Save Image, or the front end of a reverse-extend chain.
No parameters, no choices. It's always the first frame. If you need the last frame instead, that's Final Frame Selector; both live in this pack and you'll often have one of each on the canvas.
Installing it
ComfyUI Manager: search MediaMixer, install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/DoctorDiffusion/ComfyUI-MediaMixer.git
cd ComfyUI-MediaMixer
pip install -r requirements.txt
then restart. No models to download.
Things worth knowing
There's not much to break in a node that returns one frame, so troubleshooting is mostly about the workflow around it.
If you're doing the reverse-extend trick, keep the reversals straight in your head - reverse in, extend, reverse back out - because it's easy to end up with a clip that plays backward and not realize the node did its job perfectly. And the same seam-degradation caveat that haunts forward extension applies here: any frame you generate off of tends to come out a little softer than the source, and the model will quietly nudge details as it goes. If your prequel segment looks fuzzier than the original, that's the extension process, not First Frame Selector - upscaling the anchor frame before you generate from it is the usual mitigation.
For anything that's genuinely one image in, one image out, this node just works. Its value is entirely in which frame it hands you, and that it does so without making you leave ComfyUI.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |