Nodes/ComfyTV/Video Transition
ComfyUI Node

Video Transition

57 ways to join two clips

By jtydhr88·Created 3 months ago·Updated about 17 hours ago· 725
Video Transition
  • video_a
  • video_b
  • video
force_run_token0
project_id
parent_output_id0
transitionfade
duration1.00
offset0.00

Hard cuts are fine until they're not. Video Transition is the node that crossfades one clip into another with FFmpeg's xfade family - plain fades, dissolves, directional slides, circle reveals, radial and pixelize transitions, and a few dozen more. It's how you join two generated clips so the seam feels intentional.

What it does

On ▶ Run it blends video_a (the outgoing clip) into video_b (the incoming one) over a transition of your choice and outputs a single COMFYTV_VIDEO. Both inputs are required - run with either missing and the node errors instead of guessing.

The controls:

  • transition - pick from the full XFADE_TRANSITIONS menu: fade (default), dissolve, fadeblack, fadewhite, directional wipes and slides (wipeleftsmoothdown), reveals (circlecrop, circleopen, vertopen…), cover*/reveal*, squeezeh/squeezev, zoomin, distance, pixelize, radial, hblur. That's 57 named styles.
  • duration - transition length in seconds, 0.1–5.0, default 1.0.
  • offset - seconds into clip A where the transition starts; 0 (default) means auto - it places the transition at the tail of A, ending the clip. Set a real value only when you want the transition to begin earlier inside A.

Choosing well

The honest guidance: 90% of the time a fade or dissolve is the right answer, and the exotic wipes read as motion graphics, not filmmaking. The directional wipes and cover*/reveal* family earn their keep in montages and title sequences; pixelize and radial are the "stylized reveal" options for AI-video work where you want the transition to feel generative. If you want a gradient wipe - a shape sweeping across based on a grayscale pattern - that's a different node, Luma Wipe, which supports custom luma images. For assembling many clips with per-cut transitions in one node, the pack's Sequence stage does it at scale.

Install and troubleshooting

Pack-standard: git clone https://github.com/jtydhr88/ComfyTV into ComfyUI/custom_nodes, restart, under ComfyTV → Compose. No models, no GPU - PyAV xfade pass.

  • Run errors "needs two upstream videos" - one of video_a/video_b is unwired or wasn't run. Both must hold snapshots.
  • Transition looks off - check duration (a 1s transition on a 3s clip is a big fraction) and whether offset is pulling the start into the middle of A when you wanted the tail.
  • Wanted a gradient/custom wipe - that's Luma Wipe, not this node.

Output is a COMFYTV_VIDEO snapshot; cross to native ComfyUI nodes with a ← ComfyTV Video Bridge.

CategoryComfyTV/Compose

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
transitionCOMBOfade58 options: fade, dissolve, fadeblack, fadewhite, fadegrays, fadefast, +52
durationFLOAT1.000.1–5
offsetFLOAT0.000–3600seconds into clip A where the transition starts; 0 = auto (end of A)
video_aoptCOMFYTV_VIDEO
video_boptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO