月別アーカイブ: 2014年5月

ffmpegを使って微速度動画を作るメモ

この記事では、連続撮影した静止画を動画に変換する方法について書く。状況としては、微速度撮影・タイムラプス撮影のように、カメラで写真を一定時間ごとに撮影したものを動画にしたい、というものを想定している。

ここで使うのはffmpegという、動画や音楽ファイルのフォーマットを変換するのに使われる無料のプログラムである。マウスで操作するようなGUIはついておらず、コマンドラインからコマンドを叩いて使う。ffmpegのインストール方法は割愛する。

この記事を書いている時点でのffmpegの最新版は2.2.1なので、ffmpeg 2.2.1の使い方について書く。おそらく、多少バージョンが違っても同じように使えるのではないかと思う。

まず、動画の各コマとなる静止画を用意する。適当にフォルダを作って、その中に使いたい画像をコピーする。静止画の形式はJPEGにしておく。ファイル名は連番になるようにする。

ターミナルを開き、先に画像ファイルを準備したフォルダに移動する。ffmpegコマンドの使い方はおおざっぱに言うと

ffmpeg [入力に関するオプション] -i (入力ファイル名) [出力に関するオプション] (出力ファイル名)

となる。以下、オプションの詳細について。

入力に関するオプション・入力ファイルの指定

  • -framerate (rate)
    • 入力ファイルを動画とみなす場合の、フレームレートを指定する。
    • 画像の場合25がデフォルト。つまり、1秒あたり25フレームということである。
    • (rate) は、整数、小数、分数、または名前で指定できる。詳しくは公式のドキュメント(英語)を参照。
  • -s:v (size) または -video_size (size)
    • 各コマのサイズ。
    • (size)(幅)x(高さ) の形で指定する。あるいは、 vgahd720 のような名前も使える。詳しくは公式のドキュメント(英語)を参照。
    • 指定しなかった場合は最初の画像から適当に判断される。
  • -start_number (n)
    • 入力ファイル名の連番を何番から始めるかを指定する。
  • -i (ファイル名)
    • 入力ファイル名、もしくはファイル名のパターン。
    • 入力ファイル名が IMG_nnnn.JPG という形をしていれば、パターンとしては IMG_%04d.JPG を指定する。
    • 詳しいパターンの指定方法は公式のドキュメント(英語)を参照。

出力に関するオプション・出力ファイル名

  • -r:v (fps)
    • 出力する動画のフレームレート(1秒あたりのフレーム数)を指定する。
    • (rate) は、整数、小数、分数、または名前で指定できる。詳しくは公式のドキュメント(英語)を参照。
  • -s:v (size)
    • 各コマのサイズ。
  • -b:v (bitrate)
    • ビットレート。大きな数値を指定する方が高画質になる。bpsで指定する。
    • k (103)や M (106)などの接尾辞も使えるようだ。
  • -vcodec (codec) または -codec:v (codec)
    • 動画のコーデックを指定する。mpeg4h264 など。利用できるコーデックはffmpeg -codecs で確認できる。
  • (ファイル名)
    • 出力ファイル名。ファイル形式は拡張子から適当に判断される。

オプションの一部は入力にも出力にも指定できる。入力と出力に異なるフレームレートを指定した場合、一部のコマが複製されたり取り除かれたりする。各コマのサイズは入力と出力どちらにも指定できるが、どちらに指定するとどう変わるのか筆者はよく分かっていない。

コマンドの実行例は、例えば

ffmpeg -framerate 24 -start_number 7836 -i 'IMG_%04d.JPG' -r:v 24 -b:v 10M -s:v 1080x720 -vcodec mpeg4 output.mov

となる。この場合、IMG_7836.JPG から始まる連番のファイルが処理対象となり、出力ファイルは output.mov となる。