Topaz Video Stabilize
Steadying shaky video with Topaz, inside ComfyUI — and why it's two passes
- images
- engine
- images
Handheld footage, drone wobble, a pan that turned out less locked-off than you hoped - Topaz Video Stabilize fixes it with Topaz's own stabilization models (ref-2 is the usual default) on your local Topaz Video install. This is a repair node, not a creative effect: it removes camera motion you didn't want. Which means the first question is whether your clip needs it. Stabilizing a locked-off tripod shot doesn't make it steadier, it just costs render time - the pack's own measurements show it removed 97% of a deliberately-added ±6px shake on real footage, which is the number to trust when you do have a problem.
How it works: genuinely two passes
Stabilization in Topaz is two separate ffmpeg operations that can't be collapsed into one:
tvai_cpeanalyses camera motion and writes a pose-estimation file.tvai_stbreads that file and warps the frames to counter the motion.
The node runs both for you - the engine feeds the raw frames through twice from memory, so you don't see the intermediate step. Worth knowing only so you understand why this node is slower than the upscale one and why it does nothing useful on footage with no camera motion to speak of.
The choice that matters: auto_crop vs full_frame
Stabilization has to move frames around, and moving them exposes edges. mode decides what happens there:
auto_crop(default) - crops into the frame to hide the exposed edges. Output size is unchanged, nothing is invented, and it's the safe, fast choice.full_frame- synthesises the missing edges instead. No crop, keeps your full field of view, but slower, hungrier on memory, and it's asking the model to invent content along the borders.
For most shaky footage, auto_crop and a slight reframe is exactly what you want anyway. Go full_frame when you genuinely can't afford to lose the edges.
Inputs that matter
smoothness- how hard the camera path is smoothed (0–16, default 6). Low values keep more of the original motion, high values flatten it into near-static.stabilize_rotation/stabilize_pan_horizontal/stabilize_pan_vertical/stabilize_zoom- four booleans, all on by default, that pick which axes get corrected. If your wobble is purely horizontal drift, turning the others off stops the node trying to correct motion that isn't there.rolling_shutter_correction- off by default; turns on correction for the skew that rolling-shutter sensors produce on fast pans. Costs time, only helps where the skew actually exists.reduce_jitter(0–5) andcanvas_scale(used byfull_framemode) are the fiddly ones - leave them alone until you've seen a first result.
Output is a single images IMAGE batch; same frame count in and out, so the only thing downstream needs is the unchanged fps.
Install
It ships in a pack, so from ComfyUI's custom_nodes folder:
git clone https://github.com/donangel85/ComfyUI-TopazVideoLocal.git
Restart ComfyUI. No pip install needed beyond the numpy ComfyUI already has; ComfyUI Manager finds it by searching "TopazVideoLocal". The real requirements sit underneath: Windows and a licensed, signed-in Topaz Video installation, with model weights on disk.
Common issues
If the node errors, run the pack's Topaz Diagnostics node first - it reports install, model and licence status in one string you can read. "No usable installation found" means pointing install_path on the Engine Settings node at your Topaz folder; licence errors mean opening Topaz Video and signing in. And if the output looks softer than the input, that's usually full_frame inventing edges on footage that didn't need it - flip to auto_crop and see whether you even notice the reframe.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| model | COMBO | <no Topaz Video installation found> | 1 options: <no Topaz Video installation found> |
| fps | FLOAT | 24.0001–480 | — |
| mode | COMBO | auto_crop | auto_crop: crop into the frame to hide the edges stabilization exposes — keeps the output size. full_frame: synthesise the exposed edges instead. Slower and more memory-hungry. |
| smoothness | FLOAT | 6.00–16 | How much the camera path is smoothed. |
| stabilize_rotationopt | BOOLEAN | true | — |
| stabilize_pan_horizontalopt | BOOLEAN | true | — |
| stabilize_pan_verticalopt | BOOLEAN | true | — |
| stabilize_zoomopt | BOOLEAN | true | — |
| rolling_shutter_correctionopt | BOOLEAN | false | Correct the skew rolling-shutter sensors produce on fast pans. |
| reduce_jitteropt | INT | 00–5 | — |
| canvas_scaleopt | FLOAT | 2.01–8 | Working canvas size relative to the input, used by full_frame mode. |
| engineopt | TOPAZ_ENGINE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |