MiniMax H3 Timed Video Reference (Advanced EXP/T8)
Give H3 a whole video of motion cues, timed to the frame
- clip
- video_frames
- clip
If the Timed Image node is one still pinned to a second, this is the whole filmstrip: it hands H3 a sequence of frames from a source video at their real positions on your generated timeline. Same trick under the hood - Qwen-only semantic conditioning, no native slot, no VAE latent, no audio - but for motion rather than a single anchor.
It's marked EXP for a reason. It's not a motion-transfer tool: it won't copy the source video's movement frame-for-frame, and it creates no audio. It's a way to say "here's the kind of motion that happens over this interval" and let the semantic encoder steer the output toward it. Think of it as prompt guidance with a temporal backbone, which makes it a natural companion to H3's video-reference workflows when you've run out of - or don't want to spend - native reference slots.
How it works
You feed it a decoded constant-frame-rate IMAGE batch (i.e. frames you've already pulled out of a video, not a video file), plus the FPS that video was shot at. It computes each frame's time as frame_index / source_fps, then subsamples to analysis_fps (default 2) so you're not cramming 124 frames of tokens into the prompt - just a manageable sample, each stamped with its timestamp, offset by target_start_seconds so the source material lands where you want it on the generated clip. Those frames get resized to video_size, and, like its sibling node, the CLIP tokenizer is wrapped so your #prompt_tag (default motion) in the prompt text is replaced by the timed vision entries.
The inputs that matter:
- clip - your H3 CLIP line (must be a MiniMax H3 CLIP; anything else errors out).
- video_frames - decoded frames as an IMAGE batch; needs at least two, and more than 15 seconds of source material is rejected.
- source_fps - the FPS the source was shot at (default 24). Get this right; it's how frames map to seconds.
- target_start_seconds - where on the generated timeline the first source frame lands.
- analysis_fps - the subsample rate for what actually reaches Qwen. Lower = fewer tokens; can't exceed
source_fps.
Output is a single clip - chain it onward into Ref2VA and mention #motion (or your tag) in the prompt.
Install
Same pack as all the T8 MiniMax H3 nodes. Manager → search "MiniMax H3 Audio T8" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
No pip dependencies to install (the pack's requirements.txt is deliberately empty - ComfyUI supplies torch, torchaudio, numpy, Pillow, safetensors). You need the H3 model, text encoder and VAEs in the usual model folders, and a current ComfyUI - this pack leans on native H3 support and newer Comfy internals (comfy_api.latest, comfy.weight_adapter, comfy.ldm.minimax). Update ComfyUI + frontend + Manager together, then fully restart; an old ComfyUI with a new pack is how everyone ends up with a wall of red T8 nodes.
Gotchas
- Feed it CFR (constant frame rate) decoded frames. It doesn't handle VFR container timing - decode with a video loader that gives you an even frame batch and tell it the real FPS.
- It's semantic conditioning. Don't expect identity or pixel fidelity from it; that's what native references are for.
- Each chained timed reference needs a unique
#tagthat starts with a letter. - The
#prompt_tagonly does something if the tag actually appears in your prompt text - forgetting the tag is the usual "why is nothing happening" cause.
It's a niche tool, but for steering when motion happens across a clip - a camera move that should pick up at second 2, an action beat mid-clip - it's the only thing in this pack that thinks in time.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| video_frames | IMAGE | — | |
| prompt_tag | STRING | motion | — |
| target_start_seconds | FLOAT | 0.0000–9999 | — |
| source_fps | FLOAT | 24.0000.01–240 | — |
| analysis_fps | FLOAT | 2.00.5–240 | — |
| video_size | COMBO | 512 | 11 options: 64, 96, 128, 192, 256, 384, +5 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | — |