Nodes/ComfyUI-BBTools/🅱🅱视频淡入拼接|Videos Concat with CrossFade
ComfyUI Node

🅱🅱视频淡入拼接|Videos Concat with CrossFade

Stitching two clips with a fade instead of a hard cut

By bbaudio-2025·Created about a year ago·Updated about a year ago· 0
🅱🅱视频淡入拼接|Videos Concat with CrossFade
  • images1
  • images2
  • IMAGE
cross_fade_frames0

Two videos, one node, a smooth dissolve where they meet instead of an abrupt jump cut. If you've ever concatenated two AI clips with a plain batch concat and flinched at the hard cut where frame N of clip A meets frame 1 of clip B, this is the fix. In ComfyUI a "video" is just an IMAGE tensor with frames stacked on the batch dimension - the same thing AnimateDiff, Wan, and VideoHelperSuite hand you - so a node that rearranges and blends a frame batch is doing the video editing.

How it works

The math is a straight linear crossfade, fully visible in the source. Give it two frame batches (images1, images2) and a fade length. It keeps the entire first clip except its last cross_fade_frames, then blends those last frames of clip 1 against the first cross_fade_frames of clip 2 with a linear alpha ramp, then appends the rest of clip 2. Output length is len1 + len2 − cross_fade_frames, and the transition is smooth because every frame in the overlap is a mix of both clips.

Two behaviors worth knowing. If the two clips differ in resolution, the node silently bilinear-upscales images2 to match images1 - convenient, but notice it's one-way, so put your higher-res clip in the images1 slot. And if cross_fade_frames exceeds either clip's length, it throws a clear error (the messages are bilingual, which is your first hint this is a Chinese dev's pack). The one real trap: the cross_fade_frames default is 0, which is a degenerate "no fade" case that leaves nothing to blend. Set it to something like 8–24 frames (at 30fps that's a third of a second to most of a second) or the node has nothing to do.

The inputs that matter

  • images1 - first frame batch (IMAGE).
  • images2 - second frame batch. Gets upscaled to match images1 if sizes differ.
  • cross_fade_frames - length of the dissolve, 0–10000, default 0. Raise it above 0; that's the whole point of the node.

One output, an IMAGE frame batch, ready for a VHS encode or a Save Video node.

When you'd actually reach for it

The seamless-loop problem is real and recurring in this community - people post "seamless loop video workflow" threads regularly, and most of them are assembling short generated clips into longer, smoother sequences. This is the simpler, non-looping half of that family. Use it to join two generated segments into one longer take, or to stitch a scene change without a visible seam. If you specifically want the output to loop back on itself, grab the sibling Loopback Videos Concat with CrossFade node instead - this one just joins front to back.

Install

Same zero-dependency pack as the rest of BBTools - no models, no pip requirements, just torch/PIL/comfy utilities that ship with ComfyUI. ComfyUI Manager (search ComfyUI-BBTools) or:

cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/ComfyUI-BBTools

then restart. The author, bbaudio-2025 (bbaudio2024 on reddit, the VACE long-video tools dev), keeps this pack deliberately minimal, so don't expect docs - the source is short and readable if you want to confirm the fade math yourself. Keep your fade above 0, mind which slot your higher-res clip is in, and you'll get a clean dissolve every time.

Categoryimage

Inputs (3)

NameTypeDefaultDescription
images1IMAGE
images2IMAGE
cross_fade_framesINT00–10000

Outputs (1)

NameTypeDescription
IMAGEIMAGE