ffmpeg


公式:ffmpeg

オープンソースの音声・動画変換ソフト。linux版、windows版、mac版などがあり、単体ではコマンドラインから利用する。
多くの動画、音声フォーマットに対応しており、様々なマルチメディア・ソフトの変換エンジンとして利用されている

  • ソース

  • windowsビルド

  • マニュアル等

ffmpegは常に改変が加えられており、その過程でオプションの指定の仕方が変わることもしばしばなので、注意が必要。
mp3→libmp3lame,xvid→libxvid等

また、現状バイナリ配布されるffmpegは、ライセンス上の問題によりlibfaacなど、使えなくなっている機能があることにも注意。
これらを有効にするには、ソースからビルドする必要があり、これによりライセンスの問題もクリアされる。
windows環境では、自力で一からビルド方法を調べていくのは敷居が高いので、オレ流FFMpegビルドツールのような便利なツールを利用するといい。

Ubuntu9.10でlibfaacを有効化してビルドする方法は"Ubuntu 9.10 についてのあれこれ"参照


基本的な使い方


ffmpeg -i input.avi output.mp4

最もシンプルにはこれでOK
サイズやフレームレート、アスペクト比などは元動画と同様に、コーデックやビットレートはデフォルトの値が使用される。
つまり、出力ファイルに拡張子を指定すれば、一応の動画が出来る
どのような動画が出来るかは、MediaInfo等で確認を。

ffmpegで一つ注意したいことは、各オプションを記述する位置。
どこに記述するかで、エラーが発生したり、思うような動作を行ってくれないことがある。

例えば、動画のフレームレートを変更しようと
ffmpeg.exe -r 24000/1001 -i input.avi output.mp4
のように記述するとエラーになる
ffmpeg.exe -i input.avi -r 24000/1001 output.mp4
のように、入力ファイルの後に記述必要がある

大体は
ffmpeg.exe <コマンド全体レベルのオプション> <入力に関するオプション> 
            -i <入力ファイル> <出力に関するオプション> <出力ファイル>
のように記述すればよい
入力ファイルが複数あるときは、少し面倒になるが、実際のところ入力オプションに関しては殆ど指定することはないので、省いて考えてよい
要するに、出力に関するオプションは、入力ファイルの後に記述しておくということだけ覚えておけばよい。
ffmpeg.exe -y -i input1.ts -i input2.m4a -c:v libx264 -c:a copy output.mp4


なぜコマンドラインを使うか


なぜなら、スクリプト(例えばwindowsにおけるバッチファイル)で利用出来るから。

例えば、以下のものをメモ帳で記述し、ffmpeg.exeと同じフォルダにsample.batとして保存する。
ffmpeg.exe -i "%~1"  "%~dpn1_new.mp4"
ここに動画ファイルをドラッグ&ドロップするだけで、動画ファイルが生成される。(※ファイル名によってはエラーになる場合がある)

上は単純な例だが、バッチファイルを利用すれば、いちいち対話的にウィンドウを操作することなく、決まった処理を簡単に行うことが出来る。
また、ffmpegと他のコマンドを組み合わせれば、もっと複雑な処理をさせることも出来て、一度に行える作業の幅が広がるというわけ。






最終更新:2018年02月28日 04:58