360 Stabilize
Stop 360 footage from wobbling without losing the whole sphere
- video
- video
Handheld 360 footage is a nauseating thing to watch, because the whole world shakes with you. Regular video stabilizers can't fix it - there's no flat frame to lock onto, the shake lives in the orientation of the sphere itself. 360 Stabilize is the ComfyTV stage that smooths that orientation over time, so the horizon stops swinging even though you were wobbling when you shot it.
It's a VideoFX stage in the pack's canvas model: you wire equirectangular footage in, hit its Run button, and the stabilized result flows downstream as a snapshot - usually into 360 Projection, which then re-aims and flattens the now-steady sphere.
The inputs
- smoothing (default 15, 1–120) - how much temporal smoothing to apply to the camera orientation. Low values leave fast motion, high values make the camera feel locked to a tripod. 15 is a sensible starting point; crank it up if the clip still swims.
- strength (default 1, 0–1) - the mix of smoothed vs original orientation. 0 does nothing, 1 fully applies the stabilized path. Drop it toward 0.5 if full stabilization makes the motion feel artificial.
The project_id, parent_output_id, and force_run_token inputs are internal frontend bookkeeping - leave them alone.
How it works
This one isn't a filter-string wrapper like a lot of the FX stages. It calls a dedicated 360-stabilization runner in the pack (stabilize_360_video) that processes the footage frame by frame in equirectangular space, estimating and smoothing the camera's orientation path. Because it operates on the full sphere rather than a flat projection, you don't get the edge artifacts a flat stabilizer would produce when it runs out of image to shift.
Install
ComfyTV ships ~190 stages in one pack; installing the pack covers this node.
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart ComfyUI fully and look under ComfyTV → VideoFX. ComfyUI Manager finds it by searching "ComfyTV". No model downloads and no extra Python dependencies - the stabilization is computed locally on the clip. On ComfyUI Desktop or macOS, the README warns the relative cd can target the wrong instance; clone into the absolute path of the running one (from the startup log).
Troubleshooting
- Footage still sways. Raise
smoothingtoward 60–120. If it still swims, double-check your clip is proper equirectangular 360 - feeding it a normal flat video won't stabilize well because the motion model doesn't match. - Motion looks too floaty/robotic. That's over-smoothing; lower
smoothingor dialstrengthbelow 1 to keep some of the original energy. - No output. Wire a video into the
videoinput; the stage raises a clean error otherwise.
The workflow is: 360 Stabilize the sphere, then 360 Projection to aim and flatten it. Together they turn shaky 360 into something a client could actually watch.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| smoothing | INT | 151–120 | — |
| strength | FLOAT | 1.000–1 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |