ffprobe は、動画や音声ファイルのコーデック、解像度、フレームレート、ビットレートなどを調べるツールです。FFmpeg のツールの 1 つで、ffmpeg(変換)や ffplay(再生)と並ぶ、解析用のコマンドです。

出力を人に見せる前に: 結果には、ファイル名、個人フォルダーのパス、GPS(撮影場所)、撮影者、機種、日時、コメントが入っていることがあります。掲示板や問い合わせには丸ごと貼らず、必要な項目だけを貼ってください(確認と削除の方法は「動画共有前の個人情報チェック」)。

1. ffprobe の基本コマンド

いちばん簡単な使い方は、ファイル名だけを渡す方法です。

ffprobe input.mp4

ファイル形式(コンテナ)、コーデック、解像度、再生時間などの基本情報が表示されます。この表示は標準エラー出力に出るので、grep などに渡すときは 2>&1 を付けます。

2. 主要オプション

-show_streams:ストリーム情報を表示

ffprobe -show_streams input.mp4

映像・音声・字幕などのストリームごとに、詳しい情報が [STREAM] ... [/STREAM] の形で表示されます。

-show_format:コンテナ情報を表示

ffprobe -show_format input.mp4

ファイル全体の情報(形式名、ファイルサイズ、再生時間、全体のビットレートなど)が表示されます。

-of json:JSON形式で出力

ffprobe -v quiet -show_streams -show_format -of json input.mp4
  • -v quiet:ffprobe 自身のログを出さず、JSON だけを出力します
  • -of json:出力を JSON 形式にします(-output_format json の短い書き方です。古い書き方の -print_format も動きますが、非推奨です)
  • -show_streams と -show_format を両方付けると、両方の情報が 1 つの JSON にまとまります

3. JSON出力例

上のコマンドの出力例です(一部だけ抜き出しています)。

{
  "streams": [
    {
      "index": 0,
      "codec_name": "h264",
      "codec_type": "video",
      "width": 1920,
      "height": 1080,
      "pix_fmt": "yuv420p",
      "r_frame_rate": "30/1",
      "duration": "120.000000",
      "bit_rate": "4499954"
    },
    {
      "index": 1,
      "codec_name": "aac",
      "codec_type": "audio",
      "sample_rate": "48000",
      "channels": 2,
      "duration": "120.000000",
      "bit_rate": "128259"
    }
  ],
  "format": {
    "filename": "input.mp4",
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "duration": "120.000000",
    "size": "69551765",
    "bit_rate": "4636784",
    "tags": {
      "encoder": "Lavf62.12.100"
    }
  }
}

4. 主要な取得情報と見方

フィールド 場所 意味
codec_name streams コーデック名(例: h264, aac, hevc)
codec_type streams ストリーム種別(video / audio / subtitle)
width / height streams(video) 解像度(ピクセル)
r_frame_rate streams(video) FFmpeg が推定した基準のフレームレート(分数表示、例: 30/1 = 30fps)
bit_rate streams / format ビットレート(bps)
duration streams / format 再生時間(秒)
pix_fmt streams(video) ピクセルフォーマット(例: yuv420p)
sample_rate streams(audio) サンプリングレート(Hz)
channels streams(audio) 音声チャンネル数

r_frame_rate の読み方

r_frame_rate は、FFmpeg が推定した基準のフレームレートで、平均ではありません。フレームレートが一定でない動画(可変フレームレート)では、平均を表す avg_frame_rate と値が違うことがあります。どちらも分数で表示されます。

値 意味
30/1 30fps
60000/1001 約59.94fps(NTSC)
25/1 25fps(PAL)
24000/1001 約23.976fps(映画用)

5. jq との組み合わせ

jq(JSON から必要な値を取り出すコマンド)を使うと、特定の情報だけを取り出せます。

解像度だけを取得する

ffprobe -v quiet -select_streams v:0 -show_streams -of json input.mp4 | jq ".streams[] | {width, height}"

再生時間だけを取得する

ffprobe -v quiet -show_format -of json input.mp4 | jq ".format.duration"

コーデック名の一覧を取得する

ffprobe -v quiet -show_streams -of json input.mp4 | jq "[.streams[].codec_name]"

jq は、Linux なら apt install jq、macOS なら brew install jq、Windows なら winget install jqlang.jq でインストールできます。

6. ffmpeg -i との違い

ffmpeg -i ファイル名 でもストリーム情報は見られますが、使いどころが違います。

コマンド 目的 出力先 スクリプト対応
ffprobe ファイル解析専用 標準出力(JSON等) 適している
ffmpeg -i 変換コマンドの情報確認 標準エラー出力 解析しにくい

スクリプトや自動処理でファイル情報を取り出すなら、ffprobe を使ってください。ffmpeg -i は変換の前にさっと確認する用途向けで、表示は標準エラー出力に出ます。

よくある使い方まとめ

# 基本情報の確認(手軽)
ffprobe input.mp4

# JSON形式で全情報を取得(スクリプト用)
ffprobe -v quiet -show_streams -show_format -of json input.mp4

# 映像ストリームのみ確認
ffprobe -v quiet -show_streams -select_streams v -of json input.mp4

# 音声ストリームのみ確認
ffprobe -v quiet -show_streams -select_streams a -of json input.mp4

関連記事

よくある質問

動画の duration を数値で取りたい

ffprobe -v quiet -of csv=p=0 -show_entries format=duration in.mp4 を実行すると、秒数が小数付きで 1 行だけ出ます。そのままスクリプトで使えます。

ストリームの bit_rate と format の bit_rate の違いは?

ストリームの bit_rate は、そのストリームだけのビットレートです。format=bit_rate は、音声を含むすべてのストリームと、コンテナの管理データを合わせた、ファイル全体の平均です。ファイルサイズの計算には format=bit_rate を、映像がどれだけ圧縮されているかを見るには映像ストリームの bit_rate を使います。

フォルダ内全ファイルの全ストリームを一覧したい

for f in *.mp4; do ffprobe -v quiet -of json -show_streams "$f" | jq ...; done のようにループで回します。JSON で出しておくと、あとの処理が楽です。

bit_rate が “N/A” になる

MKV や WebM には、ストリームごとのビットレートを記録していないものがあります。その場合、ストリームごとの値は出ません。ファイル全体の平均(ファイルサイズのビット数 ÷ 秒数)なら、format=bit_rate で分かります。

チャプター情報を取れる?

取れます。ffprobe -v quiet -of json -show_chapters input.mp4 で、チャプターごとの時刻とタイトルが出ます。DVD や Blu-ray から取り込んだファイルによく入っています。