⚠️ これは 非公式の翻訳サイトです。FFmpeg プロジェクトとは無関係です。正確な情報は 原文(https://ffmpeg.org/ffprobe.html) を参照してください。

ffprobe ドキュメント

1 書式

ffprobe [options] input_url

2 概要

ffprobe はマルチメディアストリームから情報を収集し、人間にも機械にも読みやすい形式で出力します。

たとえば、マルチメディアストリームが使う container の形式や、そこに含まれる各メディアストリームの形式と種類を調べるのに使えます。

入力に url を指定すると、ffprobe はその url の内容を開いて解析しようとします。url を開けない、またはマルチメディアファイルとして認識できない場合は、正の終了コードを返します。

o で出力先を指定しなかった場合、ffprobe は標準出力に書き込みます。

ffprobe は単独のアプリケーションとして使うほか、テキスト処理フィルタと組み合わせて、統計処理やグラフ描画といったより高度な処理を行わせることもできます。

オプションは、ffprobe が対応する形式の一部を一覧表示したり、どの情報を表示するかを指定したり、その表示方法を設定したりするために使います。

ffprobe の出力はテキスト処理フィルタで簡単に解析できるよう設計されており、選択した writer が定義する形式の 1 つ以上のセクションで構成されます。writer は output_format オプションで指定します。

セクションは別のセクションを入れ子に含むことができ、名前(他のセクションと共有される場合がある)と一意な名前で識別されます。sections の出力を参照してください。

container やストリームに格納されたメタデータタグは認識され、対応する "FORMAT"、"STREAM"、"STREAM_GROUP_STREAM"、"PROGRAM_STREAM" のいずれかのセクションに出力されます。

3 オプション

特に断りがない限り、すべての数値オプションは数を表す文字列を入力として受け付けます。この文字列の後には SI 単位接頭辞(’K’、’M’、’G’ など)を付けてもかまいません。

SI 単位接頭辞の後にさらに ’i’ を付けると、接頭辞全体が二進接頭辞として解釈され、1000 のべき乗ではなく 1024 のべき乗を基準とします。SI 単位接頭辞に ’B’ を付けると値が 8 倍されます。これにより、たとえば数値の接尾辞として ’KB’、’MiB’、’G’、’B’ などが使えます。

引数を取らないオプションはブール値のオプションで、対応する値を true に設定します。オプション名の前に "no" を付けると false に設定できます。たとえば "-nofoo" を使うと、名前が "foo" のブール値オプションが false になります。

引数を取るオプションには特別な構文があります。コマンドラインで与えた引数を、実際の引数値を読み込むファイルへのパスとして解釈させるものです。この機能を使うには、オプション名の直前(先頭のダッシュの後)にスラッシュ ’/’ を付けます。例:

ffmpeg -i INPUT -/filter:v filter.script OUTPUT

これは filter.script というファイルから filtergraph の記述を読み込みます。

3.1 ストリーム指定子

一部のオプションはストリームごとに適用されます(ビットレートや codec など)。ストリーム指定子は、あるオプションがどのストリームに属するかを正確に指定するために使います。

ストリーム指定子は通常、オプション名の後にコロンで区切って付ける文字列です。たとえば -codec:a:1 ac3 には a:1 というストリーム指定子が含まれ、これは 2 番目の音声ストリームにマッチします。したがって、2 番目の音声ストリームに ac3 codec を選択することになります。

ストリーム指定子は複数のストリームにマッチすることがあり、その場合オプションはそれらすべてに適用されます。たとえば -b:a 128k のストリーム指定子はすべての音声ストリームにマッチします。

空のストリーム指定子はすべてのストリームにマッチします。たとえば -codec copy-codec: copy は、すべてのストリームを再エンコードせずにコピーします。

ストリーム指定子として取りうる形式は次のとおりです。

stream_index

このインデックスを持つストリームにマッチします。たとえば -threads:1 4 は 2 番目のストリームのスレッド数を 4 に設定します。stream_index を追加のストリーム指定子として使った場合(後述)は、マッチしたストリームの中から stream_index 番目のストリームを選択します。ストリームの番号付けは、ストリームグループ指定子やプログラム ID も指定されている場合を除き、libavformat が検出した順序に基づきます。これらが指定されている場合は、グループまたはプログラム内のストリームの順序に基づきます。

stream_type[:additional_stream_specifier]

stream_type は次のいずれかです。映像は ’v’ または ’V’、音声は ’a’、字幕は ’s’、データは ’d’、添付ファイルは ’t’。’v’ はすべての映像ストリームにマッチし、’V’ は付属画像・映像サムネイル・カバーアートではない映像ストリームのみにマッチします。additional_stream_specifier を使うと、この種別を持ちかつ additional_stream_specifier にもマッチするストリームにマッチします。指定しない場合は、指定した種別のすべてのストリームにマッチします。

g:group_specifier[:additional_stream_specifier]

指定子 group_specifier を持つグループに属するストリームにマッチします。additional_stream_specifier を使うと、グループの一部であり、かつ additional_stream_specifier にもマッチするストリームにマッチします。group_specifier は次のいずれかです。

group_index

このグループインデックスを持つストリームにマッチします。

#group_id または i:group_id

このグループ ID を持つストリームにマッチします。

p:program_id[:additional_stream_specifier]

ID が program_id のプログラムに属するストリームにマッチします。additional_stream_specifier を使うと、プログラムの一部であり、かつ additional_stream_specifier にもマッチするストリームにマッチします。

#stream_id または i:stream_id

ストリーム ID(MPEG-TS container における PID など)でストリームにマッチします。

m:key[:value]

メタデータタグ key が指定した value を持つストリームにマッチします。value を与えない場合は、その値にかかわらず該当タグを含むストリームにマッチします。key や value 中のコロン ’:’ はバックスラッシュでエスケープする必要があります。

disp:dispositions[:additional_stream_specifier]

指定した disposition を持つストリームにマッチします。dispositions は、-dispositions オプションで出力されるとおりの 1 つ以上の disposition を ’+’ でつないだリストです。

u

使える設定を持つストリームにマッチします。codec が定義されており、映像の寸法や音声のサンプリングレートといった必須情報がそろっている必要があります。

ffmpeg では、メタデータによるマッチングは入力ファイルに対してのみ正しく機能する点に注意してください。

3.2 共通オプション

これらのオプションは ff* ツール間で共通です。

-L, -license

ライセンスを表示します。

-h, -?, -help, --help [arg]

ヘルプを表示します。特定の項目についてのヘルプを表示するため、任意のパラメータを指定できます。引数を指定しない場合は、基本的な(advanced でない)ツールオプションのみが表示されます。

arg に取りうる値は次のとおりです。

long

基本的なツールオプションに加えて、advanced なツールオプションも表示します。

full

encoder、decoder、demuxer、muxer、フィルタなどの共有オプションおよびプライベートオプションを含む、オプションの完全な一覧を表示します。

decoder=decoder_name

decoder_name という名前の decoder についての詳細情報を表示します。すべての decoder の一覧は -decoders オプションで取得できます。

encoder=encoder_name

encoder_name という名前の encoder についての詳細情報を表示します。すべての encoder の一覧は -encoders オプションで取得できます。

demuxer=demuxer_name

demuxer_name という名前の demuxer についての詳細情報を表示します。すべての demuxer と muxer の一覧は -formats オプションで取得できます。

muxer=muxer_name

muxer_name という名前の muxer についての詳細情報を表示します。すべての muxer と demuxer の一覧は -formats オプションで取得できます。

filter=filter_name

filter_name という名前のフィルタについての詳細情報を表示します。すべてのフィルタの一覧は -filters オプションで取得できます。

bsf=bitstream_filter_name

bitstream_filter_name という名前の bitstream フィルタについての詳細情報を表示します。すべての bitstream フィルタの一覧は -bsfs オプションで取得できます。

protocol=protocol_name

protocol_name という名前の protocol についての詳細情報を表示します。すべての protocol の一覧は -protocols オプションで取得できます。

-version

バージョンを表示します。

-buildconf

ビルド設定を 1 行に 1 オプションずつ表示します。

-formats

利用可能な形式(デバイスを含む)を表示します。

-demuxers

利用可能な demuxer を表示します。

-muxers

利用可能な muxer を表示します。

-devices

利用可能なデバイスを表示します。

-codecs

libavcodec が認識するすべての codec を表示します。

このドキュメント全体で ’codec’ という用語は、より正確にはメディアの bitstream 形式と呼ぶべきものの略語として使っている点に注意してください。

-decoders

利用可能な decoder を表示します。

-encoders

利用可能なすべての encoder を表示します。

-bsfs

利用可能な bitstream フィルタを表示します。

-protocols

利用可能な protocol を表示します。

-filters

利用可能な libavfilter のフィルタを表示します。

-pix_fmts

利用可能な pixel format を表示します。

-sample_fmts

利用可能な sample format を表示します。

-layouts

チャンネル名と標準的なチャンネルレイアウトを表示します。

-dispositions

ストリームの disposition を表示します。

-colors

認識される色名を表示します。

-sources device[,opt1=val1[,opt2=val2]...]

入力デバイスの自動検出されたソースを表示します。デバイスによっては、自動検出できないシステム依存のソース名を提供することがあります。返される一覧が常に完全であるとは限りません。

ffmpeg -sources pulse,server=192.168.0.4

-sinks device[,opt1=val1[,opt2=val2]...]

出力デバイスの自動検出されたシンクを表示します。デバイスによっては、自動検出できないシステム依存のシンク名を提供することがあります。返される一覧が常に完全であるとは限りません。

ffmpeg -sinks pulse,server=192.168.0.4

-loglevel [flags+]loglevel | -v [flags+]loglevel

ライブラリが使うログレベルとフラグを設定します。

任意の flags 接頭辞には次の値を指定できます。

‘repeat’

繰り返されるログ出力を最初の 1 行にまとめないことを示します。"Last message repeated n times"(直前のメッセージを n 回繰り返しました)という行は省略されます。

‘level’

各メッセージ行に [level] 接頭辞を付けることを示します。これはログの色付けの代わりに使えます。たとえばログをファイルに出力する場合などです。

‘time’

ログ行の先頭に時刻情報を付けることを示します。

‘datetime’

ログ行の先頭に日付と時刻の情報を付けることを示します。

フラグは ’+’/’-’ 接頭辞を付けて単独で使うこともでき、他のフラグや loglevel に影響を与えずに 1 つのフラグを設定/解除できます。flags と loglevel の両方を設定する場合は、最後の flags の値と loglevel の間に ’+’ 区切りが必要です。

loglevel は次のいずれかの値を含む文字列または数値です。

‘quiet, -8’

何も表示せず、沈黙します。

‘panic, 0’

アサーション失敗など、プロセスのクラッシュにつながりうる致命的なエラーのみを表示します。現在はどこにも使われていません。

‘fatal, 8’

致命的なエラーのみを表示します。これは、それ以降プロセスが絶対に継続できないエラーです。

‘error, 16’

回復可能なものを含め、すべてのエラーを表示します。

‘warning, 24’

すべての警告とエラーを表示します。誤りや予期しない事象の可能性に関連するメッセージはすべて表示されます。

‘info, 32’

処理中の情報メッセージを表示します。これは警告とエラーに加えてのものです。これが既定値です。

‘verbose, 40’

info と同じですが、より詳細です。

‘debug, 48’

デバッグ情報を含むすべてを表示します。

‘trace, 56’

たとえば、繰り返しのログ出力を有効にし、level 接頭辞を付け、loglevel を verbose に設定するには次のようにします。

ffmpeg -loglevel repeat+level+verbose -i input output

もう 1 つの例として、現在の level 接頭辞フラグや loglevel の状態に影響を与えずに繰り返しのログ出力を有効にします。

ffmpeg [...] -loglevel +repeat

既定では、プログラムは stderr にログを出力します。端末が色付けに対応していれば、エラーと警告を色で示します。ログの色付けは環境変数 AV_LOG_FORCE_NOCOLOR を設定すると無効にでき、環境変数 AV_LOG_FORCE_COLOR を設定すると強制できます。

-report

完全なコマンドラインとログ出力を、カレントディレクトリの program-YYYYMMDD-HHMMSS.log という名前のファイルに書き出します。このファイルはバグ報告に役立ちます。これは -loglevel debug も暗黙的に指定します。

環境変数 FFREPORT に任意の値を設定しても同じ効果があります。値が ’:’ で区切られた key=value の並びであれば、これらのオプションがレポートに影響します。オプションの値に特殊文字やオプション区切りの ’:’ が含まれる場合はエスケープが必要です(ffmpeg-utils マニュアルの「Quoting and escaping」セクションを参照)。

次のオプションが認識されます。

file

レポートに使うファイル名を設定します。%p はプログラム名に、%t はタイムスタンプに、%% はそのままの % に展開されます。

level

ログの詳細レベルを数値で設定します(-loglevel を参照)。

たとえば、ログレベル 32(ログレベル info の別名)でレポートを ffreport.log というファイルに出力するには次のようにします。

FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

環境変数の解析エラーは致命的ではなく、レポートにも表示されません。

-hide_banner

バナーの表示を抑制します。

すべての FFmpeg ツールは通常、著作権表示、ビルドオプション、ライブラリのバージョンを表示します。このオプションはこれらの情報の表示を抑制するために使えます。

-cpuflags flags (global)

CPU フラグの設定と解除を可能にします。このオプションはテスト用です。何をしているか分かっている場合以外は使わないでください。

ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...

このオプションに指定できるフラグは次のとおりです。

‘x86’

‘mmx’ ‘mmxext’ ‘sse’ ‘sse2’ ‘sse2slow’ ‘sse3’ ‘sse3slow’ ‘ssse3’ ‘atom’ ‘sse4.1’ ‘sse4.2’ ‘avx’ ‘avx2’ ‘xop’ ‘fma3’ ‘fma4’ ‘3dnow’ ‘3dnowext’ ‘bmi1’ ‘bmi2’ ‘cmov’ ‘ARM’

‘armv5te’ ‘armv6’ ‘armv6t2’ ‘vfp’ ‘vfpv3’ ‘neon’ ‘setend’ ‘AArch64’

‘armv8’ ‘vfp’ ‘neon’ ‘PowerPC’

‘altivec’ ‘Specific Processors’

‘pentium2’ ‘pentium3’ ‘pentium4’ ‘k6’ ‘k62’ ‘athlon’ ‘athlonxp’ ‘k8’ -cpucount count (global)

CPU 数の検出を上書きします。このオプションはテスト用です。何をしているか分かっている場合以外は使わないでください。

ffmpeg -cpucount 2

-max_alloc bytes

ffmpeg の malloc 系関数がヒープ上に確保するブロックの最大サイズ上限を設定します。このオプションを使うときは細心の注意を払ってください。そうすることの結果を完全に理解していなければ使わないでください。既定値は INT_MAX です。

3.3 AVOptions

これらのオプションは libavformat、libavdevice、libavcodec の各ライブラリが直接提供します。利用可能な AVOptions の一覧を見るには -help オプションを使います。AVOptions は次の 2 つのカテゴリに分かれます。

generic

任意の container、codec、デバイスに設定できるオプション。generic なオプションは、container/デバイスについては AVFormatContext options に、codec については AVCodecContext options に一覧されます。

private

特定の container、デバイス、codec に固有のオプション。private なオプションは、対応する container/デバイス/codec の下に一覧されます。

たとえば MP3 ファイルに既定の ID3v2.4 ヘッダではなく ID3v2.3 ヘッダを書き込むには、MP3 muxer の id3v2_version private オプションを使います。

ffmpeg -i input.flac -id3v2_version 3 out.mp3

すべての codec の AVOptions はストリームごとに適用されるので、ストリーム指定子を付ける必要があります。

ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4

上の例では、マルチチャンネルの音声ストリームを出力用に 2 回マッピングしています。1 つ目のインスタンスは codec ac3 とビットレート 640k でエンコードされます。2 つ目のインスタンスは 2 チャンネルにダウンミックスされ、codec aac でエンコードされます。これには出力ストリームの絶対インデックスを使ってビットレート 128k が指定されています。

注意: ブール値の AVOptions には -nooption 構文は使えません。-option 0/-option 1 を使ってください。

注意: オプション名の前に v/a/s を付けてストリームごとの AVOptions を指定する、文書化されていない古い方法はすでに廃止されており、まもなく削除されます。

3.4 主要オプション

-f format

使う形式を強制します。

-unit

表示する値の単位を表示します。

-prefix

表示する値に SI 接頭辞を使います。"-byte_binary_prefix" オプションを使わない限り、すべての接頭辞は十進です。

-byte_binary_prefix

バイト値に二進接頭辞を使うことを強制します。

-sexagesimal

時間の値に六十進数形式 HH:MM:SS.MICROSECONDS を使います。

-pretty

表示する値の形式を見やすくします。これは "-unit -prefix -byte_binary_prefix -sexagesimal" のオプションに相当します。

-output_format, -of, -print_format writer_name[=writer_options]

出力の表示形式を設定します。

writer_name は writer の名前を、writer_options は writer に渡すオプションを指定します。

たとえば出力を JSON 形式で表示するには次のように指定します。

-output_format json

利用可能な出力表示形式の詳細は、後述の Writers セクションを参照してください。

-sections

セクションの構造とセクション情報を表示して終了します。この出力は機械による解析を想定していません。

-select_streams stream_specifier

stream_specifier で指定したストリームのみを選択します。このオプションはストリームに関連するオプション(show_streamsshow_packets など)にのみ影響します。

たとえば音声ストリームのみを表示するには、次のコマンドを使います。

ffprobe -show_streams -select_streams a INPUT

インデックス 1 の映像ストリームに属する映像パケットのみを表示するには次のようにします。

ffprobe -show_packets -select_streams v:1 INPUT

-show_data

ペイロードデータを 16 進数と ASCII のダンプとして表示します(他の形式は -data_dump_format で選択できます)。-show_packets と組み合わせるとパケットのデータをダンプします。-show_streams と組み合わせると codec の extradata をダンプします。

ダンプは "data" フィールドとして出力されます。改行を含むことがあります。

-show_data_hash algorithm

ペイロードデータのハッシュを表示します。-show_packets ではパケットについて、-show_streams では codec の extradata について表示します。

-data_dump_format format

-show_data オプションで有効にしたデータダンプに使う形式を選択します。既定は xxd で、よく知られた xxd プログラムと互換性のある hexdump 形式です。base64 にも対応しています。

-show_error

入力を解析しようとして見つかったエラーについての情報を表示します。

エラー情報は "ERROR" という名前のセクション内に出力されます。

-show_format

入力マルチメディアストリームの container 形式についての情報を表示します。

container 形式の情報はすべて "FORMAT" という名前のセクション内に出力されます。

-show_entries section_entries

表示するエントリの一覧を設定します。

エントリは次の構文に従って指定します。section_entries は : で区切られたセクションエントリの一覧を含みます。各セクションエントリはセクション名(または一意な名前)で構成され、その後に , で区切ったそのセクションに局所的なエントリの一覧を続けてもかまいません。

セクション名が指定されているが = が続いていない場合、含まれるすべてのセクションとともに、すべてのエントリが出力されます。そうでない場合は、局所的なセクションエントリの一覧で指定したエントリのみが出力されます。特に、= が指定されているが局所的なエントリの一覧が空の場合、そのセクションのエントリは何も表示されません。

局所的なセクションエントリの指定順は出力には反映されず、通常の表示順が保たれる点に注意してください。

形式的な構文は次のとおりです。

LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES]
SECTION_ENTRY         ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]]
SECTION_ENTRIES       ::= SECTION_ENTRY[:SECTION_ENTRIES]

たとえば、各ストリームのインデックスと種別、そしてパケットの PTS 時刻、duration 時刻、ストリームインデックスのみを表示するには、次の引数を指定します。

packet=pts_time,duration_time,stream_index : stream=index,codec_type

"format" セクションのすべてのエントリを表示しつつ、"stream" セクションでは codec の種別のみを表示するには、次の引数を指定します。

format : stream=codec_type

stream と format セクションのすべてのタグを表示するには次のようにします。

stream_tags : format_tags

stream セクションの title タグ(あれば)のみを表示するには次のようにします。

stream_tags=title

-show_packets

入力マルチメディアストリームに含まれる各パケットについての情報を表示します。

個々のパケットの情報は "PACKET" という名前の専用セクション内に出力されます。

-show_frames

入力マルチメディアストリームに含まれる各フレームと字幕についての情報を表示します。

個々のフレームの情報は "FRAME" または "SUBTITLE" という名前の専用セクション内に出力されます。

-show_log loglevel

loglevel に設定した値に従って、各フレームについての decoder からのログ情報を表示します(-loglevel を参照)。このオプションには -show_frames が必要です。

各ログメッセージの情報は "LOG" という名前の専用セクション内に出力されます。

-show_streams

入力マルチメディアストリームに含まれる各メディアストリームについての情報を表示します。

各メディアストリームの情報は "STREAM" という名前の専用セクション内に出力されます。

-show_programs

入力マルチメディアストリームに含まれるプログラムとそのストリームについての情報を表示します。

各メディアストリームの情報は "PROGRAM_STREAM" という名前の専用セクション内に出力されます。

-show_stream_groups

入力マルチメディアストリームに含まれるストリームグループとそのストリームについての情報を表示します。

各メディアストリームの情報は "STREAM_GROUP_STREAM" という名前の専用セクション内に出力されます。

-show_chapters

形式に格納されたチャプターについての情報を表示します。

各チャプターは "CHAPTER" という名前の専用セクション内に出力されます。

-count_frames

ストリームごとのフレーム数を数え、対応するストリームセクションに報告します。

-count_packets

ストリームごとのパケット数を数え、対応するストリームセクションに報告します。

-read_intervals read_intervals

指定した区間のみを読み込みます。read_intervals は "," で区切った区間指定の並びでなければなりません。ffprobe は区間の開始点までシークし、そこから読み込みを続けます。

各区間は "%" で区切った 2 つの任意の部分で指定します。

最初の部分は区間の開始位置を指定します。これは絶対位置として解釈されますが、"+" 文字が前に付いている場合は現在位置からの相対オフセットとして解釈されます。この最初の部分を指定しなかった場合、この区間を読むときにシークは行われません。

2 つ目の部分は区間の終了位置を指定します。これは絶対位置として解釈されますが、"+" 文字が前に付いている場合は現在位置からの相対オフセットとして解釈されます。オフセット指定が "#" で始まる場合は、区間の開始から読み込むパケット数(フラッシュパケットは含まない)として解釈されます。2 つ目の部分を指定しなかった場合、プログラムは入力の終わりまで読み込みます。

シークは正確ではないので、実際の区間の開始点は指定した位置と異なることがある点に注意してください。また、区間の長さを指定した場合、絶対的な終了時刻は、指定した開始値ではなく、ファイルをシークして見つかった区間の開始点に長さを加えて計算されます。

形式的な構文は次のとおりです。

INTERVAL  ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
INTERVALS ::= INTERVAL[,INTERVALS]

いくつか例を示す。

  • 時刻 10 までシークし、見つかったシーク点から 20 秒後までパケットを読み込み、その後位置 01:30(1 分 30 秒)までシークし、位置 01:45 までパケットを読み込みます。

    10%+20,01:30%01:45
    
  • 位置 01:23 までシークした後、42 パケットだけ読み込みます。

    01:23%+#42
    
  • 先頭から最初の 20 秒だけ読み込みます。

    %+20
    
  • 先頭から位置 02:30 まで読み込みます。

    %02:30
    

-show_private_data, -private

private data、つまり表示する特定の要素の形式に依存するデータを表示します。このオプションは既定で有効ですが、用途によっては無効にする必要があるかもしれません。たとえば XSD 準拠の XML 出力を作成する場合などです。

-show_program_version

プログラムのバージョンに関連する情報を表示します。

バージョン情報は "PROGRAM_VERSION" という名前のセクション内に出力されます。

-show_library_versions

ライブラリのバージョンに関連する情報を表示します。

各ライブラリのバージョン情報は "LIBRARY_VERSION" という名前のセクション内に出力されます。

-show_versions

プログラムとライブラリのバージョンに関連する情報を表示します。これは -show_program_version と -show_library_versions の両方を設定するのと同等です。

-show_pixel_formats

FFmpeg が対応するすべての pixel format についての情報を表示します。

各形式の pixel format 情報は "PIXEL_FORMAT" という名前のセクション内に出力されます。

-show_optional_fields value

JSON や XML などの一部の writer は、無効な値や該当しない値を持つフィールドの表示を省略しますが、他の writer は常にそれらを表示します。このオプションはこの挙動を制御できます。有効な値は always/1never/0auto/-1 です。既定は auto です。

-analyze_frames

指定した読み込み区間までフレームやそのサイドデータを解析し、ストリームレベルで役立つ追加情報を提供します。-show_streams オプションと組み合わせなければ効果がありません。

現在、このオプションを有効にしたときに提供される追加フィールドは closed_captions フィールドと film_grain フィールドです。

たとえば、最初の 20 秒を解析してこれらのフィールドを埋めるには次のようにします。

ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT

-bitexact

bitexact な出力を強制します。特定のビルドに依存しない出力を作成するのに役立ちます。

-i input_url

input_url を読み込みます。

-o output_url

output_url に出力を書き込みます。指定しない場合、出力は標準出力に送られます。

-c:media_specifier codec_name -codec:media_specifier codec_name

media_specifier で識別されるストリームに特定の decoder 実装を強制します。media_specifier は a(音声)、v(映像)、s(字幕)、d(データ)の値を取り得ます。

4 Writers

writer は ffprobe が採用する出力形式を定義し、出力のすべての部分を表示するために使われます。

writer は 1 つ以上の引数を受け取り、採用するオプションを指定できます。オプションは ":" で区切った key=value のペアの一覧として指定します。

すべての writer は次のオプションに対応します。

string_validation, sv

文字列の検証モードを設定します。

受け付ける値は次のとおりです。

‘fail’

入力に無効な文字列(UTF-8)シーケンスやコードポイントが見つかった場合、writer は即座に失敗します。これは入力メタデータの検証に特に役立ちます。

‘ignore’

検証エラーはすべて無視されます。これにより、特に json や xml の writer では出力が壊れる可能性があります。

‘replace’

writer は無効な UTF-8 シーケンスやコードポイントを、string_validation_replacement で指定した文字列に置き換えます。

既定値は ‘replace’ です。

string_validation_replacement, svr

string_validation を ‘replace’ に設定した場合に使う置換文字列を設定します。

このオプションを指定しなかった場合、writer は空文字列を想定します。つまり、入力文字列から無効なシーケンスを取り除きます。

現在利用可能な writer の説明を以下に示します。

4.1 default

既定の形式。

各セクションを次の形式で出力します。

[SECTION]
key1=val1
...
keyN=valN
[/SECTION]

メタデータタグは、対応する FORMAT、STREAM、STREAM_GROUP_STREAM、PROGRAM_STREAM のいずれかのセクションに 1 行として出力され、"TAG:" という文字列が前に付きます。

受け付けるオプションの説明を以下に示します。

nokey, nk

1 に設定すると、各フィールドの key を出力しないよう指定します。既定値は 0 です。

noprint_wrappers, nw

1 に設定すると、セクションのヘッダとフッタを出力しないよう指定します。既定値は 0 です。

4.2 compact, csv

compact および CSV 形式。

csv writer は compact と同等ですが、既定値が異なります。

各セクションは 1 行で出力されます。オプションを指定しない場合、出力は次の形式になります。

section|key1=val1| ... |keyN=valN

メタデータタグは対応する "format" または "stream" セクションに出力されます。メタデータタグの key は、出力される場合 "tag:" という文字列が前に付きます。

受け付けるオプションの説明は次のとおりです。

item_sep, s

出力行のフィールドを区切るのに使う文字を指定します。印字可能な 1 文字でなければならず、既定では "|"(csv writer では ",")です。

nokey, nk

1 に設定すると、各フィールドの key を出力しないよう指定します。既定値は 0(csv writer では 1)です。

escape, e

使うエスケープモードを設定します。既定は "c"(csv writer では "csv")です。

次のいずれかの値を取り得ます。

c

C 言語風のエスケープを行います。改行(‘\n’)、復帰(‘\r’)、タブ(‘\t’)、改ページ(‘\f’)、エスケープ文字(‘\’)、または項目区切り文字 SEP を含む文字列は C 言語風にエスケープされます。改行はシーケンス ‘\n’ に、復帰は ‘\r’ に、‘\’ は ‘\\’ に、区切り文字 SEP は ‘\SEP’ に変換されます。

csv

RFC4180 に記述されている CSV 風のエスケープを行います。改行(‘\n’)、復帰(‘\r’)、二重引用符(‘"’)、または SEP を含む文字列は二重引用符で囲まれます。

none

エスケープを行いません。

print_section, p

値が 1 なら各行の先頭にセクション名を出力し、0 に設定すると無効にします。既定値は 1 です。

4.3 flat

flat 形式。

各行が "streams.stream.3.tags.foo=bar" のような明示的な key=value を含む自由形式の出力。出力はシェルエスケープされるので、区切り文字が英数字またはアンダースコアである限り、sh スクリプトに直接埋め込めます(sep_char オプションを参照)。

受け付けるオプションの説明は次のとおりです。

sep_char, s

出力されるフィールドの key において、チャプター、セクション名、ID、潜在的なタグを区切るのに使う区切り文字。

既定値は ‘.’ です。

hierarchical, h

セクション名の指定を階層的にするかどうかを指定します。1 に設定し、かつ現在のチャプターに複数のセクションがある場合、セクション名の前にチャプター名が付きます。0 にするとこの挙動が無効になります。

既定値は 1 です。

4.4 ini

INI 形式の出力。

INI ベースの形式で出力します。

次の規約が採用されています。

  • すべての key と値は UTF-8
  • ‘.’ はサブグループ区切り
  • 改行、‘\t’、‘\f’、‘\b’ および次の文字はエスケープされる
  • ‘\’ はエスケープ文字
  • ‘#’ はコメント指示子
  • ‘=’ は key/value 区切り
  • ‘:’ は使われないが、通常 key/value 区切りとして解析される

この writer は ‘:’ で区切った key=value のペアの一覧としてオプションを受け付けます。

受け付けるオプションの説明は次のとおりです。

hierarchical, h

セクション名の指定を階層的にするかどうかを指定します。1 に設定し、かつ現在のチャプターに複数のセクションがある場合、セクション名の前にチャプター名が付きます。0 にするとこの挙動が無効になります。

既定値は 1 です。

4.5 json

JSON ベースの形式。

各セクションは JSON 記法で出力されます。

受け付けるオプションの説明は次のとおりです。

compact, c

1 に設定すると compact な出力を有効にし、各セクションが 1 行で出力されます。既定値は 0 です。

JSON についての詳細は http://www.json.org/ を参照してください。

4.6 xml

XML ベースの形式。

XML 出力は、FFmpeg の datadir にインストールされる XML スキーマ記述ファイル ffprobe.xsd に記述されている。

スキーマの更新版は http://www.ffmpeg.org/schema/ffprobe.xsd という url から取得でき、これは FFmpeg の開発ソースコードツリーにコミットされた最新のスキーマにリダイレクトされる。

なお、出力される内容が ffprobe.xsd スキーマに準拠するのは、特別なグローバル出力オプション(unit、prefix、byte_binary_prefix、sexagesimal など)を一切指定しなかった場合に限られる点に注意。

受け付けるオプションの説明は次のとおり。

fully_qualified, q

1 に設定すると、出力を完全修飾にするかどうかを指定する。既定値は 0 だ。これは XSD ファイルで検証できる XML ファイルを生成するために必要だ。

xsd_strict, x

1 に設定すると、出力が XSD に準拠していることを保証するためのチェックをより多く行う。既定値は 0 だ。このオプションは fully_qualified を自動的に 1 に設定する。

XML 形式についての詳細は https://www.w3.org/XML/ を参照のこと。

5 Timecode

ffprobe は Timecode の抽出に対応している。

  • MPEG1/2 のタイムコードは GOP から抽出され、映像ストリームの詳細で利用できる(-show_streams、timecode を参照)。
  • MOV のタイムコードは tmcd トラックから抽出されるので、tmcd ストリームの metadata で利用できる(-show_streams、TAG:timecode を参照)。
  • DV、GXF、AVI のタイムコードは format の metadata で利用できる(-show_format、TAG:timecode を参照)。

6 関連項目

ffprobe-all, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters

7 作者

FFmpeg の開発者たち。

作者についての詳細は、プロジェクトの Git 履歴(https://git.ffmpeg.org/ffmpeg)を参照のこと。たとえば FFmpeg のソースディレクトリで git log コマンドを実行するか、オンラインリポジトリ https://git.ffmpeg.org/ffmpeg を閲覧するとよい。

各コンポーネントのメンテナは、ソースコードツリー内の MAINTAINERS ファイルに一覧されている。

Hosting provided by telepoint.bg