ffmpegで手ぶれ補正

やりたいこと

位置を変えながら撮影した写真が複数ある。被写体をセンターにおいたまま動画にしたい。なるべく揃えるように撮影しているが上下左右のずれがある。これをffmpegで修正したい。

ffmpegでできるの?

Open CVをつかうのかとおもったが、ffmpegでできるらしい。vid.stabという名前で以前はプラグイン扱いになっていた。現在はffmpegに取り込まれているようだ。手元のマシンにはffmpeg4.0が入っており、configurationに --enable-libvidstabが入っていればつかえた。

そもそもffmpegの使い方を忘れた

After Effectsだったらどうだ?

結局はAfter Effectsのワープスタビライザーの性能がすごいことを知った。

バッチファイルを作ろう

しかし、バッチ処理などを考えるとffmpegのほうがよい。

# 数字6桁のPNGファイルをmp4形式の動画にして出力
ffmpeg -framerate 10 -i %06d.png -vcodec libx264 -pix_fmt yuv420p -r 60 2053out.mp4

# ffmpegで解析
ffmpeg -i 2053out.mp4 -vf vidstabdetect=shakiness=10:accuracy=15 -f null -

# ffmpegで変換
ffmpeg -i 2053out.mp4 -vf vidstabtransform=zoom=5:smoothing=30 -vcodec libx264 -preset slow -tune film -crf 20 -an 2054-2109out.mp4

# 比較用に横に並べる?
ffmpeg -i 2053out.mp4 -i 2054-2109out.mp4 -filter_complex "[0:0]pad=2*iw[a]; [a][1:0]overlay=w" 2110-naraberu-output.mp4

オプション設定についてのドキュメント