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

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

The node that turns two clips into one seamless, endlessly loopable video

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

The one node in this pack worth installing for on its own. You feed it two clips and it returns a single video that dissolves from clip 1 into clip 2 and back again, arranged so the loop point is invisible. That's the entire appeal: a looping wallpaper, an infinite VJ loop, a background that never snaps when it restarts - the thing every "seamless loop video workflow" post in this community is chasing.

How it works

It's the loopback cousin of the plain Videos Concat with CrossFade node, and the source shows the trick clearly. It crossfades in both directions: the tail of clip 1 melts into the head of clip 2 over cross_fade_frames1, and separately the tail of clip 2 melts into the head of clip 1 over cross_fade_frames2. Then it rotates the resulting batch so the second transition lands at the wrap point - when the video loops, that seam is a fade rather than a cut. Output length is len1 + len2 − cross_fade_frames1 − cross_fade_frames2, and the last frame visually hands off to the first.

Same ergonomics as its sibling: if the clips differ in resolution, images2 is silently bilinear-upscaled to match images1 (put the bigger clip in the images1 slot), and it throws bilingual errors if a fade count exceeds a clip's length. There's also a stricter check here: cross_fade_frames1 + cross_fade_frames2 must be no more than the shorter clip's frame count, or it refuses to run.

The inputs that matter

  • images1 - first frame batch (IMAGE; frames on the batch dim).
  • images2 - second frame batch.
  • cross_fade_frames1 - how long the clip1→clip2 dissolve runs.
  • cross_fade_frames2 - how long the clip2→clip1 (loop seam) dissolve runs.

One output, an IMAGE frame batch - the loopable clip. Send it straight to a VHS encode or Save Video.

Where people get burned

The defaults are 0, and both fades at 0 means no blending at all - a degenerate no-op at best, an error at worst. You'll want both above 0 (the loop seam fade, cross_fade_frames2, is the one that actually sells the illusion, so don't skimp on it). Keep the two fade counts comfortably below half the shorter clip's length, or the error message greets you. And because a loop is only as seamless as its content, a clip that ends mid-motion will still read as a loop even with a perfect fade - match the fades to where the footage naturally returns to its start, and you get something you can genuinely stare at for minutes.

Install

Zero dependencies, zero model files - this pack runs on torch, PIL, and numpy that ComfyUI already has. 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, who also maintains the better-known SuperUltimateVaceTools long-video suite - clearly ships this loopback node out of his own video-looping work. It's a niche utility, but it's the rare one that does a job the core graph has no clean native answer for. Set both fades, keep the clip sizes matched, and you've got an infinite loop.

Categoryimage

Inputs (4)

NameTypeDefaultDescription
images1IMAGE
images2IMAGE
cross_fade_frames1INT00–10000
cross_fade_frames2INT00–10000

Outputs (1)

NameTypeDescription
IMAGEIMAGE