FFmpeg
エフエフエムペグ
動画・音声の変換、切り出し、入れ物の詰め替え、配信用の書き出しをコマンドで行うオープンソースのソフトウェア群です。HandBrakeなど多くの変換ソフトも、内部でFFmpegのライブラリを使っています。
- 種別
- コマンドラインのツールとライブラリ群(オープンソース)
- 主なコマンド
- ffmpeg(変換)、ffprobe(解析)、ffplay(簡易再生)
- 主なライブラリ
- libavcodec(コーデック)、libavformat(コンテナ)、libavfilter(フィルター)
- ライセンス
- LGPL 2.1以降。GPLの部品を組み込んだビルドは全体がGPL
- 対応OS
- Windows、macOS、Linux
- FFmpegを内部で使う主なソフト
- HandBrake、Shutter Encoder
FFmpegで変換したら音声が1チャンネルしか残らなかった、できたMP4がブラウザで再生できなかった、というつまずきの多くは、コマンドが既定で何を選んで何を捨てるかを知らないことから来ます。そこさえ押さえれば、変換ソフトの画面では届かない細かい指定まで1行で書けます。
FFmpegの現場での使われ方
編集室でよく見るのは、受け渡しの前後の小さな処理です。局納品用のMXFから確認用の軽いMP4を作る、カメラのMXFを再エンコードせずにMOVへリラップする、字幕の確認用にSRTを映像へ焼き付ける、といった作業です。
画面を持たずに動くので、自動化の部品としても広く使われます。アーカイブやMAMの取り込み処理で、届いたファイルからプロキシとサムネイルを作る、夜間にまとめて変換する、といった仕組みの中でFFmpegが呼ばれています。配信の分野では、HLSのセグメントとプレイリストを書き出したり、SRTやRTMPで送出のテストをしたりする用途があります。
直接コマンドを打たなくても、HandBrakeやShutter Encoderのような変換ソフトは内部でFFmpegのライブラリを使っているため、読み込める形式の範囲はおおむねFFmpegに近くなります。
FFmpegの基本の使い方とよく使うコマンド
書き方の基本は ffmpeg -i 入力ファイル オプション 出力ファイル です。-i より前に置いたオプションは入力側に、後ろに置いたオプションは出力側に効きます。現場でよく使う形は次の通りです。
- 入れ物だけ替える:
ffmpeg -i input.mxf -map 0 -c copy output.mov - 確認用のH.264を作る:
ffmpeg -i input.mxf -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 192k output.mp4 - ProRes 422 HQにする:
ffmpeg -i input.mxf -c:v prores_ks -profile:v 3 -c:a pcm_s24le output.mov - 1分の位置から30秒を切り出す:
ffmpeg -ss 00:01:00 -i input.mxf -t 30 -c:v libx264 -c:a aac clip.mp4 - 字幕を焼き付ける:
ffmpeg -i input.mp4 -vf subtitles=sub.srt -c:a copy output.mp4 - ラウドネスを測る:
ffmpeg -i input.mxf -af ebur128 -f null -
-crf は数値が小さいほど高画質で容量が増えます。ラウドネスの測定では、最後に I: の行として番組全体の値がLUFS単位で表示されます。
FFmpegでつまずきやすい点
いちばん多いのは、出力に入れるストリームの選び方です。FFmpegは指定がなければ映像1本と音声1本しか選ばないので、モノラル8チャンネルの放送用MXFは1チャンネルだけのファイルになります。全部残すなら -map 0 を付けます。
次に多いのが、4:2:2の業務用素材をそのままH.264にしたケースです。色の形式が引き継がれて High 4:2:2 というプロファイルになり、ブラウザやスマートフォンの多くで再生できません。確認用や配布用なら -pix_fmt yuv420p を付けます。
-c copy で切り出すと、Long GOPの素材はキーフレームの位置でしか切れず、頭が数フレームずれたり、最初の数フレームが乱れたりします。フレーム単位で正確に切りたいときは再エンコードします。
ほかに気を付けたい点は次の通りです。
- 配布されているビルドによって使えるエンコーダーが違う。
ffmpeg -encodersで一覧を確かめる - 出力先の形式によっては開始タイムコードや字幕データが引き継がれない。変換後はffprobeで中身を見比べる
よくある質問
FFmpegは無料で商用利用できますか
FFmpeg自体はLGPLまたはGPLのオープンソースで、業務で使うことに料金はかかりません。自社の製品に組み込んで配布する場合は、ソースコードの提供などライセンスの条件を守る必要があります。H.264やHEVCなどの特許の扱いは、FFmpegのライセンスとは別に確認が必要です。
FFmpegはどこからダウンロードできますか
公式サイトのダウンロードページから、Windows、macOS、Linux向けのビルドの配布先へ進めます。macOSではHomebrew、Linuxでは各ディストリビューションのパッケージから入れるのが一般的です。
FFmpegとHandBrakeはどちらを使えばいいですか
1本ずつ画面で設定して確認用のMP4を作るならHandBrakeが手軽です。リラップ、多チャンネル音声の保持、MXFやProResでの書き出し、大量のファイルの自動処理が必要ならFFmpegを使います。
この用語を扱ったコラム
似ている形式との違い
| 名前 | 主に使う場面 | FFmpegとの違い |
|---|---|---|
| HandBrake | 画面操作での変換 | FFmpegのライブラリを使った変換ソフト。出力はMP4・MKV・WebMに限られ、再エンコードなしの詰め替えはできない |
| ffprobe | ファイルの解析 | FFmpegに同梱される解析用のコマンド。ファイルを書き換えず、中身の情報だけを出す |
| AWS Elemental MediaConvert | クラウドでの大量変換 | 変換サーバーを自分で持たずに、ジョブを投げて変換させるAWSのサービス |
関連する用語
最終更新