Skip to content

Instantly share code, notes, and snippets.

@AnasQiblawi
Forked from hlorand/vidstab_ffmpeg.md
Created September 14, 2022 16:15
Show Gist options
  • Save AnasQiblawi/6c4c86db5fe63d2a10a4b974285ea458 to your computer and use it in GitHub Desktop.
Save AnasQiblawi/6c4c86db5fe63d2a10a4b974285ea458 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