😺NKD Freeze Frames
Pull the stills out of your render
- images
- images
- count
- frame_1
- frame_2
- frame_3
- frame_4
- frame_5
- frame_6
- frame_7
- frame_8
- frame_9
- frame_10
- frame_11
- frame_12
- frame_13
- frame_14
- frame_15
- frame_16
Sixteen sockets, sixteen frames
You rendered a video and you need a handful of stills from it - a contact sheet, a reference for a re-cut, the exact frame that got the lighting right. NKD Freeze Frames, part of Nekodificador's NKD Preview Tools (same author as the NKD VFX and Klein packs), does one job and does it well: pick individual frames out of an image batch and put each on its own socket, previewed right on the node so you can see which is which.
How it works
The images input is an IMAGE batch - in practice, the images output of NKD Timeline. The frames field is a plain string of indices: 0, 12, 47. Any separator works, negatives count from the end of the batch, and repeats are kept, so 0, 0, 47 genuinely gives you three copies. The backend parses that list, pulls the frames with a clean copy (index_select, so nothing downstream can mutate the timeline's own batch by accident), and pops one image out of each of the frame_1 through frame_16 sockets. You also get images - the same frames packed back into one batch - and count, how many frames you asked for.
The killer pairing
Typing indices by hand is fine for a one-off, but the intended workflow is marker-driven. In NKD Timeline you press M on a clip to drop a freeze-frame marker, and the timeline's markers output hands you those indices as a comma-separated string. Wire markers into frames and every marker becomes a still, automatically. Even better: NKD Timeline's clip_markers option emits the first and last frame of every picture clip ahead of your hand-placed markers, so each cut's boundary frames get frozen without you marking anything by hand. That's the whole reason this node lives in a preview pack - scrub, mark, freeze, review the beats as stills.
What to do with them
Each frame_N is a normal IMAGE, so feed one to a save node, VAE-encode it for an img2img pass on that specific frame, or run a face-detail pass on it. The batched images output is there for when you want all of them at once - a grid or a batch save - instead of sixteen loose wires.
Install
Same pack as the rest of NKD Preview Tools - no models, no Python dependencies beyond core:
cd ComfyUI/custom_nodes
git clone https://github.com/Nekodificador/ComfyUI-NKD-Preview-Tools
Or ComfyUI Manager (search "NKD Preview Tools"), restart, and it lives under 😺NKD Nodes/Preview.
The one real limit
Sixteen sockets, sixteen frames, hard. Ask for seventeen and the node raises a clear error telling you to use the images batch output instead, or split the markers across two Freeze Frames nodes. That's the whole failure mode, and it's a friendly one.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The batch to pick from - normally the 'images' output of NKD Timeline. | |
| frames | STRING | Indices into the batch, any separator. Negatives count from the end. Repeats are kept. |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| count | INT | — |
| frame_1 | IMAGE | — |
| frame_2 | IMAGE | — |
| frame_3 | IMAGE | — |
| frame_4 | IMAGE | — |
| frame_5 | IMAGE | — |
| frame_6 | IMAGE | — |
| frame_7 | IMAGE | — |
| frame_8 | IMAGE | — |
| frame_9 | IMAGE | — |
| frame_10 | IMAGE | — |
| frame_11 | IMAGE | — |
| frame_12 | IMAGE | — |
| frame_13 | IMAGE | — |
| frame_14 | IMAGE | — |
| frame_15 | IMAGE | — |
| frame_16 | IMAGE | — |