MiniMax H3 Compose Accepted / 合成已接受片段 (EXP/T8)
Verify every accepted segment, then stream them into one MP4 without blowing up memory
- video
- video_path
- report_json
At the end of a long video run you have a manifest full of accepted segment files, and you want one MP4. The naive way is to load every segment into memory and glue them - which on a long chain is how you turn a successful render into a RAM disaster. This node is the composed finale: it verifies every accepted file, then streams them into one MP4 with memory bounded to one video frame plus one segment of PCM. It's the "delivery" node in a family of nodes that are obsessive about not promising more than they can prove.
It's in T8/MiniMax H3/Long Video/Experimental and it's an output node - put it at the end of the chain and let it be the last thing that runs.
How it works
Give it chain_id and filename_prefix (default H3_Long_Video), and it reads the accepted manifest for that chain. It verifies every accepted file before it will compose anything - a missing, truncated, or modified segment stops the whole thing rather than shipping a broken cut. Then it streams: one video frame plus one segment of PCM in memory at a time, concatenating into a single MP4 under the prefix.
require_final_segment (default true) means the chain must contain a final segment before it will call the cut complete. That's the guard against composing a run that never actually finished. The delivery knobs are shared with the rest of the family: audio_seam_policy (cosine_bridge default - preserves the exact sample count across joins), bridge_ms (default 5), and crf (default 18).
The inputs that matter
chain_id- which accepted chain to compose. Must match what you've been building.require_final_segment- leave true unless you're deliberately composing a partial cut (e.g. to review a first pass).crf- 18 default; tune for file size vs quality.audio_seam_policy/bridge_ms- seam controls for the joins between segments.
Outputs
video (the composed VIDEO), video_path (where it landed), and report_json (what was verified and composed).
Installing it
Pack install: ComfyUI Manager → "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into ComfyUI/custom_nodes, restart. No mandatory pip deps - but this node is one of the two that requires ffmpeg on PATH (the other being Candidate Save). Missing ffmpeg → clear error before anything is written.
Common issues
"Final segment missing." require_final_segment is true and the manifest has no final. Either the chain isn't complete or a later segment was invalidated by a replacement and never re-rendered. Check the manifest and re-render the missing piece.
Compose refuses because a file failed verification. A segment file changed since it was accepted. That's the verification doing its job - re-render the damaged segment and re-accept rather than trying to compose around it.
OOM during compose on a very long chain. Shouldn't happen - streaming is the point - but if the report shows memory climbing, the compose is reading more than a frame plus a PCM segment, which points at an odd codec/audio stream. Re-encode the offending segment at the family-standard 8-bit SDR settings first.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| chain_id | STRING | my_h3_long_video | — |
| filename_prefix | STRING | H3_Long_Video | — |
| require_final_segment | BOOLEAN | true | — |
| audio_seam_policy | COMBO | cosine_bridge | 2 options: cosine_bridge, none |
| bridge_ms | FLOAT | 5.00–50 | — |
| crf | INT | 180–51 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| report_json | STRING | — |