H3 Video Outpaint · Compose (EXP)
Decode, paste back, and hand you an MP4 that actually plays
- sampled
- video_vae
- video
- delivery_report
MiniMaxH3VideoOutpaintComposeT8 is the last node in the straight four-stage chain. It takes the sampled handle, decodes the latent windows through the video VAE, builds the delivered canvas, muxes your original audio back in, and writes an MP4 to ComfyUI/output/T8_H3_Outpaint/<output_name>_00001.mp4 with a .outpaint.json sidecar report next to it. It's an output node, so it runs like a save node.
Most of the interesting behaviour here isn't in the node - it's in the mode it was sampled under, and the Compose node has to be told which one that was.
source_mode, the actual decision
joint_decode is the default and the one the shipped workflows use. The whole canvas - original region included - goes through the VAE decode together. That avoids the hard paste back edge, where a reassembled frame shows a visible discontinuity at the join. The cost is that your original pixels are reconstructed, not preserved: source_exact_before_encoding: false, source_reconstructed: true. Fine detail in the untouched part of your frame can shift. There is no pixel-perfect promise here, and the pack says so.
preserve_source pastes the exact source RGB back before lossy encoding. Your original survives byte-for-byte up to the encoder - but the seam the joint decode exists to avoid can show up as a discontinuity, and it might be more obvious than the thing you were trying to prevent. Both modes retain the original soundtrack. Neither survives H.264 intact; "exact before encoding" and "identical after decoding" are different claims and the docs are careful about the difference.
If you're weighing this against image-side workflows: be wary of the usual instinct to keep originals pristine. In image outpainting, pixel-exact preservation is the whole point of Inpaint Crop and Stitch. In video, the VAE round trip argues the other way, and this pack's reviewers landed on joint decode as the primary mode with preservation as the option. Joint decode also skips edge colour correction and geometry alignment by design.
The other two switches
color_match (default on) is a boundary tint correction: it estimates paired RGB offsets on matching inner source strips and fades the correction into the expanded area only, resetting at every shot cut so a previous shot's tint can't leak forward. It only does anything in preserve_source mode - joint decode ignores it. geometry_align (default off) is explicitly experimental, needs OpenCV, corrects the expanded side's contours without touching source pixels, and isn't on by default pending human review.
output_name names the file; the node auto-increments so you never clobber a previous run. Names are restricted to 1–64 letters, digits, underscores or hyphens.
Outputs
video - the VIDEO object, wire it to a save/preview node or straight on to the DLSS-NR 2x workflow if you want a bigger finish - and delivery_report, JSON describing what was encoded. Expect a chunky file: the encoder is deliberately conservative, full-intra H.264 on a single thread, chosen after the author reproduced multithread decode corruption locally. Bigger file, fewer corrupted frames. Reasonable trade.
Install
Manager: search MiniMax H3 Audio T8, then restart ComfyUI completely. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
The pack's requirements.txt is intentionally empty - it doesn't touch your Torch/CUDA stack. This node does need ffmpeg on PATH; there's no way around that, since the encode and the audio mux are ffmpeg's job. geometry_align additionally needs OpenCV installed, but only if you turn it on. And the whole route wants ComfyUI-KJNodes plus the H3 FL2VA model, Qwen3-VL encoder and both VAEs in their documented folders.
Things that look like bugs
Audio that's missing or wrong almost always traces back to the Prepare stage - an unconnected audio VAE, or the wrong audio_track in a multi-stream file. The source audio is validated by packet, timeline and decoded PCM and copied over, so a silent source stays silent rather than getting quietly replaced with music. And an odd-height canvas still works: the encoder switches to High 4:4:4 for yuv444p geometries rather than refusing, though it's worth playing the file once before shipping it anywhere.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| sampled | T8_H3_OUTPAINT_SAMPLED | — | |
| video_vae | VAE | — | |
| output_name | STRING | outpaint | — |
| color_match | BOOLEAN | true | — |
| geometry_alignopt | BOOLEAN | false | 实验:校正扩画侧轮廓,原片像素不变;需OpenCV,未人审前不默认开启。 |
| source_modeopt | COMBO | joint_decode | 默认联合解码:原片也经过VAE重建,跳过接缝修色/几何校正;原音频不变。preserve_source可选精确保留原片像素,但接缝可能更明显。 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| delivery_report | STRING | — |