Nodes/ComfyUI-CustomNodePacks/Video Stabilizer — Classic (deprecated)
ComfyUI Node

Video Stabilizer — Classic (deprecated)

The classic (feature-tracking) stabilizer node, and why it's deprecated

By Code2Collapse·Created 6 months ago·Updated a day ago· 52
Video Stabilizer — Classic (deprecated)
  • frames
  • stabilized_frames
  • padding_mask
  • info
frame_rate16.0
framing_modecrop_and_pad
transform_modesimilarity
camera_lockfalse
strength0.70
smooth0.50
keep_fov0.60
padding_color127, 127, 127

Let's get the headline out of the way: VideoStabilizerClassicMEC is deprecated. The pack's own description says "DEPRECATED - use VideoStabilizerMEC (method=classic) instead," and that's the end of the story for new workflows. The old node still runs for backward compatibility - it prints a warning and forwards to the unified VideoStabilizerMEC node - but you shouldn't reach for it fresh.

What made the "classic" backend interesting, and what it's actually good at, is worth understanding even now, because method=classic on the replacement node is the same code.

What the classic backend does

"Classic" here means feature-tracking stabilization: the node finds trackable features in each frame (Good Features To Track), tracks them between frames with Lucas-Kanade optical flow, estimates the camera motion from those point correspondences, and smooths the motion path over time. Then each frame is re-warped so the smoothed path holds still. It's CPU-friendly, fast, and works great on footage with texture - foliage, architecture, faces - because those give the tracker lots of points to lock onto.

Its knobs, for the record:

  • framing_mode - crop (lose the edges), crop_and_pad (default; crop then fill borders), expand (grow the canvas to fit all motion).
  • transform_mode - translation, similarity (translation + rotation + scale), perspective (full homography; most flexible, most expensive).
  • camera_lock - when on, locks the camera instead of just smoothing it (aggressive).
  • strength (0–1, default 0.7) - how much of the correction to apply.
  • smooth (0–1, default 0.5) - how aggressively the motion path is smoothed.
  • keep_fov (0–1, default 0.6) - how much field of view to preserve when cropping.
  • padding_color - what fills the introduced borders.

Outputs: stabilized_frames, padding_mask (the border regions, so you can feed them to an inpaint node), and info.

Where it falls down

Feature tracking needs features. On texture-poor plates - a blank wall, a clear sky, a clean studio backdrop - there's nothing for Lucas-Kanade to lock onto, and the correction wanders or collapses. That's precisely the case the pack's RAFT-based raft_flow backend was added for: dense optical flow is far more robust on flat, low-texture footage, at the cost of GPU memory and speed.

What to use instead

The unified VideoStabilizerMEC node, with method set to classic for your textured handheld footage or raft_flow for the flat stuff - or auto to let the node pick based on clip length and free VRAM. The presets (handheld_light, handheld_heavy, vehicle, tripod_lock) bundle the knobs above into sensible combos, and preset=manual exposes them all individually if you want the old full control. The padding_mask output contract is unchanged, so the "stabilize then inpaint the borders" pattern works identically.

Installing the pack

cd ComfyUI/custom_nodes
git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks.git

restart ComfyUI or use Manager → "CustomNodePacks". The classic backend is pure OpenCV - no models, no downloads.

Bottom line

Legacy node, working code, nothing to love about keeping it around. One method=classic dropdown on the replacement gets you the same behavior without the deprecation warning - and the auto method is a genuine upgrade if you ever stabilize footage with boring backgrounds.

CategoryC2C/Stabilization

Inputs (9)

NameTypeDefaultDescription
framesIMAGE
frame_rateFLOAT16.0
framing_modeCOMBOcrop_and_pad3 options: crop, crop_and_pad, expand
transform_modeCOMBOsimilarity3 options: translation, similarity, perspective
camera_lockBOOLEANfalse
strengthFLOAT0.700–1
smoothFLOAT0.500–1
keep_fovFLOAT0.600–1
padding_colorSTRING127, 127, 127

Outputs (3)

NameTypeDescription
stabilized_framesIMAGE
padding_maskMASK
infoSTRING