Video Stabilizer Shake Generator Manual
Dial in fake camera shake by hand with Shake Generator Manual
- frames_context
- Motion Meta
The Shake Generator is the "pick a vibe" version - five presets, two sliders, done. This node is for when you want to know exactly what the shake is made of. Video Stabilizer Shake Generator Manual produces the same deterministic motion_meta output, but instead of a style dropdown it exposes the raw recipe: pan, tilt, roll, and zoom amplitudes plus the frequencies that make shake feel like shake. It exists because the author wanted preset values you can actually read and edit, not a black box.
Here's the convenient part: the defaults in this node are the handheld preset's constants, lifted straight out of the style table. So you can think of it as the handheld preset with its hood popped. Tweak from there rather than guessing from zero.
Like its preset sibling, it never touches frames. frames_context is wired in purely to read frame count and resolution - the tooltip says it plainly: "This node outputs motion metadata only; connect it to Video Stabilizer Motion Apply to move pixels." So your graph is: feed a video in for context → this node → Motion Apply → warped video out.
The inputs that matter
The shake is built from layers, and the fields map to them:
pan/tilt/roll- amplitude of the main sway in degrees.rollis the in-plane rotation; its tooltip gives you the one-liner: set it to0.0to keep the horizon level.zoom- log-scale zoom amplitude; tiny numbers here are normal (default0.003).drift_freq- frequency of the low-frequency sway (Hz). This is the "fighting the camera" drift.tremor/tremor_freq- the high-frequency micro-shake layered on top;tremoris a ratio,tremor_freqits Hz.jitter_rate- sudden jumps per second;0(the default) means none. This is your "something bumped the camera" knob.step- walking-bounce amplitude in degrees; above zero it adds a rhythmic footstep bounce.randomness- how much the noise wanders between smooth sine and irregular motion (0–1).virtual_fov- the virtual camera field of view used to convert angular motion into pixel displacement. Larger FOV = more visible pan for the same degrees.amount/speed- the same global strength and speed multipliers the preset node has, applied on top of everything.seed- reproducibility. Same seed, same shake, forever.
Output and install
One output: Motion Meta (JSON), straight into Motion Apply's motion_meta input. Install is the pack standard - ComfyUI Manager → "ComfyUI-Video-Stabilizer", or:
cd ComfyUI/custom_nodes
git clone https://github.com/nomadoor/ComfyUI-Video-Stabilizer
Restart. No models to download; the only dependency is opencv-python-headless, auto-installed. Needs a recent ComfyUI for the V3 node API.
A couple of practical notes. If you're after the classic "handheld X/Y without a tilted horizon" look, zero the roll rather than reaching for a lock_horizon flag - the manual node doesn't have one, which is fine, since you can just set the value. And because everything is deterministic, once you find a recipe you like you can reuse the seed across clips for a consistent feel - that's the whole point of making the metadata reproducible.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| frames_context | IMAGE | The input frames are used only to read frame count and resolution. This node outputs motion metadata only; connect it to Video Stabilizer Motion Apply to move pixels. | |
| frame_rate | FLOAT | 16.0 | Fallback frame rate when the input does not carry fps metadata. |
| pan | FLOAT | 0.400–5 | — |
| tilt | FLOAT | 0.330–5 | — |
| roll | FLOAT | 0.500–5 | In-plane rotation amplitude. Set to 0.0 to keep the horizon level. |
| zoom | FLOAT | 0.0030–0.05 | — |
| drift_freq | FLOAT | 0.350–2 | — |
| tremor | FLOAT | 0.350–2 | — |
| tremor_freq | FLOAT | 5.01–15 | — |
| jitter_rate | FLOAT | 0.00–3 | — |
| step | FLOAT | 0.000–2 | — |
| randomness | FLOAT | 0.300–1 | — |
| virtual_fov | FLOAT | 6010–120 | — |
| amount | FLOAT | 1.000–3 | — |
| speed | FLOAT | 1.000.1–3 | — |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Motion Meta | JSON | — |