Nodes/Herrgotts-H3-Infinite-Continuation-Suite/H3 Infinite - Seamless AV Join v1.2
ComfyUI Node

H3 Infinite - Seamless AV Join v1.2

Seamless AV Join v1.2 — Where the Rendered Clips Actually Meet

By HerrgottMargott·Created 14 days ago·Updated 3 days ago· 51
H3 Infinite - Seamless AV Join v1.2
  • previous_images
  • next_images
  • previous_audio
  • next_audio
  • next_handover
  • previous_full_images
  • previous_handover
  • images
  • audio
  • join_info
next_output_modeStitch Ready
next_head_context_frames
video_crossfade_frames4
audio_crossfade_ms15
luminance_matchfalse
luminance_fade_frames16
max_luminance_correction_percent10.0
max_safe_tail_bridge_frames2

Generation nodes make the clips; this node is what makes them one video. H3ContinuousSeamlessJoinV11 takes the rendered output of clip N and clip N+1 and merges them with a context-aligned seam - short video blend, short audio de-click, and a clever trick called Safe Tail Bridge. It's the v1.2 join node, and if you're running the v1.2 or v1.3 workflow chain, this is what sits between your Continue nodes and your final render.

Why a plain concat isn't enough

When a continuation clip reuses a head of the previous latent, the rendered next clip contains that duplicated head. If you just concatenate the two rendered videos, you get the seam problem in its purest form: the next clip's first frames are a re-render of the previous clip's last frames, so you either see double motion or a hard jump. The join node fixes this by being context-aware - you tell it how many frames were reused (next_head_context_frames, wired from the Continue node's actual_head_context_frames), and it removes and aligns against exactly that.

Then there's the FL2VA freeze problem. Phase alignment can lose a few rendered frames to the grid, and the first couple of continuation frames can be unstable. Safe Tail Bridge (max_safe_tail_bridge_frames, default 2) replaces those first few wobbly continuation frames with detector-approved pixels from the previous clip. It only borrows frames that are safe - never from the freeze safety margin - which is the honest-sounding version of "we fixed the flicker without inventing footage."

  • video_crossfade_frames - 4 is the tested default; 0 disables the blend.
  • audio_crossfade_ms - 15 ms audio de-click; keep it short or you get phasing/doubled transients.
  • luminance_match - experimental fallback for a persistent brightness seam; off by default.

Inputs and outputs

Required: previous_images (your already-combined timeline; for the first join, Clip 1's Stitch Ready is fine), next_images (the full decoded render of the next clip - it needs the reused head present so it can trim it), next_output_mode (Stitch Ready for intermediate clips, Final Clip for the last one so its ending is preserved), plus the crossfade/trim controls. Optional: previous_audio, next_audio, next_handover, previous_full_images, previous_handover - the audio and handover inputs are what let the join stay audio-synced. Outputs are images, audio, and join_info for diagnostics.

Install

Part of the Herrgotts-H3-Infinite-Continuation-Suite pack:

cd ComfyUI/custom_nodes
git clone https://github.com/HerrgottMargott/Herrgotts-H3-Infinite-Continuation-Suite.git

Restart ComfyUI, reload. No pip deps, no bundled weights - H3 models/VAEs come from Comfy-Org's MiniMax-H3 repo.

Gotchas

The classic mistake is leaving next_head_context_frames unconnected - the node then doesn't know how much duplicated head to remove and the seam lands in the wrong place. If a brightness seam persists after all this, luminance_match is the escape hatch, but treat it as a diagnostic, not a fix. And note v1.2's join predates the v1.4 masked path; the v1.4 join node (same class family) handles the new shared-boundary geometry - use the join version that matches the generation version you're running.

CategoryHerrgotts H3 Infinite Continuation Suite

Inputs (15)

NameTypeDefaultDescription
previous_imagesIMAGEAlready prepared/combined previous timeline. For the first join, Clip 1 Stitch Ready is fine.
next_imagesIMAGEFULL decoded render of the next clip. Its reused context head is needed for the context-aligned seam.
next_output_modeCOMBOStitch ReadyIntermediate next clip = Stitch Ready. Current last clip = Final Clip so its complete ending is preserved.
next_head_context_framesINTConnect actual_head_context_frames from the next Continue from Latent node.
video_crossfade_framesINT40–16Short context-aligned video blend after Safe Tail Bridge. 4 frames is the recommended default; 0 disables the blend.
audio_crossfade_msFLOAT150–100Short audio de-click crossfade. 15 ms is the tested default; keep it short to reduce phasing/doubled transients.
luminance_matchBOOLEANfalseExperimental fallback only. Safe Tail Bridge is the release default; enable luminance matching only if a persistent brightness seam remains.
luminance_fade_framesINT160–96Experimental luminance-match fade length. Ignored when luminance_match is off.
max_luminance_correction_percentFLOAT10.00–25Experimental luminance-match safety clamp. Ignored when luminance_match is off.
max_safe_tail_bridge_framesINT20–4Recommended: 2. Reuses only detector-approved rendered frames lost to phase alignment; never borrows from the freeze safety margin.
previous_audiooptAUDIO
next_audiooptAUDIO
next_handoveroptH3_CONTINUOUS_HANDOVERRequired when next_output_mode is Stitch Ready so the next clip's freeze-safe tail is removed.
previous_full_imagesoptIMAGEOptional FULL decoded render of the previous individual clip. Connect this together with previous_handover to enable Safe Tail Bridge.
previous_handoveroptH3_CONTINUOUS_HANDOVERPrevious clip handover metadata. Together with previous_full_images it exposes up to 1-2 safe rendered frames that latent phase alignment had to discard.

Outputs (3)

NameTypeDescription
imagesIMAGE
audioAUDIO
join_infoSTRING