Nodes/ComfyUI-VideoTransition/Video Blink Transition
ComfyUI Node

Video Blink Transition

The blink — a soft eyelid close that's the classiest cut in this pack

By yichengup·Created 11 months ago·Updated 11 months ago· 25
Video Blink Transition
  • video1
  • video2
  • video
total_frames60
fps30
blink_speed1.0
blur_intensity0.8
eyelid_curve0.30
edge_feather0.20
mask_color

Every pack needs one transition that isn't trying to blow your head off. This is it. Video Blink Transition makes the frame appear to blink - dark eyelids sweep down from top and bottom, the frame blurs at the closed moment, and when the lids open you're in the next clip. It reads as organic, almost editorial, and it's the cheapest node in the pack to run: pure Python with NumPy masks and a Gaussian blur, no browser involved. If explosion and glitch nodes are the fireworks, this is the slow blink between scenes in a music video.

How it works

The source is refreshingly honest about the mechanism: it builds an upper and lower eyelid mask in NumPy, uses eyelid_curve to arc the lid edges (instead of drawing flat bars), feathers the edges with edge_feather, and applies cv2.GaussianBlur to the frames around the midpoint of the blink so the "closed eye" moment isn't a hard cut. The README claims ~50% faster and ~60% less memory than the browser-rendered nodes - that tracks, because it never renders a webpage; it just blends arrays in a tight loop.

Inputs and outputs that matter

  • video1, video2 - the two clips. Frames are sampled by progress, so unequal lengths are fine.
  • total_frames (4–300, default 60) and fps - duration of the blink and output rate.
  • blink_speed (0.3–3) - how fast the eyelids close. Lower = more of a slow, deliberate blink.
  • blur_intensity (0–2) - strength of the mid-blink blur. 0 gives a crisp blink, higher feels dreamy.
  • eyelid_curve (0–1) - arcing of the lid edges; 0 is straight bars.
  • edge_feather (0–1) - softness of the mask edges, which stops the lids looking pasted on.
  • mask_color - black (the default and the natural choice), white, or gray. White eyelids look weird on bright footage; black is safe.

Output is a video IMAGE batch - wire it to VHS_VideoCombine (or ImageBatch) to export.

Installing it

From yichengup/ComfyUI-VideoTransition. ComfyUI Manager → "VideoTransition", or:

cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/ComfyUI-VideoTransition
cd ComfyUI-VideoTransition
pip install -r requirements.txt

You can skip playwright install chromium for this one - it never launches a browser.

Common issues

  • cv2 ImportError - the recurring pack gotcha: opencv isn't in requirements.txt, it's the copy bundled with ComfyUI. Bare environments: pip install opencv-python.
  • Blink looks like two solid bars - raise eyelid_curve and edge_feather; the defaults are subtle and at 0/0 you get harsh lines.
  • It doesn't look like it's using your inputs' resolution - correct: this node has no width/height dials, it inherits the input frame size. Resize upstream if you need different output.
  • Blink feels too fast - bump total_frames up or lower blink_speed. At the default 60 frames / 30fps it's a fairly quick wink.
CategoryVideoTransition

Inputs (9)

NameTypeDefaultDescription
video1IMAGE
video2IMAGE
total_framesINT604–300
fpsINT3015–60
blink_speedoptFLOAT1.00.3–3
blur_intensityoptFLOAT0.80–2
eyelid_curveoptFLOAT0.300–1
edge_featheroptFLOAT0.200–1
mask_coloroptCOMBO3 options: black, white, gray

Outputs (1)

NameTypeDescription
videoIMAGE