ffprobe
エフエフプローブ
FFmpegに同梱されている、動画・音声ファイルの中身を調べるコマンドです。コーデック、解像度、フレームレート、音声チャンネル数などを表示し、JSONやCSVでも出力できるため、変換前後の確認や取り込み処理の自動チェックに使われます。
- 種別
- コマンドラインの解析ツール。ファイルは書き換えない
- 配布
- FFmpegに同梱(ffmpeg、ffplayと同じプロジェクト)
- 出力形式
- default、json、csv、flat、ini、xml(-of で指定)
- よく使うオプション
- -show_streams、-show_format、-select_streams、-show_entries
- ライセンス
- FFmpegと同じ(LGPL 2.1以降。GPLの部品を含むビルドはGPL)
- 対応OS
- Windows、macOS、Linux
再生ソフトで開けても、そのファイルが納品仕様どおりかどうかは画面を見ただけでは分かりません。ffprobeは、ファイルの中の映像・音声の情報を項目ごとに取り出すコマンドです。人が眺めるならMediaInfoのほうが読みやすく、結果をスクリプトで受け取って判定したいときはffprobeが扱いやすい、という使い分けが一般的です。
ffprobeの現場での使われ方
一つめは、受け取った素材の確認です。「1920×1080、29.97fps、インターレースでトップフィールドから、音声は48kHzで8チャンネル」のような納品仕様と、実際のファイルを項目ごとに突き合わせます。
二つめは、取り込み処理の自動チェックです。アーカイブやMAMの取り込みで、ファイルが届いたらffprobeにJSONで情報を出させ、解像度やフレームレートが想定と違えばエラーとして人に知らせる、という仕組みがよく組まれます。クラウドの変換サービスにジョブを投げる前の振り分けにも使われます。
三つめは、FFmpegで変換した後の検証です。変換前と変換後で同じ項目を出して並べると、音声チャンネルが減った、タイムコードが消えた、といった変化にすぐ気付けます。
ffprobeの使い方と基本コマンド
ffprobe input.mxf とだけ打つと、コンテナとストリームの概要が表示されます。項目を絞ったり形式を決めたりするときの書き方は次の通りです。
- 全ストリームの情報をJSONで出す:
ffprobe -v error -show_format -show_streams -of json input.mxf - 映像の主な項目を1行で出す:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,r_frame_rate,field_order -of csv=p=0 input.mxf - 長さを秒だけで出す:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mxf - 音声ストリームごとのチャンネル数を見る:
ffprobe -v error -select_streams a -show_entries stream=index,codec_name,channels -of csv=p=0 input.mxf
-v error は、冒頭のバージョン表示などを消して結果だけにするための指定です。-show_entries に並べた項目は、指定した順ではなくffprobeが決めた順で出力されるので、CSVで受け取るときは列の順番を一度確かめておきます。
ffprobeの出力の読み方とつまずきやすい点
フレームレートは 30000/1001 のように分数で出ます。これが29.97fpsです。スマートフォンの動画のように可変フレームレートの素材では、r_frame_rate と平均の avg_frame_rate の値が食い違うことがあります。
field_order は、progressive ならプログレッシブ、tt ならトップフィールドファーストのインターレースを表します。1080iの納品物なのに progressive と出たら、書き出しの設定を疑います。
見落としやすい点は次の通りです。
- 放送用のMXFでは、音声がモノラル8本のストリームとして並ぶことが多い。ストリーム数と、ストリームごとの
channelsの両方を見る - MKVなどでは、ストリーム単位のビットレートが
N/Aになることがある。そのときはフォーマット側のbit_rateを見る - オプションを付けない概要表示は標準エラーに出るため、
>でファイルに書き出しても中身が空になる。-show_系のオプションの結果は標準出力に出る
拡張子と中身の関係でつまずいたときの考え方は、HEVCが再生できない原因と対処でも整理しています。
よくある質問
ffprobeはどこでダウンロードできますか
単体の配布はなく、FFmpegのビルドに同梱されています。FFmpegを入れれば、同じ場所に ffprobe も入ります。
ffprobeで総フレーム数を調べるには
-count_frames を付けて stream=nb_read_frames を出力すると、実際に読み取ったフレーム数が分かります。ファイル全体を読むため、長い素材では時間がかかります。ヘッダーに記録された nb_frames はすぐ出ますが、形式によっては値が入っていません。
ffprobeとMediaInfoはどちらを使えばいいですか
1本のファイルを人が確かめるならMediaInfo、多数のファイルを同じ基準で自動判定するならffprobeが向いています。両者でコーデック名の表記が違うことがあるので、判定の仕組みはどちらか一方の出力に揃えて作ります。
この用語を扱ったコラム
似ている形式との違い
関連する用語
最終更新