既存の動画をタイムラプスっぽく変換。FFmpeg を使ってみる。

タイムラプス動画を撮影するアプリやら何やらは数あれど、「今ある動画からタイムラプス動画を作成する」というのは意外と無いのだな。

Androidアプリだと、こんなのがある。

Microsoft Hyperlapse Mobile - Google Play

操作はシンプルでなかなか良いです。凝ったことは何もできないけれど。

これの Windows / Mac 版というのも存在しています。

Microsoft Hyperlapse Pro - Microsoft Research

こちらはもう少し色々できますが、お試しは無料・継続使用の場合は有料となるアプリケーション。

う〜ん。

タイムラプスっぽい動画」というのは要するに、既存の動画に対して…

  • 再生速度を上げて、
  • フレームを適度に間引いてカクカクした感じにする。

…という加工をしてやれば多分それっぽくなると思うので、ここは FFmpeg を使ってみましょ。

FFmpeg - ffmpeg.org

 Linux / Mac OS / Windows で使えます。

FFmpegは機能てんこ盛りで、しかも自分に動画に関する知識が充分でないこともあって、ドキュメントを熟読してもどうするのが正しいのか完全には理解できない…。

とりあえず「再生速度を上げつつコマを落とす」という加工は、以下のオプション一発でできそう。N倍速にする場合は…

ffmpeg -i input_file -filter:v "setpts=PTS/N" output_file

更にカクカクさせたい」場合は、フレームレートを落としてやればそれっぽくなる。上記の操作に加えて fps を 10(一秒あたりのコマ数を 10 )にするならば…

ffmpeg -i input_file -filter:v "setpts=PTS/N,FPS=10" output_file

というわけで、手許にある動画をタイムラプス動画っぽく変換。

元の動画:
  • 1960 x 1080
  • 45 fps
  • およそ 5 分
  • 動画サイズ およそ 750 MB

これを試しに「10倍速 / 24 fps / 画面サイズ 640 x 360」に変換。

ffmpeg -i input.mp4 -filter:v "setpts=PTS/10,FPS=24,scale=-1:360" -pix_fmt yuvj420p -an output.mp4
youtu.be/Ywuohjs2Sz8 : 10倍速 / 24fps

もうちょっとカクカクさせてみる。fps を 10 に設定。

ffmpeg -i input.mp4 -filter:v "setpts=PTS/10,FPS=10,scale=-1:360" -pix_fmt yuvj420p -an output.mp4
youtu.be/3xWDXQzwCUI : 10倍速 / 10fps

もっと早回しに。20倍速 / 10 fps

ffmpeg -i input.mp4 -filter:v "setpts=PTS/20,FPS=10,scale=-1:360" -pix_fmt yuvj420p -an output.mp4
youtu.be/3xWDXQzwCUI : 20倍速 / 10fps

うん、まあこんな感じか?

カテゴリ: