ffplay ドキュメント
1 書式
ffplay [options] [input_url]
2 概要
FFplay は FFmpeg ライブラリと SDL ライブラリを使った、とても単純で移植性の高いメディアプレーヤーです。主に各種 FFmpeg API の試験台として使われます。
3 オプション
数値を取るオプションは、特に断りがなければ、数を表す文字列を入力として受け付けます。この文字列には SI 単位の接頭辞(たとえば ’K’、’M’、’G’)を付けられます。
SI 単位の接頭辞に ’i’ を付けると、その接頭辞全体は 2 進の倍数を表す単位接頭辞として解釈され、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 番のストリームを選びます。ストリームの番号付けは libavformat が検出したストリームの順序に基づきますが、ストリームグループ指定子やプログラム ID も指定した場合は、グループまたはプログラム内のストリームの順序に基づきます。
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 or i:group_id
このグループ ID のストリームに一致します。
p:program_id[:additional_stream_specifier]
ID が program_id のプログラムに含まれるストリームに一致します。additional_stream_specifier を指定した場合は、そのプログラムに属し、かつ additional_stream_specifier に一致するストリームに一致します。
#stream_id or i:stream_id
ストリーム ID(たとえば MPEG-TS container の PID)でストリームに一致します。
m:key[:value]
メタデータタグ key が指定した value を持つストリームに一致します。value を与えない場合は、そのタグを何らかの値で持つストリームに一致します。key や value の中のコロン ’:’ はバックスラッシュでエスケープする必要があります。
disp:dispositions[:additional_stream_specifier]
指定した disposition を持つストリームに一致します。dispositions は、1 つ以上の disposition(-dispositions オプションが表示するもの)を ’+’ でつないだリストです。
u
利用可能な構成を持つストリームに一致します。codec が定義されており、映像の寸法や音声のサンプリングレートといった必須情報がそろっている必要があります。
ffmpeg では、メタデータによる一致は入力ファイルに対してのみ正しく機能する点に注意してください。
3.2 共通オプション
これらのオプションは ff* 系ツール全体で共有されます。
-L, -license
ライセンスを表示します。
-h, -?, -help, --help [arg]
ヘルプを表示します。特定の項目についてのヘルプを表示するために、省略可能なパラメータを指定できます。引数を指定しない場合は、基本的な(高度でない)ツールオプションのみが表示されます。
arg に指定できる値は次のとおりです。
long
基本的なツールオプションに加えて、高度なツールオプションも表示します。
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 filter について詳細情報を表示します。すべての bitstream filter の一覧を得るには -bsfs オプションを使います。
protocol=protocol_name
protocol_name という名前のプロトコルについて詳細情報を表示します。すべてのプロトコルの一覧を得るには -protocols オプションを使います。
-version
バージョンを表示します。
-buildconf
ビルド構成を 1 行に 1 オプションずつ表示します。
-formats
利用可能なフォーマット(デバイスを含む)を表示します。
-demuxers
利用可能な demuxer を表示します。
-muxers
利用可能な muxer を表示します。
-devices
利用可能なデバイスを表示します。
-codecs
libavcodec が知っているすべての codec を表示します。
このドキュメント全体で ’codec’ という語は、より正確にはメディアビットストリームフォーマットと呼ばれるものの略称として使っている点に注意してください。
-decoders
利用可能な decoder を表示します。
-encoders
利用可能なすべての encoder を表示します。
-bsfs
利用可能な bitstream filter を表示します。
-protocols
利用可能なプロトコルを表示します。
-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" という行を省略することを指示します。
‘level’
各メッセージ行に [level] という接頭辞を付けることを指示します。たとえばログをファイルに書き出すときなど、ログの色付けの代わりに使えます。
‘time’
ログ行の先頭に時刻情報を付けることを指示します。
‘datetime’
ログ行の先頭に日付と時刻の情報を付けることを指示します。
フラグは、’+’/’-’ の接頭辞を付けることで単独でも使えます。これにより、他のフラグや loglevel を変えずに、単一のフラグだけを設定/解除できます。フラグと loglevel の両方を設定する場合は、最後のフラグ値と 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
別の例として、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’ ‘特定のプロセッサ’
‘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 オプションを使います。オプションは次の 2 つのカテゴリに分かれます。
generic
これらのオプションは、任意の container、codec、デバイスに対して設定できます。汎用オプションは、container/デバイスでは AVFormatContext options の下に、codec では AVCodecContext options の下に列挙されます。
private
これらのオプションは、特定の container、デバイス、codec に固有です。固有オプションは、対応する container/デバイス/codec の下に列挙されます。
たとえば MP3 ファイルに既定の ID3v2.4 ではなく ID3v2.3 ヘッダーを書き込むには、MP3 muxer の id3v2_version 固有オプションを使います。
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 主なオプション
-x width
表示する幅を強制します。
-y height
表示する高さを強制します。
-fs
全画面モードで起動します。
-an
音声を無効にします。
-vn
映像を無効にします。
-sn
字幕を無効にします。
-ss pos
pos までシークします。多くのフォーマットでは正確なシークができないため、ffplay は pos に最も近いシークポイントへシークする点に注意してください。
pos は時間長の指定でなければなりません。(ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration の節を参照してください。
-t duration
音声/映像を duration 秒間再生します。
duration は時間長の指定でなければなりません。(ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration の節を参照してください。
-bytes
バイト単位でシークします。
-seek_interval
左右キーでシークする際の間隔を秒単位で任意に設定します。既定値は 10 秒です。
-nodisp
グラフィック表示を無効にします。
-noborder
枠なしのウィンドウにします。
-alwaysontop
ウィンドウを常に最前面に表示します。対応環境: SDL >= 2.0.5 の X11、SDL >= 2.0.6 の Windows。
-volume
起動時の音量を設定します。0 は無音、100 は減衰も増幅もしないことを意味します。負の値は 0 として扱われ、100 を超える値は 100 として扱われます。
-f fmt
フォーマットを強制します。
-window_title title
ウィンドウタイトルを設定します(既定値は入力ファイル名)。
-left title
ウィンドウ左端の x 座標を設定します(既定では中央に配置されます)。
-top title
ウィンドウ上端の y 座標を設定します(既定では中央に配置されます)。
-loop number
動画の再生を
-showmode mode
使用する表示モードを設定します。mode に指定できる値は次のとおりです。
‘0, video’
映像を表示します。
‘1, waves’
音声の波形を表示します。
‘2, rdft’
RDFT((逆)実離散フーリエ変換)を使って音声の周波数帯を表示します。
既定値は "video" です。映像が存在しないか再生できない場合は、自動的に "rdft" が選ばれます。
キー w を押すと、利用可能な表示モードを対話的に切り替えられます。
-vf filtergraph
filtergraph で指定した filtergraph を作成し、それを使って映像ストリームをフィルタリングします。
filtergraph は、ストリームに適用する filtergraph の記述で、映像入力と映像出力を 1 つずつ持つ必要があります。filtergraph 内では、入力はラベル in、出力はラベル out に関連付けられます。filtergraph の構文について詳しくは ffmpeg-filters マニュアルを参照してください。
このパラメータは複数回指定でき、キー w を押すと、指定した filtergraph を表示モードとともに順に切り替えられます。
-af filtergraph
filtergraph は、入力音声に適用する filtergraph の記述です。利用可能なフィルタ(ソースやシンクを含む)をすべて表示するには "-filters" オプションを使います。
-i input_url
input_url を読み込みます。
3.5 高度なオプション
-stats
再生に関するいくつかの統計を表示します。具体的には、ストリームの長さ、codec のパラメータ、ストリーム内の現在位置、音声と映像の同期のずれを示します。ログレベルが info より低くない限り、既定で表示されます。このオプションを手動で指定すれば表示を強制できます。無効にするには -nostats を指定する必要があります。
-fast
仕様に準拠しない最適化を行います。
-genpts
pts を生成します。
-sync type
マスタークロックを音声(type=audio)、映像(type=video)、外部(type=ext)のいずれかに設定します。既定は音声です。マスタークロックは音声と映像の同期を制御するために使われます。多くのメディアプレーヤーは音声をマスタークロックに使いますが、場合によっては(ストリーミングや高品質の放送など)これを変更する必要があります。このオプションは主にデバッグ用途で使います。
-ast audio_stream_specifier
指定したストリーム指定子を使って、目的の音声ストリームを選びます。ストリーム指定子は「ストリーム指定子」の章で説明しています。このオプションを指定しない場合は、すでに選ばれている映像ストリームのプログラム内で "最良" の音声ストリームが選ばれます。
-vst video_stream_specifier
指定したストリーム指定子を使って、目的の映像ストリームを選びます。ストリーム指定子は「ストリーム指定子」の章で説明しています。このオプションを指定しない場合は、"最良" の映像ストリームが選ばれます。
-sst subtitle_stream_specifier
指定したストリーム指定子を使って、目的の字幕ストリームを選びます。ストリーム指定子は「ストリーム指定子」の章で説明しています。このオプションを指定しない場合は、すでに選ばれている映像または音声ストリームのプログラム内で "最良" の字幕ストリームが選ばれます。
-autoexit
映像の再生が終わったら終了します。
-exitonkeydown
いずれかのキーが押されたら終了します。
-exitonmousedown
いずれかのマウスボタンが押されたら終了します。
-codec:media_specifier codec_name
media_specifier で識別されるストリームに対して、特定の decoder 実装を強制します。media_specifier は a(音声)、v(映像)、s(字幕)の値を取れます。
-acodec codec_name
特定の音声 decoder を強制します。
-vcodec codec_name
特定の映像 decoder を強制します。
-scodec codec_name
特定の字幕 decoder を強制します。
-autorotate
ファイルのメタデータに従って映像を自動で回転します。既定で有効で、無効にするには -noautorotate を使います。
-framedrop
映像の同期がずれている場合に映像フレームを破棄します。マスタークロックが映像に設定されていない場合、既定で有効です。すべてのマスタークロックソースでフレーム破棄を有効にするにはこのオプションを使い、無効にするには -noframedrop を使います。
-infbuf
入力バッファのサイズを制限せず、できるだけ早く入力から可能な限り多くのデータを読み込みます。データを時間内に読み込まないと取りこぼす可能性があるリアルタイムストリームでは、既定で有効です。すべての入力で無限バッファを有効にするにはこのオプションを使い、無効にするには -noinfbuf を使います。
-filter_threads nb_threads
フィルタパイプラインの処理に使うスレッド数を定義します。各パイプラインは、並列処理に使えるこの数のスレッドを持つスレッドプールを作ります。既定値は 0 で、これはスレッド数が利用可能な CPU の数で決まることを意味します。
-enable_vulkan
SDL 組み込みのレンダラーではなく vulkan レンダラーを使います。libplacebo に依存します。
-vulkan_params
Vulkan の設定を、":" で区切った key=value ペアのリストで指定します。
-hwaccel
ハードウェアアクセラレーションによるデコードを使います。このオプションを有効にすると、自動的に vulkan レンダラーも有効になります。
-video_bg pattern
透過映像に使う背景パターンを設定します。単色のパターンには、(ffmpeg-utils)ffmpeg-utils(1) マニュアルの Color の節で定められた色名または色コードを使えます。チェッカーボード状のパターンには特別なキーワード tiles も使えます。これが既定でもあります。none パターンはアルファブレンディングを行わずに描画し、実質的にアルファチャンネルを無視します。
3.6 再生中の操作
q, ESC
終了します。
f
全画面表示を切り替えます。
p, SPC
一時停止します。
m
ミュートを切り替えます。
9, 0
/, *
それぞれ音量を下げ/上げます。
a
現在のプログラム内で音声チャンネルを順に切り替えます。
v
映像チャンネルを順に切り替えます。
t
現在のプログラム内で字幕チャンネルを順に切り替えます。
c
プログラムを順に切り替えます。
w
映像フィルタまたは表示モードを順に切り替えます。
s
次のフレームへ進みます。
ストリームがまだ一時停止していなければ一時停止し、次の映像フレームへ進んで一時停止します。
left/right
10 秒、または -seek_interval を設定している場合はその間隔だけ、後方/前方にシークします。
down/up
1 分だけ後方/前方にシークします。
page down/page up
前/次のチャプターへシークします。チャプターがない場合は 10 分だけ後方/前方にシークします。
right mouse click
ウィンドウ幅に対する位置の割合に対応する、ファイル内の位置へシークします。
left mouse double-click
全画面表示を切り替えます。
4 関連項目
ffmpeg-all, ffmpeg, ffprobe, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters
5 作者
FFmpeg の開発者たち。
作者についての詳細は、プロジェクトの Git 履歴(https://git.ffmpeg.org/ffmpeg)を参照してください。たとえば FFmpeg のソースディレクトリで git log コマンドを実行するか、オンラインリポジトリ https://git.ffmpeg.org/ffmpeg を閲覧します。
各コンポーネントのメンテナーは、ソースコードツリーの MAINTAINERS というファイルに記載されています。
ホスティングは telepoint.bg の提供によります。