ツール・サービス 編集納品配信アーカイブ

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が向いています。両者でコーデック名の表記が違うことがあるので、判定の仕組みはどちらか一方の出力に揃えて作ります。

この用語を扱ったコラム

似ている形式との違い

名前 主に使う場面 ffprobeとの違い
MediaInfo 人が画面で確かめる ファイルを落とすだけで一覧が出る。MXFの運用パターン名やコーデックの商品名など、業務用の表記で読みやすい
FFmpeg 変換・切り出し ファイルを作る側のコマンド。ffprobeは読むだけで、何も出力ファイルを作らない

関連する用語

最終更新