H3 接缝淡化
The node that hides where MiniMax H3's segments meet
- prev_images
- next_images
- prev_audio
- next_audio
- prev_images
- prev_audio
- next_images
- next_audio
- report
Long-video generation has one dirty secret: the video isn't one render, it's a chain of short clips, and the joins are where the illusion dies. H3SeamBlend is the polish pass that hides them. It takes the hard cut between two segments and turns it into a crossfade - the previous segment's tail is rewritten as a gradual transition into the new segment's pinned frames, while the new segment still gets trimmed normally. Total frame count doesn't change, nothing duplicates, and the picture just... flows across the join instead of snapping.
Mechanism is worth getting straight, because it's easy to wire wrong. The continuity chain pins the previous segment's tail into the head of the next segment as temporal context, so next_images arrives untrimmed - its first trim_frames frames are still the pinned leftovers. H3SeamBlend knows that. It trims those pinned frames off the head, then blends the last blend_frames frames of the old segment against the new segment's real first frames using a crossfade curve. The audio gets the same treatment: a short waveform blend at the actual cut point, with each audio segment trimmed to match the delivered picture duration. Video rides a 24fps timeline; audio placement follows H3's 40Hz time grid, and the node keeps them in sync.
Inputs, in the order you'll actually care about them:
prev_images- the previous segment, the copy already in your final cut.next_images- the new segment, untrimmed, still carrying the pinned frames at its head.trim_frames- how many frames were pinned, straight from theH3AnchorContextoutput. This is the number you must not fudge.blend_frames- how many of those frames to fade over. 8 is a good default; 0 turns the crossfade off and reverts to a hard cut. If you set it higher than the pinned count it gets clamped down automatically, so you can't overrun.curve- smooth (recommended) or linear.prev_audio/next_audio- optional, wire them if your H3 output carries sound (it does, natively).
Outputs mirror the inputs: blended prev_images, prev_audio, the trimmed next_images, next_audio, and a report string. That report is genuinely useful - it prints the per-pixel difference at the seam before and after the blend, so you get a number for how well the join works instead of eyeballing it. Big drop from before to after means the fade is doing its job.
Where people get burned: the classic error is a dimension mismatch, which H3SeamBlend raises when the two segments have different resolutions. That's not the node being picky - temporal-latent continuity requires constant resolution between segments, so if you see it, fix the upscale/VAE settings upstream, not the seam. The second classic is feeding it a wrong trim_frames: it has to equal the context_length the long-video chain actually pinned, not a number that feels right. The author's own advice is to establish a two-segment baseline at 22 context frames before comparing anything longer.
Install is shared with the whole pack - ComfyUI Manager (search ComfyUI-MiniMaxH3-Myang) or git clone https://github.com/civilcoco/ComfyUI-MiniMaxH3-Myang.git into custom_nodes, restart, hard-refresh. No extra Python packages; the real prerequisites are a recent ComfyUI with the official MiniMax H3 nodes and the model files themselves.
In the all-in-one 沐阳 H3 Director workflow you mostly won't touch this node directly - it's wired for you. In a hand-built graph it's the difference between a "long video" and a long video that doesn't look like one.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prev_images | IMAGE | 上一段(已在成片里的那份) | |
| next_images | IMAGE | 新段,未裁剪,开头还带着钉入的帧 | |
| trim_frames | INT | 220–240 | 钉入了多少帧,接 H3AnchorContext 的输出 |
| blend_frames | INT | 80–240 | 用其中多少帧做淡化。0 = 关闭,退回硬切。超过钉入帧数会被自动收窄 |
| curve | COMBO | 平滑(推荐) | 2 options: 平滑(推荐), 线性 |
| fps | FLOAT | 24.001–240 | — |
| prev_audioopt | AUDIO | — | |
| next_audioopt | AUDIO | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| prev_images | IMAGE | — |
| prev_audio | AUDIO | — |
| next_images | IMAGE | — |
| next_audio | AUDIO | — |
| report | STRING | — |