ffprobeでメタデータとストリーム情報を確認する
FFmpegのツール群には ffmpeg(変換)、ffplay(再生)に加えて、ffprobe(解析)があります。ffprobe は動画・音声ファイルのコーデック、解像度、フレームレート、ビットレートなどの技術情報を取得するための専用ツールです。
動作確認: ffmpeg/ffprobe 6.1 で確認済み
注意:ffprobeコマンドはffmpegで始まらないため、本記事のコードブロックはすべてtextブロックを使用しています(CIテストの対象外)。
1. ffprobe の基本コマンド
最もシンプルな使い方は、ファイル名を渡すだけです。
ffprobe input.mp4
このコマンドだけで、ファイルのコンテナフォーマット・コーデック・解像度・再生時間などの基本情報が標準エラー出力に表示されます。
2. 主要オプション
-show_streams:ストリーム情報を表示
ffprobe -show_streams input.mp4
映像・音声・字幕などの各ストリームについて、詳細なプロパティが [STREAM] ... [/STREAM] ブロックで出力されます。
-show_format:コンテナ情報を表示
ffprobe -show_format input.mp4
ファイル全体のコンテナ情報(フォーマット名、ファイルサイズ、再生時間、全体ビットレートなど)が表示されます。
-print_format json(または -of json):JSON形式で出力
ffprobe -v quiet -show_streams -show_format -print_format json input.mp4
-v quiet— ffprobe自身のログ出力を抑制し、純粋なJSONだけを出力-print_format json(-of jsonと同義)— 出力をJSON形式にする-show_streamsと-show_formatを組み合わせると全情報が1つのJSONに含まれる
3. JSON出力例
上記コマンドの出力例(一部抜粋):
{
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_type": "video",
"width": 1920,
"height": 1080,
"r_frame_rate": "30/1",
"bit_rate": "4500000",
"duration": "120.000000",
"pix_fmt": "yuv420p"
},
{
"index": 1,
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "48000",
"channels": 2,
"bit_rate": "128000",
"duration": "120.000000"
}
],
"format": {
"filename": "input.mp4",
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"duration": "120.000000",
"size": "57600000",
"bit_rate": "3840000",
"tags": {
"encoder": "Lavf60.3.100"
}
}
}
4. 主要な取得情報と見方
| フィールド | 場所 | 意味 |
|---|---|---|
codec_name | streams | コーデック名(例: h264, aac, hevc) |
codec_type | streams | ストリーム種別(video / audio / subtitle) |
width / height | streams(video) | 解像度(ピクセル) |
r_frame_rate | streams(video) | フレームレート(分数表示、例: 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 は分数で表示されます:
| 値 | 意味 |
|---|---|
30/1 | 30fps |
60000/1001 | 約59.94fps(NTSC) |
25/1 | 25fps(PAL) |
24000/1001 | 約23.976fps(映画用) |
5. jq との組み合わせ
jq コマンド(JSONパーサー)と組み合わせると、特定の情報だけを取り出せます。
解像度だけを取得する
ffprobe -v quiet -show_streams -print_format json input.mp4 | jq '.streams[] | select(.codec_type=="video") | {width, height}'
再生時間だけを取得する
ffprobe -v quiet -show_format -print_format json input.mp4 | jq '.format.duration'
コーデック名の一覧を取得する
ffprobe -v quiet -show_streams -print_format json input.mp4 | jq '[.streams[].codec_name]'
jq はLinux/macOSでは apt install jq / 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 -print_format json input.mp4
# 映像ストリームのみ確認
ffprobe -v quiet -show_streams -select_streams v -print_format json input.mp4
# 音声ストリームのみ確認
ffprobe -v quiet -show_streams -select_streams a -print_format json input.mp4
関連記事
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/ffprobe.html / ffmpeg.org/ffmpeg.html / trac.ffmpeg.org