使用 "ffmpeg "和 "VidStab "的视频稳定功能

1,164 阅读1分钟

早在2015年12月,@maxogden写了一篇关于用ffmpeg稳定自己的视频的不错的指南。我偶尔会回到这里,并更新了我的gist评论,以提供一些更新的命令。由于在安装和使用方面已经发生了足够多的变化,我想一个新的、漂亮的、可操作的指南应该有一个非gist的家。

介绍一下2021年的DIY视频防抖指南

在Mac OS上,安装ffmpeg ,并从自制的vidstab

1
2
brew install ffmpeg
brew install libvidstab

在linux上,你可以 sudo make install.

分两次运行稳定功能

libvidstab有很多选项,如shakiness,accuracy,smoothing 。默认值是好的,但你可能想做实验。甚至还有一个可视化的诊断模式。

假设源视频被命名为 clip.mkv

1
2
3
4
5
6
# The first pass ('detect') generates stabilization data and saves to `transforms.trf`
# The `-f null -` tells ffmpeg there's no output video file
ffmpeg -i clip.mkv -vf vidstabdetect -f null -

# The second pass ('transform') uses the .trf and creates the new stabilized video.
ffmpeg -i clip.mkv -vf vidstabtransform clip-stabilized.mkv

你现在有一个 clip-stabilized.mkv!

奖励:创建一个对比视频

使用vstackhstack 过滤器,这取决于你想让它们垂直或并排地堆叠起来。

1
2
3
4
5
# vertically stacked
ffmpeg -i clip.mkv -i clip-stabilized.mkv  -filter_complex vstack clips-stacked.mkv

# side-by-side
ffmpeg -i clip.mkv -i clip-stabilized.mkv  -filter_complex hstack clips-sxs.mkv

双重奖励:一个可以做所有事情的双行线(因为重复这些文件名会很烦人

1
2
export vid="sourcevid.mkv"
ffmpeg -i "$vid" -vf vidstabdetect -f null -; ffmpeg -i "$vid" -vf vidstabtransform "$vid.stab.mkv"; ffmpeg -i "$vid" -i "$vid.stab.mkv"  -filter_complex vstack "$vid.stacked.mkv"