Nodes/ComfyUI WANv2v Video Stitcher/WanV2V: Merge De-Overlap (10x)
ComfyUI Node

WanV2V: Merge De-Overlap (10x)

The last node before your stitched video becomes a video

By Kishor900·Created 11 months ago·Updated 10 months ago· 6
WanV2V: Merge De-Overlap (10x)
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • image_10
  • images
  • info
overlap_size8
enable_crossfadefalse
crossfade_frames8
interpolation
start_level0.00
end_level1.00

Every stitching workflow needs a finish line, and this is this pack's. After N iterations of WanV2VIterControlGroup → sampler, you have N overlapping IMAGE batches sitting around, each one containing the tail of its predecessor (that was the point of the overlap). WanV2VMergeDeOverlap takes up to ten of them and welds them into one continuous sequence with the duplicated frames gone. The README calls it "seamless." More precisely: it's duplication-free, which is the part that actually matters, and optionally crossfaded, which is polish.

Mechanism first, because it's dead simple. The first batch you plug in (image_1) is kept whole. Every batch after it gets its first overlap_size frames dropped - those are the frames that duplicate the tail of the previous chunk - and then the remainders are concatenated in order. If you used overlap_size: 8 on the chunking side, you use 8 here. Mismatch those and you get either duplicated frames (too small) or dropped content (too large), and it's the kind of bug that doesn't error - it just looks subtly wrong in the final video.

The crossfade is where it gets slightly fancy. With enable_crossfade on, before appending a new chunk the node blends the last crossfade_frames of the accumulated output with the first crossfade_frames of the de-overlapped next chunk. The blend follows the easing curve you pick from interpolation - the menu is linear, ease_in, ease_out, ease_in_out, bounce, elastic, glitchy, and exponential_ease_out - and start_level/end_level (0 to 1) control how deep the blend goes across that window. My take: bounce, elastic and glitchy are there for effect, and glitchy is literally a glitch. For actual video you want linear or ease_in_out. Crossfading is also off by default, and that's fine - a hard de-overlap seam at the right place is usually invisible anyway.

Inputs: overlap_size, enable_crossfade, crossfade_frames, interpolation, start_level, end_level, and the ten image_1 through image_10 slots (all optional, all IMAGE).

Outputs: images, the merged batch, ready to wire straight into VHS_VideoCombine or any video writer. And info, a STRING that reports how many frames went in, how many were dropped, how many were crossfaded, and what came out. Wire it to a text display. If you ever suspect the merge, this string tells you the story before you start hunting through frames.

One hard rule from the source: every input must share the same H/W/C. A 528×944 chunk next to an 832×480 chunk throws an assert, not a graceful message - resize before merging.

Install is the pack standard, no extra dependencies and no model files:

cd ComfyUI/custom_nodes
git clone https://github.com/Kishor900/comfyui-wanv2v-video-stitcher

Restart ComfyUI and it shows up under WanV2vControlnetManager/WAN (ComfyUI Manager: search "ComfyUI WANv2v Video Stitcher").

Troubleshooting, in order of how often people hit it: (1) the resolution assert above - mismatched chunk sizes; (2) overlap mismatch with the chunking side - duplicates or gaps, and info will tell you which; (3) you wired sampler latents in instead of decoded IMAGE batches - the node takes images, so decode first. Keep it simple, match the overlap, and read the info string. That's the whole node, and it's the whole reason the pack works.

CategoryWanv2vControlnetManager/WAN

Inputs (16)

NameTypeDefaultDescription
overlap_sizeINT80–2048
enable_crossfadeBOOLEANfalse
crossfade_framesINT80–2048
interpolationCOMBO8 options: linear, ease_in, ease_out, ease_in_out, bounce, elastic, +2
start_levelFLOAT0.000–1
end_levelFLOAT1.000–1
image_1optIMAGE
image_2optIMAGE
image_3optIMAGE
image_4optIMAGE
image_5optIMAGE
image_6optIMAGE
image_7optIMAGE
image_8optIMAGE
image_9optIMAGE
image_10optIMAGE

Outputs (2)

NameTypeDescription
imagesIMAGE
infoSTRING