Nodes/VRGameDevGirl Video Enhancement Nodes/MiniMax H3 Select Still Frame
ComfyUI Node

MiniMax H3 Select Still Frame

The middle frame is the keep — grab it without hunting

By vrgamegirl19·Created about a year ago·Updated about 7 hours ago· 718
MiniMax H3 Select Still Frame
  • images
  • image
  • all_frames
  • selected_index
selectionmiddle
frame_index2

MiniMax H3 is a video model, full stop - its smallest generation is five frames, and that's just what the model's architecture does. When you want a still image out of it, the trick the VRGameDevGirl pack uses is to treat those five frames as a burst and keep the best one. MiniMax H3 Select Still Frame is the "keep the best one" half of that trick: you hand it the five decoded frames and it hands back whichever you want, defaulting to the middle.

Why the middle? Because of how a burst works. In the first and last frames the model has less temporal context on one side, so it's the most likely to carry start/end artifacts or odd exposure settling. The center frame - number 2 of 0–4 - has context on both sides, so it tends to be the most settled, most "final image" version. It's the same instinct as burst photo mode on a phone, and it's the right default for most shots.

Where it sits in the workflow

This node is the payoff end of a two-node pipeline. Its sibling, MiniMax H3 Text / Reference to Image, builds a five-frame latent and the conditioning. You run that through the MiniMax sampler, VAE-decode the result, and the decoded output lands here as a batch of five frames. This node picks one, and you're done - a single still from a video engine.

Inputs and outputs

It's about as simple as a node gets:

  • images - the decoded burst (required). It needs at least one frame.
  • selection - middle (default), first, last, or index.
  • frame_index - only used when selection is index; it's clamped to the actual frame count, so asking for frame 9999 on a five-frame burst just quietly gives you the last one rather than erroring.

Outputs:

  • image - the selected single frame (the one you actually want to save or feed onward).
  • all_frames - the whole burst passed through, so you can eyeball the rejects or branch off without re-decoding.
  • selected_index - an INT telling you which frame was chosen. Wire it to a filename/seed node if you want to record it in metadata.

Install

Same pack as the whole H3 set - VRGameDevGirl:

cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git

or search the pack by name in ComfyUI Manager, restart, and hard-refresh the browser. Like every node in this pack, you're installing the full requirements list (kornia, librosa, transformers, voxcpm, llama-cpp-python and the rest), so expect a heavier-than-typical pip install. Windows portable users: install Cython and scikit-build-core first per the README, and Python 3.12 is friendlier than 3.13.

Things worth knowing

  • middle isn't magic. On a clean static scene the differences between the five frames are subtle, and first can actually look sharper if the model settled early. When one frame matters (a character's expression, an exact prop position), run once, glance at all_frames, and switch to index if the middle isn't the winner.
  • The images input is a plain IMAGE batch - so this node will happily "select the middle frame" of a real 5-frame video clip too, if you ever want that. It doesn't know or care that the burst came from H3.
  • Pair it with the pack's still-image node rather than fighting the stock workflow. The H3 license geography caveat from that article applies here too - check the MiniMax H3 Community License before running the weights in the EU, UK, US or South Korea.
  • If your burst is larger than five frames (say you decoded a longer clip), middle still does the sensible thing and picks the center of whatever it received.
Categoryimage/minimax

Inputs (3)

NameTypeDefaultDescription
imagesIMAGE
selectionCOMBOmiddle4 options: middle, first, last, index
frame_indexINT20–9999

Outputs (3)

NameTypeDescription
imageIMAGE
all_framesIMAGE
selected_indexINT