既存の動画をタイムラプスっぽく変換。FFmpeg を使ってみる。
タイムラプス動画を撮影するアプリやら何やらは数あれど、「今ある動画からタイムラプス動画を作成する」というのは意外と無いのだな。
Androidアプリだと、こんなのがある。
→ Microsoft Hyperlapse Mobile - Google Play
操作はシンプルでなかなか良いです。凝ったことは何もできないけれど。
これの Windows / Mac 版というのも存在しています。
→ Microsoft Hyperlapse Pro - Microsoft Research
こちらはもう少し色々できますが、お試しは無料・継続使用の場合は有料となるアプリケーション。
う〜ん。
「タイムラプスっぽい動画」というのは要するに、既存の動画に対して…
- 再生速度を上げて、
- フレームを適度に間引いてカクカクした感じにする。
…という加工をしてやれば多分それっぽくなると思うので、ここは FFmpeg を使ってみましょ。
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
うん、まあこんな感じか?
riocampos
記事ありがとうございました。iPhoneでのスクリーンキャプチャ動画(20分…)から1分の短い動画が簡単に作成できました。ただ、ビデオフィルタのオプションが記事だと大文字FPSで書かれていましたが
-filter:v "setpts=PTS/N,fps=10"
のように小文字fpsじゃないとダメでした。
訂正いただければ幸いです。
(動作環境:MapBook Pro Late 2013/macOS Sierra/ffmpeg v.3.4.1)