[ffmpeg]連番静止画像からタイムラプス動画を作成する

大量の静止画像からタイムラプス動画を作る記事はたくさんあるのですが、自分用のメモということでここに残しておきます。
ffmpegを使う記事の環境としてLinuxやMacが多いのですが、Windowsユーザーが気をつけないといけないのが連番指定の「%4d」のところ。WindowsのBatファイルで「%」は特殊な意味(変数の接頭文字)になるため、「%%」と%を二つ重ねてエスケープする必要があります。

ということで、こんな感じのバッチファイルを作成します。

@echo off
set path=%path%;C:\Program Files\ffmpeg\bin
ffmpeg -start_number 0000 -r 30 -i ./pic/%%4d.png -r 30 -an -vcodec libx264 -pix_fmt yuv420p video.mp4

1行目はコマンドを表示しないおまじない。
2行目は環境変数pathを設定してffmpegのディレクトリにパスを通しています
(ffmpegのインストール先に合わせて適宜変更してください)
そして3行目が実際にタイムプラス動画を作っているところ。
オプション指定は下記の通りです。

  • -start_number 0000 で連番の最初の番号を指定、無指定だと「1」になるようです。
  • -r 30 こちらは入力ファイルのフレームレート。もう一度出てくるrオプションと出力ファイルのフレームレートと揃えるのが吉。
  • -i 入力するファイル。ここでは、batファイルがあるディレクトリ(フォルダ)の下の「pic」というディレクトリ内にある0000から始まる数字四桁の*.pngファイルが対象です。LinuxやMacでは「%4d」で良いのですが、Windows(MS-DOS)のBatファイルだと「%」は特殊な意味を持ってしまうので、エスケープするために二つ重ねて「%%4d」としています。Windowsでもコマンドラインで直打ちする場合には重ねる必要はありません(ややこしい)。
  • -r 30 また出てきたrオプション。二個目は出力ファイルのフレームレートを指定します。
  • -an オーディオ(音声)は無し
  • -vcodec libx264 h264でエンコード(x264エンコーダを使用)
  • -pix_fmt yuv420p エンコーダに渡すピクセルフォーマット(yuv420pが対応デバイスが多いらしい)

参考にしたサイト


2016/10/23:当初タイトルetcで「タイムプラス動画」と書いていましたが、正しくは「タイムラプス動画」に訂正しましたorz
検索キーワードを間違えていたから情報が出てこなかったようですorz