H3 HyperFlow P7 · Prepare LOW/HIGH Continuation Contexts (T8 EXP)
Segment two needs a memory of segment one — here's exactly what it takes
- accepted_parent
- video_vae
- contexts
- report_json
Chaining video segments is one long fight against the seam. The next segment has to start from something that matches the previous segment's ending frame - not "a picture that looks similar", the actual pixels, decoded, resized and re-encoded the way this pipeline expects. P7 does that with an accepted MP4 rather than an in-memory latent, which is why continuation here survives a ComfyUI restart.
This node is the conversion step. Give it an accepted parent and a video VAE, and it builds the typed contexts object that both phase conditioning nodes consume.
What it actually does
It reads the parent's last 39 decoded RGB24 frames, applies the original resize, and runs them through the current video VAE to build the LOW phase's picture motion guides. That's it for the picture side. The HIGH context and the completed audio are left alone - the pack is explicit about it, and this is deliberate rather than an oversight: you want LOW anchored to the accepted picture so the motion is continuous, while HIGH keeps the higher-resolution context and the audio region the original recipe defined.
"Accepted" is doing real work in that sentence. The parent has to be a genuine accepted predecessor: correct candidate, correct revision, correct previous_job_sha256, real MP4 on disk, context artifacts hashing to what was recorded. A candidate you saved but never accepted isn't a parent, and pointing at it is one of the more common wiring mistakes on this route.
Inputs and outputs
accepted_parent is the typed output of either Select Existing Accepted Parent (segment 1 and later) or the empty-first-segment selector. video_vae is your H3 video VAE - the current one, so swapping VAEs between runs changes the context bytes and the downstream validation notices.
contexts out to the phase conditionings, or to External Relay Window if you're driving prompts from a global Relay plan. report_json is the binding.
Timing, since it's the whole point
P7 segments are 124 frames at 24 fps with a 22-frame overlap by default. Segment 0 renders all 124; segment 1 renders another 124 but only delivers the new 68 frames, so the finished 192-frame, 8-second video has exactly one seam at around 5.17 s. The candidate save node is what physically trims the overlap; this node is what feeds the next segment the right piece of the previous one.
Nobody claims the seam is invisible. The pack's own documentation says the two-pass route has a known slight colour shift at the join, offers a bounded colour match to reduce it, and states plainly that colour matching doesn't fix a structural cut or substitute for watching the result from before the seam to the end with sound on.
Install
Manager → MiniMax H3 Audio T8, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Full restart and browser refresh. requirements.txt installs nothing on purpose, so this pack can't replace ComfyUI's Torch/CUDA stack. You still need H3 weights, the Qwen text encoder, both VAEs, the HyperFlow adapter in models/hyperflow/loras/ and the learned 3D latent upscaler in models/latent_upscale_models.
Troubleshooting
Errors here are usually provenance errors dressed up as something else. "Accepted media/context differs from candidate", a changed context checksum, or "no completed-audio LOW context" all mean the parent record on disk and the thing you're pointing at have drifted - most often because you deleted or overwrote a candidate directory while cleaning up. Deleting rejected candidates is fine; deleting accepted ones breaks every later segment in the chain.
Second: the chain lease. Chain operations take an OS lock, so if a previous run is still holding the chain you'll get a busy error rather than a corrupted context. Let the queue drain.
Third, and this one is also a feature - a rebuilt VAE produces different source bytes, so an old frozen source can't be passed off as matching a new one. If you just upgraded your video VAE, expect the chain's existing contexts to be rejected. That's the validation working, not failing.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| accepted_parent | T8_HYPERFLOW_P7_ACCEPTED_PARENT | — | |
| video_vae | VAE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| contexts | T8_HYPERFLOW_P7_CONTEXTS | — |
| report_json | STRING | — |