Nodes/ComfyUI-VideoTransition/Video Shake Transition
ComfyUI Node

Video Shake Transition

The impact-shake cut — jolt the camera, land on the next clip

By yichengup·Created 11 months ago·Updated 11 months ago· 25
Video Shake Transition
  • video1
  • video2
  • video
shake_style
total_frames12
fps24
shake_intensity20.00
shake_frequency8.00
transition_point0.50
fade_mixtrue
use_gpufalse
batch_size8
background_color#000000
width640
height640
quality90

Sometimes a cut doesn't need to be clever - it needs to hit. The shake transition does the thing you see in every action trailer: the frame convulses violently for a split second and when it settles, you're in the next clip. The pack frames it as "CapCut-style," and that's the right reference - it's a punch, not a flourish. Six shake styles (random_shake, horizontal_shake, vertical_shake, rotation_shake, scale_shake, combo_shake) and a fade_mix option that blends a crossfade in underneath. Use it for impact moments, cuts on a beat drop, or hiding an otherwise-jarring edit.

How it works

Chromium branch: the two frames are composited in a headless Chromium page and a shakeController in the page applies per-frame transforms - translation for horizontal/vertical, rotation for the spin, scale for the zoom-shake, and combinations for combo_shake. The Python side drives the animation in batches. Two details make the effect: transition_point (0.2–0.8, default 0.5) decides when in the clip the shake peaks, and the transition is short by design - total_frames here tops out at 60, not 300, because a shake that goes on for three seconds is motion sickness, not cinema.

Inputs and outputs that matter

  • video1, video2 - the two clips.
  • shake_style - the six-way enum. combo_shake is the most dramatic; horizontal_shake is the most readable.
  • shake_intensity (5–50, default 20) - pixel amplitude of the jolt. 20 is already noticeable; 50 is nausea.
  • shake_frequency (2–20, default 8) - how fast it oscillates. Higher frequency + higher intensity = that frantic jitter.
  • transition_point (0.2–0.8, default 0.5) - when the peak lands in the transition. 0.5 puts the violence mid-cut.
  • fade_mix (default on) - blends a crossfade under the shake, which smooths the handoff to video2.
  • total_frames (4–60, default 12) and fps (default 24) - 12 frames at 24fps is a half-second punch. That's the right ballpark.
  • use_gpu, batch_size, background_color, width/height, quality.

Output is video - an IMAGE batch; feed it to VHS_VideoCombine or ImageBatch to export.

Installing it

Same pack. ComfyUI Manager → "VideoTransition", or:

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

Chromium is required.

Common issues

  • Missing Chromium crash - playwright install chromium (mirror flag behind the GFW).
  • The shake looks blurry/mushy - the jolt displaces the whole frame; at high shake_intensity with fade_mix on you get smearing. Either drop intensity or turn fade_mix off for a sharper cut.
  • Shake peaks at the wrong moment - that's transition_point; move it toward 0.8 if you want the jolt right before the new clip lands.
  • Too long - this is the one node where the short total_frames cap is the author doing you a favor. Keep it under ~20 frames.
CategoryVideoTransition

Inputs (15)

NameTypeDefaultDescription
video1IMAGE
video2IMAGE
shake_styleCOMBO6 options: random_shake, horizontal_shake, vertical_shake, rotation_shake, scale_shake, combo_shake
total_framesINT124–60
fpsINT2415–60
shake_intensityoptFLOAT20.005–50
shake_frequencyoptFLOAT8.002–20
transition_pointoptFLOAT0.500.2–0.8
fade_mixoptBOOLEANtrue
use_gpuoptBOOLEANfalse
batch_sizeoptINT81–20
background_coloroptSTRING#000000
widthoptINT640640–3840
heightoptINT640360–2160
qualityoptINT9060–100

Outputs (1)

NameTypeDescription
videoIMAGE