LoginSignup
9
4

More than 5 years have passed since last update.

タイムラプス動画をffmpegで作る

Posted at

TL;DR

  • タイムラプス動画(特定の時間間隔で抜き出した画像でつくるコマ落ち動画)を,ffmpegで作る方法を紹介します.

作成手順

  1. 動画を一定時間ごとに切り出した画像群を生成します
  2. 画像群を結合して,新しい動画(タイムラプス動画)を作る

実行

動画からコマ落とし画像を作成

  • 入力動画から,コマ落としした画像群を生成します
mkdir out
docker run --rm \
    -v ${PWD}:/tmp/ \
    ffmpeg-docker:latest \
    -r 60 -stats -i /tmp/People6387.mp4 \
    -r 15 /tmp/out/out_%04d.png
  • コマンド説明
    • ffmpeg-docker:latest: GPU(NVEnc)対応FFmpegのポータブルなDockerfileで作ったffmpegコンテナ
    • -r 60 : 入力ファイルを60fpsとして扱う
    • -r 15 /tmp/out/out_%04d.jpg :
      • 動画から画像を15フレームごとに切り出します
      • 連番ファイルout_0001.jpgなどの名前で,outディレクトリ以下に出力します
  • 実行が完了すると,以下のように多数のコマ落とし画像が生成されます.

コマ落とし画像を結合してタイムラプス動画を生成

  • コマ落とし画像を結合して,タイムラプス動画を生成します
    • 前節からの続きで,outディレクトリに連番ファイルが作成されているものとします
docker run --rm \
    -v ${PWD}:/tmp/ \
    ffmpeg-docker:latest \
    -i /tmp/out/out_%04d.png \
    -vcodec libx264 -pix_fmt yuv420p \
    -r 60 /tmp/output.mp4
  • コマンド説明
    • -i /tmp/out/out_%04d.png : 入力ファイルを60fpsとして扱う
    • -r 15 /tmp/out/out_%04d.jpg : コマ落とし画像のファイル名パターンを指定
    • -vcodec libx264 -pix_fmt yuv420p : H.264動画を生成
    • -r 60 /tmp/output.mp4 : output.mp4のファイル名で60fpsの動画を作成
  • 実行が完了すると,実行ディレクトリにoutput.mp4が作られています.
    • このoutput.mp4が,元のPeople6387.mp4の動画を4コマ落ちした動画になっています.

output.gif

  • 上記コマ落ち動画は,FFmpegで動画をGIFに変換を参考に,作成したmp4ファイルをアニメーションgifに変換したものです.

参考

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4