Cross Dissolve with Overlap
Glue Two Clips Together Without the Hard Cut
- images_a
- images_b
- images
- frame_count
- blend_info
A cut is the cheapest way to join two shots, and also the most jarring. When you're stitching together video fragments - a Wan clip ending where another begins, two image batches that are meant to be one continuous scene - a hard cut advertises the seam. Cross Dissolve with Overlap is the node that dissolves between them instead: it takes the tail of one clip and the head of the next and blends them together over a window you control.
It's the sort of node that sounds trivial and turns out to be the difference between "you can see where I edited" and "where did that clip even change?" If you're assembling per-scene outputs from a scene splitter, or joining extension segments, this is the glue.
How it works
Feed it two image batches - images_a and images_b, where A is the earlier clip and B the later one. The node:
- Takes
overlap_frames(default 10) from the tail of A and the same number from the head of B. - Blends the two overlapping regions together with an alpha ramp shaped by
dissolve_curve. - Concatenates the rest of A, the blended region, and the rest of B into one output batch.
The dissolve_curve menu is where the character of the transition lives: linear is the even crossfade, ease_in/ease_out lean one way, ease_in_out is the gentle S-curve most editors reach for, and bounce/elastic are there if you want the transition to have a personality it shouldn't. blend_mode (normal, multiply, screen, overlay, soft_light) changes how the overlapping pixels combine rather than just how fast they fade.
The knobs that actually matter for a beginner:
overlap_frames- the length of the dissolve. Too short and you see a blink; too long and the motion gets mushy. Start at 10.dissolve_curve-ease_in_outorlinear; the rest are flourishes.auto_adjust_overlap(default on) - caps the overlap at the batch sizes so you can't ask for a 100-frame dissolve across two 40-frame clips and get garbage.preserve_aspect(default on) - resizes both batches to matching dimensions first, so a dimension mismatch doesn't abort the run.
The outputs are the blended images batch, frame_count (handy if you're computing a final duration), and blend_info, a string describing what the node actually did - worth glancing at once if a transition looks off, because it tells you the overlap that really ran after auto_adjust_overlap did its thing.
Install
Search "Trent Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TrentHunter82/TrentNodes.git
cd TrentNodes
pip install -r requirements.txt
This node is pure torch tensor math - no model downloads, nothing beyond the pack's standard opencv-python/numpy/pillow requirements. Restart ComfyUI after installing. (The author has flagged that ComfyUI Manager can misbehave on this pack thanks to an early repo rename that left a duplicate registry entry; the manual clone is the dependable path.)
Common issues
- Wrong total frame count. You're blending overlap frames, so
frame_countequalslen(A) + len(B) - overlap_frames. If your downstream video node expects the raw sum, pad accordingly. - A and B are wildly different sizes. With
preserve_aspecton, the node resizes to match - checkblend_infoif the result looks stretched, because that's the resize talking. - The dissolve looks like a double-exposure. That's
blend_modefighting you. Keep it onnormalfor realistic dissolves;screenandoverlayare stylistic choices, not fixes.
For joining two clips into one smooth take, this is a small node that does one thing well. And it's the rare ComfyUI node where the default settings are genuinely fine - set overlap_frames, pick a curve, and go.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images_a | IMAGE | — | |
| images_b | IMAGE | — | |
| overlap_frames | INT | 101–1000 | — |
| dissolve_curve | COMBO | linear | 7 options: linear, ease_in, ease_out, ease_in_out, smooth, bounce, +1 |
| auto_adjust_overlapopt | BOOLEAN | true | Automatically adjust overlap if it exceeds batch sizes |
| feather_edgesopt | BOOLEAN | false | Apply edge feathering to reduce visible seams |
| preserve_aspectopt | BOOLEAN | true | Ensure both image batches have matching dimensions |
| blend_modeopt | COMBO | normal | Blending mode for the crossfade |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| frame_count | INT | — |
| blend_info | STRING | — |