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_streams、show_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/1、never/0、auto/-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