Nodes/S42 CutFlow/🎬 S42 CutFlow Ken Burns
ComfyUI Node

🎬 S42 CutFlow Ken Burns

Pan and Zoom on Demand

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
🎬 S42 CutFlow Ken Burns
  • clip
  • clip
  • frame_count
  • info
start_x0.00
start_y0.00
start_zoom1.00
end_x0.30
end_y0.20
end_zoom1.50
easingease_in_out
output_frames0

Named after the documentary filmmaker who turned a slow, stately zoom into an entire visual language, the Ken Burns effect is how you make a still image feel like it has a camera. S42CF_KenBurns brings that to S42 CutFlow: an animated pan and zoom applied to your clip or still, with easing so the motion accelerates and decelerates like a real camera move instead of sliding at a constant rate.

The inputs that matter

The node works by cropping a window into each frame and resizing it back up, so it's all in the four corners:

  • start_x / start_y - where the crop window starts (0–1, normalized across the frame). 0, 0 is top-left.
  • start_zoom - the starting magnification. 1.0 is full view, 2.0 is a 2× zoom (a 50% crop).
  • end_x / end_y - where the crop window ends up.
  • end_zoom - the ending magnification (default 1.5).
  • easing - the acceleration curve (ease_in_out by default). This is what separates a film look from a mechanical slideshow: the camera starts slow, moves, settles slow.
  • output_frames - 0 means "keep the input length." Set a number to force a specific output duration.

So a classic push-in is start_zoom 1.0 → end_zoom 1.3 with start_x/y drifting from 0 to 0.3/0.2. The default values in the node actually demo this decently.

The still-image workflow (this is where it shines)

The tooltip has the key gotcha: for still images, use S42CF_ImageToClip first - otherwise KenBurns animates a single frame and you get one frozen frame out, which defeats the purpose. The right chain:

  1. Image → S42CF_ImageToClip (say 72 frames, 3 seconds)
  2. S42CF_KenBurns (zoom 1.0 → 1.3, ease_in_out)
  3. → grade, grain, export

That's the entire "make my AI still cinematic" recipe, and it's why this node pairs with ImageToClip constantly. It works on real video clips too - a subtle push-in on already-moving footage adds production value - but its superpower is animating stills.

Outputs are clip, frame_count, and info. Since it's a crop-resize operation on CPU, it's fast and VRAM-free, and the normalized coordinates mean the same settings work at any resolution.

Install

ComfyUI Manager → search "S42 CutFlow" → Install → restart. Or:

cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt

Restart fully; console prints [S42 CutFlow] Loaded 53 total nodes. Pure CPU/numpy - no models, no VRAM. Only pack dependency is OpenCV (opencv-python-headless in requirements.txt; README's troubleshooting says pip install opencv-python if you see "No module named 'cv2'").

Pack caveat, standing: Geeky Ghost runs S42 CutFlow as a work-in-progress being groomed for LTX Desktop. The composition core - KenBurns included - is stable; expanded nodes are where things move.

CategoryS42 CutFlow/Composition

Inputs (9)

NameTypeDefaultDescription
clipIMAGESource clip or image. For stills, use ImageToClip first or this will animate a single frame.
start_xFLOAT0.000–1Start crop left edge (0-1 of width).
start_yFLOAT0.000–1Start crop top edge.
start_zoomFLOAT1.000.2–3Start zoom level. 1.0 = full view, 2.0 = 2x zoom (50% crop).
end_xFLOAT0.300–1End crop left edge.
end_yFLOAT0.200–1End crop top edge.
end_zoomFLOAT1.500.2–3End zoom level.
easingCOMBOease_in_outAnimation easing curve.
output_framesINT00–9999Output frame count. 0 = same as input clip length.

Outputs (3)

NameTypeDescription
clipIMAGE
frame_countINT
infoSTRING