ComfyUI Node

Video Fuse

Fuse two videos into one split-screen with a feathered seam

By trashkollector·Created about a year ago·Updated about a year ago· 0
Video Fuse
  • image1
  • image2
  • audio
  • image
  • audio
◄fuse_type▾►
◄targetWidth500►
◄targetHeight500►

Sometimes you don't want to switch between two videos - you want both on screen at once, with a soft diagonal boundary between them instead of a hard split down the middle. That's this node: "take 2 videos and fuse them together into 1 video." Think before/after comparisons, reaction duos, or any side-by-side where the seam being feathered makes it look intentional rather than slapped together. It's the fifth and simplest node in the TKVideoZoom pack, and it's a couple of PIL composites with zero model involvement.

How it works

Both inputs get resized to roughly half the target width, side by side, with one laid over the other through a grayscale mask. The fuse_type picker (Effect 1–5) chooses which mask - each is a bundled PNG in the repo's assets/ folder with a different diagonal or curly boundary shape, so Effect 1 through 5 are just five different seam geometries. White areas of the mask show clip 1, black areas show clip 2, and the gray ramp in between is the feathered blend. A little more of clip 2 is then pasted onto the right edge, giving an output that's wider than either input.

It's the same "deterministic pixel op, don't burn a diffusion pass on it" philosophy the whole pack runs on - the case the KB's post-processing essay makes for the whole layer - instant, reproducible, seed-proof.

Inputs and outputs

Required: fuse_type, targetWidth (default 500), targetHeight (default 500), image1, image2. Optional: audio. Outputs: image, audio.

The only choices that matter:

  • fuse_type - which seam shape. Effect 1 is the soft diagonal; higher effects are curlier. There's no preview, so you'll often run it a couple of times to find the seam you like. Cheap to do - it's milliseconds.
  • targetWidth / targetHeight - again the 500×500 default trap from the Stitcher. Set these to a real resolution or you get small, center-cropped output.

Wiring is VHS_LoadVideo × 2 → TKVideoFuse → VHS_VideoCombine.

Gotchas worth knowing

  • Output length = the shorter input. The two clips are zipped frame-by-frame, so when one runs out, the fuse stops. Feed it two same-length clips (or trim first) or the result is whichever is shorter.
  • Output dimensions are "roughly" double width. Because of the gap and overlap math, the result isn't exactly 2× targetWidth - it's targetWidth plus a bit. Don't assume the shape; let VHS_VideoCombine handle whatever comes out.
  • Audio is a single pass-through. One optional audio input, carried out untouched - no mixing of two soundtracks. Wire clip 1's audio if you want sound at all; handle a real mix elsewhere.
  • The masks live in the repo's assets/ folder. If you install a stripped copy without them, every fuse type silently falls over. Keep the folder.

Install

ComfyUI Manager → search "TKVideoZoom" → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/trashkollector/TKVideoZoom

Restart. No models, no API keys, nothing heavy - just OpenCV and Pillow, both standard in a ComfyUI install that already runs VHS_LoadVideo. Skip the pack's requirements.txt torch pins; stock ComfyUI is all this needs. Like the other four nodes in the pack, it loads from one shared module, so if it's missing from your menu, the whole pack failed to import at once.

CategoryTKVideoZoom

Inputs (6)

NameTypeDefaultDescription
fuse_typeCOMBO5 options: Effect 1, Effect 2, Effect 3, Effect 4, Effect 5
targetWidthINT500—
targetHeightINT500—
image1IMAGE—
image2IMAGE—
audiooptAUDIO—

Outputs (2)

NameTypeDescription
imageIMAGE—
audioAUDIO—