Skip to content

Instantly share code, notes, and snippets.

@abcsds
Forked from hlorand/vidstab_ffmpeg.md
Created July 6, 2023 06:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abcsds/00410a9e11f011fca23cd5df9b7d7264 to your computer and use it in GitHub Desktop.
Save abcsds/00410a9e11f011fca23cd5df9b7d7264 to your computer and use it in GitHub Desktop.
Video stabilization using VidStab and FFMPEG

Video stabilization using VidStab and FFMPEG

** Step 1 **

Install ffmpeg with the vidstab plugin.

** Step 2 **

Analyze any video and generate a so called transform file, which describes camera movements. The command below generates a transforms.trf file

ffmpeg -i input.mp4 -vf vidstabdetect=shakiness=7 -f null -

Options:

  • shakiness: Set the shakiness of input video or quickness of camera. It accepts an integer in the range 1-10, a value of 1 means little shakiness, a value of 10 means strong shakiness. Default value is 5.

** Step 3 **

Stabilize video

ffmpeg -i input.mp4 -vf vidstabtransform=smoothing=30:zoom=5:input="transforms.trf" stabilized.mp4

Options:

  • smoothing: Default value is 10. For example, a number of 10 means that 21 frames are used (10 in the past and 10 in the future) to smoothen the motion in the video. A larger value leads to a smoother video, but limits the acceleration of the camera (pan/tilt movements).
    • recommended value: videoFPS / 2
  • zoom: Set percentage (%) to zoom into video. A positive value will result in a zoom-in effect, a negative value in a zoom-out effect. Default value is 0 (no zoom).

Read more in the vidstab documentation

Create side-by-side comparsion video:

ffmpeg -i original.mp4 -i stabilized.mp4 -filter_complex "[0:v:0]pad=iw*2:ih[bg]; [bg][1:v:0]overlay=w" sidebyside.mp4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment