Nodes/Steerable Motion/WAN Video Blender πŸŽžοΈπŸ…’πŸ…œ
ComfyUI Node

WAN Video Blender πŸŽžοΈπŸ…’πŸ…œ

Sewing Wan clips together without the seam

By banodocoΒ·Created 3 years agoΒ·Updated 11 months agoΒ· 975
WAN Video Blender πŸŽžοΈπŸ…’πŸ…œ
  • video_1
  • video_2
  • blended_video_frames
β—„overlap_frames10β–Ί

The Wan side of Steerable Motion doesn't make one long video. It makes one video per image pair, and you're left holding a folder of segments that are supposed to read as a single continuous clip. WAN Video Blender πŸŽžοΈπŸ…’πŸ…œ is the stitch. It takes two videos (as IMAGE batches), cross-fades the tail of the first into the head of the second, and hands you back one smooth timeline.

What it does

Three inputs: video_1, video_2, and overlap_frames (default 10). The node resizes video_2 to match video_1's resolution (Lanczos, so it won't look like a cheap nearest-neighbor job), takes the last overlap_frames of video_1 and the first overlap_frames of video_2, and blends them with a linear alpha ramp - video_1 fades out as video_2 fades in. The output, blended_video_frames, is the first video minus its blended tail, plus the blend, plus the second video minus its blended head. No hard cut, no duplicated frames, just a cross-dissolve where they meet.

If either video is shorter than overlap_frames, the node throws a ValueError rather than silently producing garbage - which is more courtesy than most ComfyUI nodes offer.

Why you'd reach for it

In the pack's Vace_Travel.json workflow, each Wan generation takes an anchor image plus a continuation and produces a new chunk. Chain those chunks and you have an "endless" travel between images - the author's own pitch for it. But chain them naively and every join is a visible jump. The blend is what makes the chain feel like a single camera move.

The overlap_frames you set here should match the overlap you actually generated with - in practice, the frames the continuation reused from the previous clip. Set it to the same number and the blend happens exactly where the model already re-rendered the same content, which is the only place a cross-fade looks invisible.

The catch nobody tells you

A cross-fade blends two looks; it can't reconcile them. If the second VACE generation drifted the palette - and VACE colour shift is a real, frequently-posted pain point - the blend just eases from one wrong colour to the next. That's precisely why this pack ships VideoContinuationGenerator alongside it: that node produces the masks that tell VACE which frames are known and shouldn't be re-coloured in the first place. Use the two together, not the blender as a band-aid over drift. And if you blend two clips with very different framerates or pacing, the fade reads as a slow-motion pause, so keep the surrounding segment lengths similar.

Install

Nothing special beyond the pack: ComfyUI Manager β†’ search "Steerable Motion", or git clone https://github.com/banodoco/steerable-motion into ComfyUI/custom_nodes/ and restart. The repo itself only requires matplotlib. The real dependency is on the workflow side - the Wan nodes (WanVideoModelLoader, WanVideoVACEEncode, the sampler) come from Kijai's ComfyUI-WanVideoWrapper, which you'll get prompted to install when you load Vace_Travel.json. That's where the heavy model downloads live, and that's where your VRAM goes. Blender itself is just torch math - it's the Wan pipeline around it that eats your GPU.

CategorySteerable-Motion

Inputs (3)

NameTypeDefaultDescription
overlap_framesINT101–1000β€”
video_1IMAGEβ€”
video_2IMAGEβ€”

Outputs (1)

NameTypeDescription
blended_video_framesIMAGEβ€”