FFmpeg フィルタドキュメント
1 Description
このドキュメントでは、libavfilter ライブラリが提供するフィルタ、ソース、シンクについて説明します。
2 Filtering Introduction
FFmpeg のフィルタ処理は libavfilter ライブラリによって実現されます。
libavfilter では、1 つのフィルタが複数の入力と複数の出力を持つことができます。どのようなことが可能かを示すために、次の filtergraph を考えてみましょう。
[main]
input --> split ---------------------> overlay --> output
| ^
|[tmp] [flip]|
+-----> crop --> vflip -------+
この filtergraph は入力ストリームを 2 つのストリームに分割し、一方を crop フィルタと vflip フィルタに通したうえで、もう一方のストリームの上に重ね合わせて再び結合します。これは次のコマンドで実現できます。
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
その結果、映像の上半分が出力映像の下半分に鏡像として映し出されます。
同じ線形チェイン内のフィルタはカンマで区切り、別々の線形チェインはセミコロンで区切ります。この例では crop,vflip が 1 つの線形チェインにあり、split と overlay はそれぞれ別のチェインにあります。線形チェインどうしが接続する地点には、角括弧で囲んだ名前のラベルを付けます。例では、split フィルタが 2 つの出力を生成し、それぞれにラベル [main] と [tmp] が関連付けられています。
split の 2 番目の出力([tmp] とラベル付けされたもの)に送られたストリームは crop フィルタで処理され、映像の下半分が切り落とされたうえで上下に反転されます。overlay フィルタは、split フィルタの変更されていない 1 番目の出力([main] とラベル付けされたもの)を入力に取り、その下半分に crop,vflip フィルタチェインが生成した出力を重ね合わせます。
一部のフィルタは入力としてパラメータのリストを取ります。パラメータはフィルタ名と等号のあとに指定し、互いにコロンで区切ります。
音声/映像の入力を持たない、いわゆるソースフィルタと呼ばれるものや、音声/映像の出力を持たないシンクフィルタと呼ばれるものも存在します。
3 graph2dot
FFmpeg の tools ディレクトリに含まれる graph2dot プログラムを使うと、filtergraph の記述を解析し、それに対応する dot 言語のテキスト表現を出力できます。
次のコマンドを実行すると、
graph2dot -h
graph2dot の使い方を確認できます。
その dot 記述を(graphviz プログラム群に含まれる)dot プログラムに渡せば、filtergraph のグラフィカルな表現が得られます。
たとえば、次の一連のコマンドは、
echo GRAPH_DESCRIPTION | \
tools/graph2dot -o graph.tmp && \
dot -Tpng graph.tmp -o graph.png && \
display graph.png
GRAPH_DESCRIPTION 文字列で記述されたグラフを表す画像を生成して表示するために使えます。この文字列は、入力と出力が明示的に定義された、完結した自己完全なグラフでなければならない点に注意してください。たとえばコマンドラインが次の形式の場合、
ffmpeg -i infile -vf scale=640:360 outfile
GRAPH_DESCRIPTION 文字列は次の形式にする必要があります。
nullsrc,scale=640:360,nullsink
特定の入力ファイルをシミュレートするために、nullsrc のパラメータを設定したり format フィルタを追加したりする必要もあるかもしれません。
4 Filtergraph description
filtergraph は、接続されたフィルタからなる有向グラフです。サイクルを含むことができ、フィルタの対の間に複数のリンクが存在することもあります。各リンクは一方の側に入力パッドを 1 つ持ち、それを入力元のフィルタに接続し、もう一方の側に出力パッドを 1 つ持ち、それを出力を受け取るフィルタに接続します。
filtergraph 内の各フィルタは、アプリケーションに登録されたフィルタクラスのインスタンスです。フィルタクラスは、フィルタの機能と入力・出力パッドの数を定義します。
入力パッドを持たないフィルタは「ソース」と呼ばれ、出力パッドを持たないフィルタは「シンク」と呼ばれます。
4.1 Filtergraph syntax
filtergraph にはテキスト表現があり、ffmpeg の -filter/-vf/-af および -filter_complex オプション、ffplay の -vf/-af オプション、そして libavfilter/avfilter.h で定義される avfilter_graph_parse_ptr() 関数によって認識されます。
filterchain は、接続されたフィルタの並びで構成され、各フィルタは並びの中で前のフィルタに接続されます。filterchain は ","(カンマ)で区切ったフィルタ記述のリストで表現します。
filtergraph は filterchain の並びで構成されます。filterchain の並びは ";"(セミコロン)で区切った filterchain 記述のリストで表現します。
フィルタは次の形式の文字列で表現します。[in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]
filter_name は、記述するフィルタがそのインスタンスであるフィルタクラスの名前で、プログラムに登録されたフィルタクラスのいずれかの名前でなければならず、任意で "@id" を後ろに付けられます。フィルタクラスの名前には、任意で文字列 "=arguments" を続けられます。
arguments は、フィルタインスタンスを初期化するために使うパラメータを含む文字列です。次の 2 つの形式のいずれかを取ります。
- ’:’ で区切った key=value ペアのリスト。
- ’:’ で区切った value のリスト。この場合、キーは宣言された順序のオプション名であると見なされます。たとえば
fadeフィルタは type、start_frame、nb_frames の 3 つのオプションをこの順で宣言します。すると、パラメータリスト in:0:30 は、値 in をオプション type に、0 を start_frame に、30 を nb_frames に割り当てる、という意味になります。 - ’:’ で区切った、直接指定の value と長い形式の key=value ペアを混在させたリスト。直接指定の value は key=value ペアより前に置く必要があり、前項と同じ順序の制約に従います。後続の key=value ペアは任意の順序で設定できます。
オプション値自体がアイテムのリストである場合(たとえば format フィルタは pixel format のリストを取ります)、リスト内のアイテムは通常 ‘|’ で区切ります。
引数のリストは、文字 ‘'’ を開始と終了の印として使ってクォートでき、クォートされたテキスト内の文字をエスケープするには文字 ‘\’ を使います。クォートしない場合、引数の文字列は次の特殊文字(集合 ‘[]=;,’ に属する文字)に出会った時点で終了したと見なされます。
ffmpeg CLI ツールに実装された特別な構文を使うと、オプション値をファイルから読み込めます。これはオプション名の前にスラッシュ ’/’ を付けることで行い、与えた値は実際の値を読み込むパスとして解釈されます。たとえば、
ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>
は描画するテキストを /tmp/some_text から読み込みます。同様の機能を実装したい API 利用者は、avfilter_graph_segment_*() 関数群とカスタム IO コードを併用してください。
フィルタの名前と引数の前後には、任意でリンクラベルのリストを置けます。リンクラベルを使うと、リンクに名前を付け、フィルタの出力パッドまたは入力パッドに関連付けられます。前置きのラベル in_link_1 ... in_link_N はフィルタの入力パッドに関連付けられ、後置きのラベル out_link_1 ... out_link_M は出力パッドに関連付けられます。
filtergraph 内で同じ名前のリンクラベルが 2 つ見つかると、対応する入力パッドと出力パッドの間にリンクが作られます。
出力パッドにラベルが付いていない場合、既定では filterchain 内の次のフィルタの最初のラベルなし入力パッドにリンクされます。たとえば次の filterchain では、
nullsrc, split[L1], [L2]overlay, nullsink
split フィルタのインスタンスは 2 つの出力パッドを持ち、overlay フィルタのインスタンスは 2 つの入力パッドを持ちます。split の最初の出力パッドには "L1"、overlay の最初の入力パッドには "L2" のラベルが付き、split の 2 番目の出力パッドは overlay の 2 番目の入力パッドにリンクされます。この 2 つはどちらもラベルなしです。
フィルタ記述で、最初のフィルタの入力ラベルが指定されていない場合は "in" が、最後のフィルタの出力ラベルが指定されていない場合は "out" が、それぞれ想定されます。
完全な filterchain では、ラベルなしのフィルタ入力・出力パッドはすべて接続されていなければなりません。filtergraph は、すべての filterchain のすべてのフィルタ入力・出力パッドが接続されている場合に有効と見なされます。
filtergraph 仕様でトークンを区切る先頭と末尾の空白(スペース、タブ、改行)は無視されます。つまり、filtergraph は空行やスペースを使って可読性を高めて記述できます。
たとえば、次の filtergraph は、
testsrc,split[L1],hflip[L2];[L1][L2] hstack
次のように表現できます。
testsrc,
split [L1], hflip [L2];
[L1][L2] hstack
libavfilter は、format 変換が必要な箇所に scale フィルタを自動的に挿入します。これら自動挿入されるスケーラーに対しては、filtergraph の記述の前に sws_flags=flags; を付けることで swscale フラグを指定できます。
以下は filtergraph 構文の BNF による記述です。
NAME ::= sequence of alphanumeric characters and '_'
FILTER_NAME ::= NAME["@"NAME]
LINKLABEL ::= "[" NAME "]"
LINKLABELS ::= LINKLABEL [LINKLABELS]
FILTER_ARGUMENTS ::= sequence of chars (possibly quoted)
FILTER ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS]
FILTERCHAIN ::= FILTER [,FILTERCHAIN]
FILTERGRAPH ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]
4.2 Notes on filtergraph escaping
filtergraph 記述の組み立てには、複数のレベルのエスケープが伴います。採用されているエスケープ手順の詳細については、(ffmpeg-utils)the "Quoting and escaping" section in the ffmpeg-utils(1) manual を参照してください。
第 1 レベルのエスケープは各フィルタオプションの値の内容に影響します。値には、値を区切るのに使われる特殊文字 : や、エスケープ文字 \' が含まれることがあります。
第 2 レベルのエスケープはフィルタ記述全体に影響します。フィルタ記述には、エスケープ文字 \' や、filtergraph 記述で使われる特殊文字 [],; が含まれることがあります。
最後に、シェルのコマンドラインで filtergraph を指定する場合は、その中に含まれるシェルの特殊文字に対して第 3 レベルのエスケープを行う必要があります。
たとえば、drawtext フィルタ記述の text 値に埋め込む次の文字列を考えます。
this is a 'string': may contain one, or more, special characters
この文字列には特殊エスケープ文字 ' と特殊文字 : が含まれているため、次のようにエスケープする必要があります。
text=this is a \'string\'\: may contain one, or more, special characters
このフィルタ記述を filtergraph 記述に埋め込む際には、filtergraph のすべての特殊文字をエスケープするために第 2 レベルのエスケープが必要です。したがって上記の例は次のようになります。
drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
(\' のエスケープ特殊文字に加えて , もエスケープする必要がある点に注意してください)。
最後に、filtergraph 記述をシェルコマンドに書く際には、採用するシェルのエスケープ規則に応じた追加レベルのエスケープが必要です。たとえば \ が特殊文字で、別の \ でエスケープする必要があると仮定すると、先ほどの文字列は最終的に次のようになります。
-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
フィルタ仕様を入力として受け付けるコマンドラインツールを使う際に、このような煩雑なエスケープを避けるには、フィルタやオプションの仕様をシェルに直接書くのを避けるのが望ましいです。
たとえば drawtext フィルタの場合、描画するテキストの指定には text の代わりに textfile オプションを使うほうがよいかもしれません。
5 Timeline editing
一部のフィルタは汎用の enable オプションをサポートします。timeline editing をサポートするフィルタでは、このオプションに式を設定でき、その式はフレームをフィルタへ送る前に評価されます。評価結果が非ゼロならフィルタが有効になり、そうでなければフレームは変更されずに filtergraph 内の次のフィルタへ送られます。
式は次の値を受け付けます。
‘t’
秒単位で表したタイムスタンプ。入力タイムスタンプが不明な場合は NAN。
‘n’
入力フレームの連番。0 から始まります。
‘pos’
ファイル内での入力フレームの位置。不明な場合は NAN。非推奨につき使用しないでください。
‘w’ ‘h’
映像の場合の入力フレームの幅と高さ。
さらに、これらのフィルタは式を再定義するために使える enable コマンドをサポートします。
他のフィルタ処理オプションと同様に、enable オプションも同じ規則に従います。
たとえば、blur フィルタ(smartblur)を 10 秒から 3 分まで有効にし、curves フィルタを 3 秒から有効にするには、次のようにします。
smartblur = enable='between(t,10,3*60)',
curves = enable='gte(t,3)' : preset=cross_process
どのフィルタが timeline をサポートしているかは ffmpeg -filters で確認できます。
6 Changing options at runtime with a command
一部のオプションは、コマンドを使ってフィルタの動作中に変更できます。これらのオプションは ffmpeg -h filter=
7 Options for filters with several inputs (framesync)
複数の入力を持つ一部のフィルタは、共通のオプションセットをサポートします。これらのオプションは名前でのみ設定でき、短縮記法では設定できません。
eof_action
副入力で EOF に達したときに取る動作。次のいずれかの値を受け付けます。
repeat
最後のフレームを繰り返します(既定値)。
endall
両方のストリームを終了します。
pass
主入力をそのまま通します。
shortest
1 に設定すると、最も短い入力が終了した時点で出力を強制的に終了します。既定値は 0 です。
repeatlast
1 に設定すると、副ストリームの最後のフレームを主ストリームの終わりまで強制的に延長します。0 にするとこの動作を無効にします。既定値は 1 です。
ts_sync_mode
副入力のタイムスタンプに基づいてストリームをどの程度厳密に同期させるか。次のいずれかの値を受け付けます。
default
主入力フレームのタイムスタンプ以下で最も近いタイムスタンプを持つ副入力のフレーム。
nearest
主入力フレームのタイムスタンプに絶対値で最も近いタイムスタンプを持つ副入力のフレーム。
8 Audio Filters
FFmpeg のビルドを設定する際、--disable-filters を使って既存のフィルタを無効にできます。configure の出力には、ビルドに含まれる音声フィルタが表示されます。
以下は、現在利用可能な音声フィルタの説明です。
8.1 aap
第 2 の音声ストリームを使って、第 1 の音声ストリームに Affine Projection アルゴリズムを適用します。
この適応フィルタは、複数の入力音声サンプルに基づいて未知の音声を推定するために使われます。Affine projection アルゴリズムは、計算の複雑さと収束速度の間でトレードオフを取れます。
受け付けるオプションの説明は次のとおりです。
order
フィルタの次数を設定します。
projection
projection の次数を設定します。
mu
フィルタの mu を設定します。
delta
内部共分散行列を初期化する係数を設定します。
out_mode
フィルタの出力サンプルを設定します。次の値を受け付けます。
i
第 1 入力をそのまま通します。
d
第 2 入力をそのまま通します。
o
目的信号(第 2 入力)と誤差信号の推定値との差を通します。
n
入力(第 1 入力)と誤差信号の推定値との差を通します。
e
推定された誤差信号のサンプルを通します。
既定値は o です。
precision
サンプルを処理する際に使う精度を設定します。
auto
他のフィルタに応じて内部のサンプル形式を自動的に選びます。
float
常に単精度浮動小数点のサンプル形式を使います。
double
常に倍精度浮動小数点のサンプル形式を使います。
8.2 acompressor
コンプレッサーは主に信号のダイナミックレンジを縮めるために使います。特に現代の音楽は、全体のラウドネスを上げるために高いレシオで強く圧縮されているものがほとんどです。これはリスナーの注意を最大限に引き、音を「太く」し、トラックにより多くの「パワー」を与えるために行われます。信号を圧縮しすぎると、その後の音が鈍く「死んだ」ように聞こえたり、「ポンピング」を起こしたりすることがあります(強力な効果になることもあれば、トラックを完全に台無しにすることもあります)。適切な圧縮はプロフェッショナルなサウンドに到達するための鍵であり、ミキシングとマスタリングの高度な技術です。設定が複雑なため、この種のエフェクトの感覚をつかむには長い時間がかかることもあります。
圧縮は、選んだレベル threshold を超える音量を検出し、それを ratio で設定した係数で割ることによって行われます。たとえば threshold を -12dB に設定し、信号が -6dB に達した場合、2:1 のレシオでは信号は -9dB になります。信号を厳密に操作すると波形が歪んでしまうため、低減は時間をかけて均すことができます。これは「Attack」と「Release」を設定して行います。attack は、何らかの低減が起こる前に信号が threshold を超えてどれだけの時間上昇している必要があるかを決め、release は、低減を再び弱めるために信号が threshold を下回る必要がある時間を設定します。選んだ attack 時間より短い信号には手が加えられません。信号全体の低減は、その後 makeup 設定で補えます。たとえば信号のピークを約 6dB 圧縮し、makeup をこのレベルまで上げると、ソースの 2 倍の大きさの信号になります。圧縮への入りを柔らかくするために、knee は選んだデシベルの範囲で threshold の鋭いエッジを平滑化します。
このフィルタは次のオプションを受け付けます。
level_in
入力ゲインを設定します。既定は 1。範囲は 0.015625 から 64 です。
mode
コンプレッサーの動作モードを設定します。upward または downward を指定できます。既定は downward です。
threshold
ストリームの信号がこのレベルを超えると、ゲインの低減に影響します。既定では 0.125。範囲は 0.00097563 から 1 です。
ratio
信号を低減するレシオを設定します。1:2 は、レベルが threshold を 4dB 上回った場合、低減後は 2dB だけ上回る、という意味です。既定は 2。範囲は 1 から 20 です。
attack
ゲインの低減が始まる前に、信号が threshold を超えて上昇している必要があるミリ秒数。既定は 20。範囲は 0.01 から 2000 です。
release
低減が再び弱められる前に、信号が threshold を下回っている必要があるミリ秒数。既定は 250。範囲は 0.01 から 9000 です。
makeup
処理後に信号をどれだけ増幅するかを設定します。既定は 1。範囲は 1 から 64 です。
knee
ゲインの低減により柔らかく入るために、threshold 周辺の鋭い knee を湾曲させます。既定は 2.82843。範囲は 1 から 8 です。
link
入力ストリームの全チャンネルの average(平均)レベルと、入力ストリームのより大きい(maximum)チャンネルのどちらが低減に影響するかを選びます。既定は average です。
detection
peak の場合は厳密な信号を取り、rms の場合は RMS を取ります。既定は rms で、たいていより滑らかになります。
mix
圧縮された信号を出力でどれだけ使うか。既定は 1。範囲は 0 から 1 です。
8.2.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.3 acontrast
シンプルな音声ダイナミックレンジの圧縮/拡張フィルタです。
このフィルタは次のオプションを受け付けます。
contrast
コントラストを設定します。既定は 33。許容範囲は 0 から 100 です。
8.4 acopy
入力音声ソースを変更せずにそのまま出力にコピーします。これは主にテスト目的で役立ちます。
8.5 acrossfade
ある入力音声ストリームから別の入力音声ストリームへクロスフェードを適用します。クロスフェードは、第 1 ストリームの終わり付近で指定した長さにわたって適用されます。
このフィルタは次のオプションを受け付けます。
inputs, n
クロスフェードする入力の数を指定します。複数の入力をクロスフェードする場合、各入力は concat フィルタと同様に順番に連結され、クロスフェードされます。既定は 2 です。
nb_samples, ns
クロスフェード効果が続くサンプル数を指定します。クロスフェード効果の終わりには、第 1 入力の音声は完全に無音になります。既定は 44100 です。
duration, d
クロスフェード効果の長さを指定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。既定では長さは nb_samples によって決まります。このオプションを設定すると、nb_samples の代わりに使われます。
overlap, o
第 1 ストリームの終わりと第 2 ストリームの始まりを重ねるかどうか。既定では有効です。
curve1
第 1 ストリームのクロスフェード遷移のカーブを設定します。
curve2
第 2 ストリームのクロスフェード遷移のカーブを設定します。
利用可能なカーブの種類の説明については afade フィルタの説明を参照してください。
8.5.1 Examples
-
ある入力から別の入力へクロスフェードする:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac -
ある入力から別の入力へ、ただし重ねずにクロスフェードする:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
複数の入力をそれぞれの間でクロスフェードしながら連結する:
ffmpeg -i first.flac -i second.flac -i third.flac -filter_complex acrossfade=n=3 output.flac
8.6 acrossover
音声ストリームを複数のバンドに分割します。
このフィルタは音声ストリームを 2 つ以上の周波数帯に分割します。すべてのストリームを再び合算すると、フラットな出力が得られます。
このフィルタは次のオプションを受け付けます。
split
分割周波数を設定します。これらは正かつ昇順でなければなりません。
order
各バンド分割のフィルタ次数を設定します。これはフィルタのロールオフ、つまりフィルタ伝達関数の急峻さを制御します。利用可能な値は次のとおりです。
‘2nd’
12 dB/オクターブ。
‘4th’
24 dB/オクターブ。
‘6th’
36 dB/オクターブ。
‘8th’
48 dB/オクターブ。
‘10th’
60 dB/オクターブ。
‘12th’
72 dB/オクターブ。
‘14th’
84 dB/オクターブ。
‘16th’
96 dB/オクターブ。
‘18th’
108 dB/オクターブ。
‘20th’
120 dB/オクターブ。
既定は 4th です。
level
入力ゲインレベルを設定します。許容範囲は 0 から 1。既定値は 1 です。
gains
各バンドの出力ゲインを設定します。既定値はすべてのバンドで 1 です。
precision
サンプルを処理する際に使う精度を設定します。
auto
他のフィルタに応じて内部のサンプル形式を自動的に選びます。
float
常に単精度浮動小数点のサンプル形式を使います。
double
常に倍精度浮動小数点のサンプル形式を使います。
既定値は auto です。
8.6.1 Examples
-
入力音声ストリームを、分割周波数 1500 Hz で 2 つのバンド(低域と高域)に分割し、各バンドを別々のストリームにする:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav -
上記と同じだが、フィルタ次数を高くする:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav -
上記と同じだが、さらに中域バンド(1500 から 8000 の間の周波数)も追加する:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
8.7 acrusher
音声のビット解像度を下げます。
このフィルタは機能を拡張したビットクラッシャーです。ビットクラッシャーは、音声信号をサンプリングするビット数を聴感上で減らすために使われます。これはビット深度を実際に変えるわけではなく、効果を生み出すだけです。ビット深度を下げた素材は、より荒く「デジタル」な響きになります。このフィルタは、離散的なビット深度ではなく連続値へ丸めることもできます。さらに D/C オフセットを持ち、これにより信号の下半分と上半分で異なるクラッシュが生じます。アンチエイリアシング設定により、「より柔らかい」クラッシュ音を生み出せます。
このフィルタのもう 1 つの特徴は対数モードです。この設定は、ビット間の距離を線形から対数へ切り替えます。その結果、たとえば低レベルの信号をゲートしない、はるかに「自然な」響きのクラッシャーになります。人間の耳は対数的な知覚をするため、この種のクラッシュのほうがずっと心地よく感じられます。対数クラッシュもアンチエイリアスできます。
このフィルタは次のオプションを受け付けます。
level_in
level in を設定します。
level_out
level out を設定します。
bits
ビットの低減量を設定します。
mix
ミックス量を設定します。
mode
線形 lin または対数 log を指定できます。
dc
DC を設定します。
aa
アンチエイリアシングを設定します。
samples
サンプルの低減量を設定します。
lfo
LFO を有効にします。既定では無効です。
lforange
LFO の範囲を設定します。
lforate
LFO のレートを設定します。
8.7.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.8 acue
指定したウォールクロックのタイムスタンプまで音声フィルタ処理を遅延させます。cue フィルタを参照してください。
8.9 adeclick
入力音声からインパルス性ノイズを除去します。
インパルス性ノイズとして検出されたサンプルは、自己回帰モデリングを使って補間されたサンプルで置き換えられます。
window, w
ウィンドウサイズをミリ秒単位で設定します。許容範囲は 10 から 100 です。既定値は 55 ミリ秒です。これは一度に処理されるウィンドウのサイズを設定します。
overlap, o
ウィンドウの重なりを、ウィンドウサイズに対する割合(パーセント)で設定します。許容範囲は 50 から 95 です。既定値は 75 パーセントです。これを非常に高い値に設定すると、インパルス性ノイズの除去は向上しますが、処理全体がはるかに遅くなります。
arorder, a
自己回帰の次数を、ウィンドウサイズに対する割合(パーセント)で設定します。許容範囲は 0 から 25 です。既定値は 2 パーセントです。このオプションは、近隣の良好なサンプルを使った補間サンプルの品質も制御します。
threshold, t
しきい値を設定します。許容範囲は 1 から 100 です。既定値は 2 です。これは除去されるインパルス性ノイズの強さを制御します。値が低いほど、より多くのサンプルがインパルス性ノイズとして検出されます。
burst, b
バーストの融合を、ウィンドウサイズに対する割合(パーセント)で設定します。許容範囲は 0 から 10 です。既定値は 2 です。ノイズとして検出された 2 つのサンプルの間隔がこの値より小さい場合、その 2 つのサンプルの間にあるサンプルもノイズとして検出されます。
method, m
重ね合わせの方式を設定します。
次の値を受け付けます。
add, a
オーバーラップ加算(overlap-add)方式を選びます。この方式では、補間されていないサンプルもわずかに変化します。
save, s
オーバーラップ保存(overlap-save)方式を選びます。補間されていないサンプルは変化しません。
既定値は a です。
8.10 adeclip
入力音声からクリップしたサンプルを除去します。
クリップとして検出されたサンプルは、自己回帰モデリングを使って補間されたサンプルで置き換えられます。
window, w
ウィンドウサイズをミリ秒単位で設定します。許容範囲は 10 から 100 です。既定値は 55 ミリ秒です。これは一度に処理されるウィンドウのサイズを設定します。
overlap, o
ウィンドウの重なりを、ウィンドウサイズに対する割合(パーセント)で設定します。許容範囲は 50 から 95 です。既定値は 75 パーセントです。
arorder, a
自己回帰の次数を、ウィンドウサイズに対する割合(パーセント)で設定します。許容範囲は 0 から 25 です。既定値は 8 パーセントです。このオプションは、近隣の良好なサンプルを使った補間サンプルの品質も制御します。
threshold, t
しきい値を設定します。許容範囲は 1 から 100 です。既定値は 10 です。値を高くすると、クリップの検出がより緩やかになります。
hsize, n
クリップ検出に使うヒストグラムのサイズを設定します。許容範囲は 100 から 9999 です。既定値は 1000 です。値を高くすると、クリップの検出がより緩やかになります。
method, m
重ね合わせの方式を設定します。
次の値を受け付けます。
add, a
オーバーラップ加算(overlap-add)方式を選びます。この方式では、補間されていないサンプルもわずかに変化します。
save, s
オーバーラップ保存(overlap-save)方式を選びます。補間されていないサンプルは変化しません。
既定値は a です。
8.11 adecorrelate
入力音声ストリームにデコリレーション(相関除去)を適用します。
このフィルタは次のオプションを受け付けます。
stages
フィルタリングのデコリレーション段数を設定します。指定できる範囲は 1 から 16 です。既定値は 6 です。
seed
チャンネル間で遅延を設定する際に使う乱数シードを設定します。
8.12 adelay
1つ以上の音声チャンネルを遅延させます。
遅延されたチャンネルのサンプルは無音で埋められます。
このフィルタは次のオプションを受け付けます。
delays
各チャンネルの遅延量をミリ秒単位で ’|’ 区切りのリストとして設定します。使われなかった遅延は黙って無視されます。指定した遅延の数がチャンネル数より少ない場合、残りのチャンネルは遅延されません。正確なサンプル数で遅延させたい場合は数値に ’S’ を付けます。代わりに秒単位で遅延させたい場合は数値に ’s’ を付けます。
all
最後に設定した遅延を残りすべてのチャンネルに使います。既定では無効です。これを有効にすると、オプション delays の解釈方法が変わります。
8.12.1 Examples
-
第1チャンネルを1.5秒、第3チャンネルを0.5秒遅延させ、第2チャンネル(および存在しうる他のチャンネル)は変更しません。
adelay=1500|0|500 -
第2チャンネルを500サンプル、第3チャンネルを700サンプル遅延させ、第1チャンネル(および存在しうる他のチャンネル)は変更しません。
adelay=0|500S|700S -
すべてのチャンネルを同じサンプル数だけ遅延させます。
adelay=delays=64S:all=1
8.13 adenorm
極めて低レベルのノイズを加えることで、音声中のデノーマルを是正します。
このフィルタは、デノーマルを生み出しうるフィルタより前に置く必要があります。
受け付けるパラメータの説明は次のとおりです。
level
加えるノイズのレベルを dB で設定します。既定値は -351 です。指定できる範囲は -451 から -90 です。
type
加えるノイズの種類を設定します。
dc
DC信号を加えます。
ac
AC信号を加えます。
square
矩形波信号を加えます。
pulse
パルス信号を加えます。
既定値は dc です。
8.13.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.14 aderivative, aintegral
音声ストリームの微分/積分を計算します。
両方のフィルタを続けて適用すると、元の音声が得られます。
8.15 adrc
入力音声ストリームにスペクトルダイナミックレンジコントローラーフィルタを適用します。
受け付けるオプションの説明は次のとおりです。
transfer
伝達関数の式を設定します。
式には次の定数を含めることができます。
ch
現在のチャンネル番号
sn
現在のサンプル番号
nb_channels
チャンネル数
t
秒単位で表したタイムスタンプ
sr
サンプリングレート
p
現在の周波数のパワー値(dB)
f
現在の周波数(Hz)
既定値は p です。
attack
アタックをミリ秒単位で設定します。既定は 50 ミリ秒 です。指定できる範囲は 1 から 1000 ミリ秒 です。
release
リリースをミリ秒単位で設定します。既定は 100 ミリ秒 です。指定できる範囲は 5 から 2000 ミリ秒 です。
channels
フィルタリング対象のチャンネルを設定します。既定では音声ストリームの all(すべての)チャンネルがフィルタリングされます。
8.15.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.15.2 Examples
-
しきい値 -50 dB、比率 1:6 で全周波数にスペクトル圧縮を適用します。
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100 -
上と同様ですが、比率 1:2 でフロントセンターチャンネルのみをフィルタリングします。
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC -
しきい値 -85 dB、短いアタックと短いリリースで全周波数にスペクトルノイズゲートを適用します。
adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5 -
しきい値 -10 dB、比率 1:2 で全周波数にスペクトル展開を適用します。
adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100 -
全周波数に最大 -60 dB のリミッターを、アタック 2 ms、リリース 10 ms で適用します。
adrc=transfer='min(p,-60)':attack=2:release=10
8.16 adynamicequalizer
入力音声ストリームにダイナミックイコライゼーションを適用します。
受け付けるオプションの説明は次のとおりです。
threshold
イコライゼーションを発動させる検出しきい値を設定します。しきい値の検出には検出フィルタを使います。既定値は 0 です。指定できる範囲は 0 から 100 です。
dfrequency
イコライゼーションを発動させる検出フィルタに使う検出周波数を Hz で設定します。既定値は 1000 Hz です。指定できる範囲は 2 から 1000000 Hz です。
dqfactor
イコライゼーションを発動させる検出フィルタの検出共振係数を設定します。既定値は 1 です。指定できる範囲は 0.001 から 1000 です。
tfrequency
イコライゼーションフィルタのターゲット周波数を設定します。既定値は 1000 Hz です。指定できる範囲は 2 から 1000000 Hz です。
tqfactor
ターゲットのイコライゼーションフィルタのターゲット共振係数を設定します。既定値は 1 です。指定できる範囲は 0.001 から 1000 です。
attack
検出された信号が検出しきい値を超えてからイコライゼーションが始まるまでのミリ秒数を設定します。既定は 20 です。指定できる範囲は 1 から 2000 です。
release
検出された信号が検出しきい値を下回ってからイコライゼーションが終わるまでのミリ秒数を設定します。既定は 200 です。指定できる範囲は 1 から 2000 です。
ratio
イコライゼーションゲインを上げる比率を設定します。既定は 1 です。指定できる範囲は 0 から 30 です。
makeup
イコライゼーションゲインを上げるメイクアップオフセットを設定します。既定は 0 です。指定できる範囲は 0 から 100 です。
range
許容される最大のカット/ブースト量を設定します。既定は 50 です。指定できる範囲は 1 から 200 です。
mode
フィルタの動作モードを設定します。次のいずれかを指定できます。
‘listen’
分離した検出信号のみを出力します。
‘cutbelow’
検出しきい値より下の周波数をカットします。
‘cutabove’
検出しきい値より上の周波数をカットします。
‘boostbelow’
検出しきい値より下の周波数をブーストします。
‘boostabove’
検出しきい値より上の周波数をブーストします。
既定のモードは ‘cutbelow’ です。
dftype
検出フィルタの種類を設定します。次のいずれかを指定できます。
‘bandpass’ ‘lowpass’ ‘highpass’ ‘peak’
既定の種類は ‘bandpass’ です。
tftype
ターゲットフィルタの種類を設定します。次のいずれかを指定できます。
‘bell’ ‘lowshelf’ ‘highshelf’
既定の種類は ‘bell’ です。
auto
検出フィルタからしきい値を自動取得します。既定では ‘disabled’ です。このオプションは入力音声ストリームの特定の時間帯でしきい値を検出するのに役立ち、その場合はオプション値が実行時に変更されます。
指定できる値は次のとおりです。
‘disabled’
自動取得したしきい値の使用を無効にします。
‘off’
しきい値の取得を停止します。
‘on’
しきい値の取得を開始します。
‘adaptive’
スライディングウィンドウのエントロピーを計算して、しきい値を適応的に取得します。
precision
サンプル処理に使う精度を設定します。
auto
他のフィルタに応じて内部サンプルフォーマットを自動選択します。
float
常に単精度浮動小数点のサンプルフォーマットを使います。
double
常に倍精度浮動小数点のサンプルフォーマットを使います。
8.16.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.17 adynamicsmooth
入力音声ストリームにダイナミックスムージングを適用します。
受け付けるオプションの説明は次のとおりです。
sensitivity
周波数の変動に対する感度を設定します。既定は 2 です。指定できる範囲は 0 から 1e+06 です。
basefreq
スムージングの基準周波数を設定します。既定値は 22050 です。指定できる範囲は 2 から 1e+06 です。
8.17.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.18 aecho
入力音声にエコー効果を適用します。
エコーとは反射した音のことで、話したり叫んだりすると山々(や、ときには大きな建物)の間で自然に発生します。デジタルのエコー効果はこの挙動を模倣するもので、単一の楽器やボーカルの音に厚みを持たせるためによく使われます。元の信号と反射との時間差が delay、反射した信号の音量が decay です。複数のエコーはそれぞれ異なる遅延と減衰を持てます。
受け付けるパラメータの説明は次のとおりです。
in_gain
反射した信号の入力ゲインを設定します。既定は 0.6 です。
out_gain
反射した信号の出力ゲインを設定します。既定は 0.3 です。
delays
元の信号と反射との時間間隔をミリ秒単位で ’|’ 区切りのリストとして設定します。各 delay の指定できる範囲は (0 - 90000.0] です。既定は 1000 です。
decays
反射した信号の音量を ’|’ 区切りのリストとして設定します。各 decay の指定できる範囲は (0 - 1.0] です。既定は 0.5 です。
8.18.1 Examples
-
実際に演奏している楽器の2倍の数があるように聞こえさせます。
aecho=0.8:0.88:60:0.4 -
遅延が非常に短い場合は、(金属的な)ロボットが音楽を演奏しているように聞こえます。
aecho=0.8:0.88:6:0.4 -
遅延を長くすると、山の中の野外コンサートのように聞こえます。
aecho=0.8:0.9:1000:0.3 -
上と同様ですが、山がもう1つ増えた状態です。
aecho=0.8:0.9:1000|1800:0.3|0.25
8.19 aemphasis
音声エンファシスフィルタは、さまざまなフィルタ曲線を用いて、LPやエンファシス処理されたCDから直接取り込んだ素材を作り出す、あるいは復元します。例えば、音楽をビニール盤に記録するには、この記録媒体の欠点を補うために、まず信号をフィルタで変化させる必要があります。素材を再生する際には、周波数応答の歪みを復元するために逆フィルタを適用しなければなりません。
このフィルタは次のオプションを受け付けます。
level_in
入力ゲインを設定します。
level_out
出力ゲインを設定します。
mode
フィルタモードを設定します。素材を復元する場合は reproduction モード、それ以外は production モードを使います。既定は reproduction モードです。
type
フィルタの種類を設定します。媒体を選択します。次のいずれかを指定できます。
col
Columbia を選択します。
emi
EMI を選択します。
bsi
BSI (78RPM) を選択します。
riaa
RIAA を選択します。
cd
Compact Disc (CD) を選択します。
50fm
50µs (FM) を選択します。
75fm
75µs (FM) を選択します。
50kf
50µs (FM-KF) を選択します。
75kf
75µs (FM-KF) を選択します。
8.19.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.20 aeval
指定した式に従って音声信号を変更します。
このフィルタは1つ以上の式(各チャンネルに1つ)を受け付け、それらを評価して対応する音声信号の変更に用います。
次のパラメータを受け付けます。
exprs
各チャンネルごとの式を ’|’ 区切りのリストとして設定します。入力チャンネル数が式の数より多い場合、残りの出力チャンネルには最後に指定した式が使われます。
channel_layout, c
出力チャンネルレイアウトを設定します。指定しない場合、チャンネルレイアウトは式の数によって決まります。‘same’ に設定すると、既定で入力と同じチャンネルレイアウトを使います。
exprs 内の各式には次の定数および関数を含めることができます。
ch
現在の式のチャンネル番号
n
評価されたサンプルの番号(0から始まる)
s
サンプリングレート
t
評価されたサンプルの時刻(秒単位)
nb_in_channels nb_out_channels
入力および出力のチャンネル数
val(CH)
番号 CH の入力チャンネルの値
注意: このフィルタは遅いです。より高速な処理には専用のフィルタを使うべきです。
8.20.1 Examples
-
音量を半分にします。
aeval=val(ch)/2:c=same -
第2チャンネルの位相を反転します。
aeval=val(0)|-val(1)
8.21 aexciter
エキサイターは、元の信号に存在しない高音を生成するために使われます。これは信号の高調波歪みを作り出し、範囲を制限して元の信号に加えることで行われます。エキサイターは、イコライザーのように単純に高い周波数を上げるのではなく音声信号の高域端を持ち上げ、より「クリスプ」あるいは「ブリリアント」な音を作り出します。
このフィルタは次のオプションを受け付けます。
level_in
信号を処理する前の入力レベルを設定します。指定できる範囲は 0 から 64 です。既定値は 1 です。
level_out
信号を処理した後の出力レベルを設定します。指定できる範囲は 0 から 64 です。既定値は 1 です。
amount
元の信号に加える高調波の量を設定します。指定できる範囲は 0 から 64 です。既定値は 1 です。
drive
新たに生成する高調波の量を設定します。指定できる範囲は 0.1 から 10 です。既定値は 8.5 です。
blend
新たに生成する高調波のオクターブを設定します。指定できる範囲は -10 から 10 です。既定値は 0 です。
freq
高調波を生成する下限周波数を Hz で設定します。指定できる範囲は 2000 から 12000 Hz です。既定は 7500 Hz です。
ceil
高調波を生成する上限周波数を設定します。指定できる範囲は 9999 から 20000 Hz です。値が 10000 Hz より低い場合、上限は適用されません。
listen
元の信号をミュートし、加えた高調波のみを出力します。既定では無効です。
8.21.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.22 afade
入力音声にフェードイン/フェードアウト効果を適用します。
受け付けるパラメータの説明は次のとおりです。
type, t
効果の種類を指定します。フェードインなら in、フェードアウト効果なら out を指定できます。既定は in です。
start_sample, ss
フェード効果を適用し始める開始サンプルの番号を指定します。既定は 0 です。
nb_samples, ns
フェード効果を持続させるサンプル数を指定します。フェードイン効果の終わりでは出力音声は入力音声と同じ音量になり、フェードアウト遷移の終わりでは出力音声は無音になります。既定は 44100 です。
start_time, st
フェード効果の開始時刻を指定します。既定は 0 です。値は時間の長さとして指定しなければなりません。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。設定した場合、このオプションが start_sample の代わりに使われます。
duration, d
フェード効果の長さを指定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。フェードイン効果の終わりでは出力音声は入力音声と同じ音量になり、フェードアウト遷移の終わりでは出力音声は無音になります。既定では長さは nb_samples によって決まります。設定した場合、このオプションが nb_samples の代わりに使われます。
curve
フェード遷移の曲線を設定します。
次の値を受け付けます。
tri
三角形、線形の傾斜を選択します(既定)
qsin
サイン波の4分の1を選択します
hsin
サイン波の半分を選択します
esin
指数サイン波を選択します
log
対数を選択します
ipar
反転放物線を選択します
qua
二次を選択します
cub
三次を選択します
squ
平方根を選択します
cbr
立方根を選択します
par
放物線を選択します
exp
指数を選択します
iqsin
反転したサイン波の4分の1を選択します
ihsin
反転したサイン波の半分を選択します
dese
二重指数シート(double-exponential seat)を選択します
desi
二重指数シグモイド(double-exponential sigmoid)を選択します
losi
ロジスティックシグモイドを選択します
sinc
シンク関数(sine cardinal)を選択します
isinc
反転シンク関数を選択します
quat
四次を選択します
quatr
四次の根を選択します
qsin2
サイン波の4分の1の二乗を選択します
hsin2
サイン波の半分の二乗を選択します
nofade
フェードを適用しません
silence
フェードインの初期ゲイン、またはフェードアウトの最終ゲインを設定します。既定値は 0.0 です。
unity
フェードアウトの初期ゲイン、またはフェードインの最終ゲインを設定します。既定値は 1.0 です。
8.22.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.22.2 Examples
-
音声の最初の15秒をフェードインします:
afade=t=in:ss=0:d=15 -
900秒の音声の末尾25秒をフェードアウトします:
afade=t=out:st=875:d=25
8.23 afftdn
FFT を使って音声サンプルのノイズを除去します。
受け付けるパラメータの説明を以下に示します。
noise_reduction, nr
ノイズ低減量を dB で設定します。指定可能な範囲は 0.01 から 97 です。既定値は 12 dB です。
noise_floor, nf
ノイズフロアを dB で設定します。指定可能な範囲は -80 から -20 です。既定値は -50 dB です。
noise_type, nt
ノイズの種類を設定します。
以下の値を受け付けます:
white, w
ホワイトノイズを選択します。
vinyl, v
ビニール(レコード盤)ノイズを選択します。
shellac, s
シェラック(SP盤)ノイズを選択します。
custom, c
bn オプションで定義したカスタムノイズを選択します。
既定値はホワイトノイズです。
band_noise, bn
15 個の各バンドに対するカスタムバンドノイズプロファイルを設定します。バンドは ’ ’ または ’|’ で区切ります。
residual_floor, rf
残差フロアを dB で設定します。指定可能な範囲は -80 から -20 です。既定値は -38 dB です。
track_noise, tn
ノイズフロアの追従を有効にします。既定では無効です。有効にすると、ノイズフロアが自動的に調整されます。
track_residual, tr
残差の追従を有効にします。既定では無効です。
output_mode, om
出力モードを設定します。
以下の値を受け付けます:
input, i
入力をそのまま通します。
output, o
ノイズを除去した結果を通します。
noise, n
ノイズのみを通します。
既定値は output です。
adaptivity, ad
適応係数を設定します。各周波数ビンごとのゲイン調整にどれだけ速く適応するかを制御します。値 0 で即時適応となり、値が大きいほど反応が遅くなります。指定可能な範囲は 0 から 1 です。既定値は 0.5 です。
floor_offset, fo
ノイズフロアのオフセット係数を設定します。このオプションは、測定したノイズフロアに適用するオフセットを調整するために使います。ノイズフロアの追従が有効なときにのみ効果があります。指定可能な範囲は -2.0 から 2.0 です。既定値は 1.0 です。
noise_link, nl
マルチチャンネル音声に使うノイズリンクを設定します。
以下の値を受け付けます:
none
各チャンネルのノイズフロアをそのまま使います。
min
全チャンネルで測定した最小ノイズフロアを使います。
max
全チャンネルで測定した最大ノイズフロアを使います。
average
全チャンネルで測定した平均ノイズフロアを使います。
既定値は min です。
band_multiplier, bm
バンド乗数係数を設定します。バンドを周波数ビンにどれだけ広げるかを制御します。指定可能な範囲は 0.2 から 5 です。既定値は 1.25 です。
sample_noise, sn
入力音声からのノイズプロファイルの取り込みと測定を切り替えます。
以下の値を受け付けます:
start, begin
サンプルノイズの取り込みを開始します。
stop, end
サンプルノイズの取り込みを停止し、新しいノイズバンドプロファイルを測定します。
既定値は none です。
gain_smooth, gs
ゲインスムージングの空間半径を設定します。各周波数ビンに適用するゲインを平滑化するために使います。ランダムなミュージカルノイズのアーティファクトを低減するのに有効です。値を大きくするほどゲインの平滑化が強くなります。指定可能な範囲は 0 から 50 です。既定値は 0 です。
8.23.1 Commands
このフィルタは、上記オプションの一部をコマンドとしてサポートします。
8.23.2 Examples
-
ホワイトノイズを 10dB 低減し、あらかじめ測定した -40dB のノイズフロアを使います:
afftdn=nr=10:nf=-40 -
ホワイトノイズを 10dB 低減し、さらに初期ノイズフロアを -80dB に設定してノイズフロアの自動追従を有効にし、処理中にノイズフロアが徐々に変化するようにします:
afftdn=nr=10:nf=-80:tn=1 -
ノイズを 20dB 低減し、-40dB のノイズフロアを使いつつ、コマンドで入力音声の最初の 0.4 秒からノイズプロファイルを取得します:
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
8.24 afftfilt
周波数領域のサンプルに任意の式を適用します。
real
各チャンネルごとの周波数領域の実部の式を設定します。複数のチャンネルは ’|’ で区切ります。既定は "re" です。入力チャンネル数が式の数より多い場合、残りの出力チャンネルには最後に指定した式が使われます。
imag
各チャンネルごとの周波数領域の虚部の式を設定します。複数のチャンネルは ’|’ で区切ります。既定は "im" です。
real と imag の各式では、以下の定数と関数を使用できます:
sr
サンプリングレート
b
現在の周波数ビン番号
nb
利用可能なビンの数
ch
現在の式のチャンネル番号
chs
チャンネル数
pts
現在のフレームの pts
re
現在のチャンネルの周波数ビンの現在の実部
im
現在のチャンネルの周波数ビンの現在の虚部
real(b, ch)
位置 (bin, channel) の周波数ビンの実部の値を返します
imag(b, ch)
位置 (bin, channel) の周波数ビンの虚部の値を返します
win_size
ウィンドウサイズを設定します。指定可能な範囲は 16 から 131072 です。既定は 4096
win_func
ウィンドウ関数を設定します。
以下の値を受け付けます:
‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定は hann です。
overlap
ウィンドウのオーバーラップを設定します。1 に設定すると、選択したウィンドウ関数に推奨されるオーバーラップが選ばれます。既定は 0.75 です。
8.24.1 Examples
-
音声中にほぼ低域のみを残します:
afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'" -
ロボット風エフェクトを適用します:
afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75" -
ささやき声エフェクトを適用します:
afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8" -
位相シフトを適用します:
afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
8.25 afir
任意の有限インパルス応答(FIR)フィルタを適用します。
このフィルタは、最大 60 秒に及ぶ長い FIR フィルタを適用するために設計されています。
デジタルクロスオーバーフィルタ、ルームイコライゼーション、クロストークキャンセル、波面合成、オーラリゼーション、アンビオフォニクス、アンビソニックス、空間化のコンポーネントとして使用できます。
このフィルタは、最初のストリームより後のストリームを FIR 係数として使います。先頭以外のストリームが単一チャンネルの場合、それが先頭ストリームの全入力チャンネルに使われます。そうでない場合、先頭以外のストリームのチャンネル数は先頭ストリームのチャンネル数と同じでなければなりません。
以下のパラメータを受け付けます:
dry
ドライゲインを設定します。これは入力ゲインを設定します。
wet
ウェットゲインを設定します。これは最終的な出力ゲインを設定します。
length
インパルス応答フィルタの長さを設定します。既定は 1 で、IR 全体を処理することを意味します。
gtype
このオプションは非推奨であり、何も行いません。
irnorm
フィルタリング前に IR 係数へ適用するノルムを設定します。指定可能な範囲は -1 から 2 です。IR 係数は、このオプションで設定したベクトルノルムを計算して正規化されます。負の値の場合、ノルムは計算されず、IR 係数は一切変更されません。既定は 1 です。
irlink
マルチチャンネル IR の場合、このオプションを true に設定すると、すべての IR チャンネルが、irnorm オプションで設定した全 IR チャンネル係数の測定ゲインの最大値で正規化されます。無効にすると、各 IR チャンネルのすべての IR 係数が独立して正規化されます。既定は true です。
irgain
フィルタリング前に IR 係数へ適用するゲインを設定します。指定可能な範囲は 0 から 1 です。このゲインは irnorm オプションで適用される任意のゲインの後に適用されます。
irfmt
IR ストリームのフォーマットを設定します。mono または input を指定できます。既定は input です。
maxir
許容する最大のインパルス応答フィルタ長を秒で設定します。既定は 30 秒です。指定可能な範囲は 0.1 から 60 秒です。
response
このオプションは非推奨であり、何も行いません。
channel
このオプションは非推奨であり、何も行いません。
size
このオプションは非推奨であり、何も行いません。
rate
このオプションは非推奨であり、何も行いません。
minp
畳み込みに使う最小パーティションサイズを設定します。既定は 8192 です。指定可能な範囲は 1 から 65536 です。値を小さくすると、CPU 使用率の増加と引き換えにレイテンシが下がります。
maxp
畳み込みに使う最大パーティションサイズを設定します。既定は 8192 です。指定可能な範囲は 8 から 65536 です。値を小さくすると CPU 使用率が上がる場合があります。
nbirs
実行時に切り替え可能な入力インパルス応答ストリームの数を設定します。指定可能な範囲は 1 から 32 です。既定は 1 です。
ir
畳み込みに使う IR ストリームを設定します。0 から始まり、常に nbirs オプションで指定した値より小さくする必要があります。既定は 0 です。このオプションは実行時にコマンドで変更できます。
precision
サンプル処理時に使う精度を設定します。
auto
他のフィルタに応じて内部のサンプルフォーマットを自動で選びます。
float
常に単精度浮動小数点のサンプルフォーマットを使います。
double
常に倍精度浮動小数点のサンプルフォーマットを使います。
既定値は auto です。
irload
IR ストリームをいつ読み込むかを設定します。init または access を指定できます。前者は初期化時にすべての IR を読み込んで準備し、後者は特定の IR への最初のアクセス時に一度だけ読み込みます。既定は init です。
8.25.1 Examples
-
モノラル IR ファイルを 2 番目の入力としてストリームにリバーブを適用します。ffmpeg を使った完全なコマンド:
ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav -
入力ステレオストリームと、左右チャンネル用の 2 つのステレオインパルス応答を与えて、真のステレオ処理を適用します。インパルス応答ファイルは l_ir.wav と r_ir.wav という名前で、irnorm オプションの値を設定します:
"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3" -
上の例と同様だが、
irgainを推定値に明示的に設定し、irnormを無効にします:"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
8.26 aformat
入力音声に対する出力フォーマットの制約を設定します。フレームワークは変換を最小化するため、最も適切なフォーマットをネゴシエートします。
以下のパラメータを受け付けます:
sample_fmts, f
要求するサンプルフォーマットの ’|’ 区切りリストです。
sample_rates, r
要求するサンプリングレートの ’|’ 区切りリストです。
channel_layouts, cl
要求するチャンネルレイアウトの ’|’ 区切りリストです。
必要な構文については (ffmpeg-utils)the Channel Layout section in the ffmpeg-utils(1) manual を参照してください。
パラメータを省略した場合、すべての値が許可されます。
出力を符号なし 8 ビットまたは符号付き 16 ビットのステレオに強制します
aformat=sample_fmts=u8|s16:channel_layouts=stereo
8.27 afreqshift
入力音声サンプルに周波数シフトを適用します。
このフィルタは以下のオプションを受け付けます:
shift
周波数シフトを指定します。指定可能な範囲は -INT_MAX から INT_MAX です。既定値は 0.0 です。
level
最終出力に適用する出力ゲインを設定します。指定可能な範囲は 0.0 から 1.0 です。既定値は 1.0 です。
order
フィルタリングに使うフィルタ次数を設定します。指定可能な範囲は 1 から 16 です。既定値は 8 です。
8.27.1 Commands
このフィルタは、上記のすべてのオプションをコマンドとしてサポートします。
8.28 afwtdn
ウェーブレットを使って入力サンプルから広帯域ノイズを低減します。
受け付けるオプションの説明を以下に示します。
sigma
ノイズの sigma を設定します。指定可能な範囲は 0 から 1 です。既定値は 0 です。このオプションは入力サンプルに適用するノイズ除去の強さを制御します。最も有用な設定方法はデシベルによるもので、例えば -45dB のように指定します。
levels
ウェーブレット分解のレベル数を設定します。指定可能な範囲は 1 から 12 です。既定値は 10 です。低すぎる値に設定するとノイズ除去性能が著しく低下します。
wavet
入力フレームの分解に使うウェーブレットの種類を設定します。係数の数が少ない順から多い順に並んでいます。係数が多いほどフィルタリング速度は遅くなりますが、総じて品質は向上します。利用可能なウェーブレットは以下のとおりです:
‘sym2’ ‘sym4’ ‘rbior68’ ‘deb10’ ‘sym10’ ‘coif5’ ‘bl3’ percent
ノイズ除去をフルに行う割合を設定します。指定可能な範囲は 0 から 100 パーセントです。既定値は 85 パーセント、すなわち部分的なノイズ除去です。
profile
有効にすると、最初の入力フレームがノイズプロファイルとして使われます。最初のフレームのサンプルにノイズ以外が含まれていると、性能は著しく低下します。
adaptive
有効にすると、入力フレームがノイズの有無について分析されます。ノイズが高い確率で検出された場合、新たなノイズフレームが検出されるまで、そのフレームのプロファイルが以降のフレームの処理に使われます。
samples
単一フレームのサイズをサンプル数で設定します。指定可能な範囲は 512 から 65536 です。既定のフレームサイズは 8192 サンプルです。
softness
しきい値処理関数の内部で適用するソフトネスを設定します。指定可能な範囲は 0 から 10 です。既定のソフトネスは 1 です。
8.28.1 Commands
このフィルタは、上記のすべてのオプションをコマンドとしてサポートします。
8.29 agate
ゲートは主に信号の小さい部分を減衰させるために使われます。この種の信号処理は、有用な信号と信号の間にある邪魔なノイズを低減します。
ゲーティングは、選択したレベルしきい値(threshold)を下回る音量を検出し、それを ratio で設定した係数で割ることによって行われます。ノイズフロアの底は range で設定します。信号を厳密に操作すると波形が歪んでしまうため、減衰は時間をかけてなだらかに行うことができます。これは attack と release を設定することで行います。
attack は、減衰が始まる前に信号がしきい値を下回り続けなければならない時間を決めます。release は、減衰を再び弱めるために信号がしきい値を上回り続けなければならない時間を設定します。選択した attack 時間より短い信号はそのまま残されます。
level_in
フィルタリング前の入力レベルを設定します。既定は 1 です。指定可能な範囲は 0.015625 から 64 です。
mode
動作モードを設定します。upward または downward を指定できます。既定は downward です。upward モードに設定すると、信号の大きい部分が増幅され、ダイナミックレンジが上方向に広がります。downward の場合は、信号の小さい部分が減衰されます。
range
信号がしきい値を下回ったときのゲイン減衰量を設定します。既定は 0.06125 です。指定可能な範囲は 0 から 1 です。0 に設定すると減衰が無効になり、フィルタはエクスパンダーのように動作します。
threshold
信号がこのレベルを上回ると、ゲイン減衰が解除されます。既定は 0.125 です。指定可能な範囲は 0 から 1 です。
ratio
信号を減衰させる比率を設定します。既定は 2 です。指定可能な範囲は 1 から 9000 です。
attack
ゲイン減衰が止まる前に信号がしきい値を上回り続けなければならない時間をミリ秒で設定します。既定は 20 ミリ秒です。指定可能な範囲は 0.01 から 9000 です。
release
減衰が再び強まる前に信号がしきい値を下回り続けなければならない時間をミリ秒で設定します。既定は 250 ミリ秒です。指定可能な範囲は 0.01 から 9000 です。
makeup
処理後の信号の増幅量を設定します。既定は 1 です。指定可能な範囲は 1 から 64 です。
knee
しきい値付近の鋭いニーをカーブさせ、ゲイン減衰へより緩やかに入るようにします。既定は 2.828427125 です。指定可能な範囲は 1 から 8 です。
detection
検出に厳密な信号を使うか、RMS 的な信号を使うかを選びます。既定は rms です。peak または rms を指定できます。
link
全チャンネルの平均レベルと、より大きいチャンネルのどちらが減衰に影響するかを選びます。既定は average です。average または maximum を指定できます。
8.29.1 Commands
このフィルタは、上記のすべてのオプションをコマンドとしてサポートします。
8.30 aiir
任意の無限インパルス応答(IIR)フィルタを適用します。
以下のパラメータを受け付けます:
zeros, z
B/分子/ゼロ点/反射係数を設定します。
poles, p
A/分母/極/ラダー係数を設定します。
gains, k
チャンネルのゲインを設定します。
dry_gain
入力ゲインを設定します。
wet_gain
出力ゲインを設定します。
format, f
係数のフォーマットを設定します。
‘ll’
格子-ラダー関数
‘sf’
アナログ伝達関数
‘tf’
デジタル伝達関数
‘zp’
Z 平面のゼロ点/極、直交座標(既定)
‘pr’
Z 平面のゼロ点/極、極座標(ラジアン)
‘pd’
Z 平面のゼロ点/極、極座標(度)
‘sp’
S 平面のゼロ点/極
process, r
処理の種類を設定します。
‘d’
直接処理
‘s’
直列処理
‘p’
並列処理
precision, e
フィルタリング精度を設定します。
‘dbl’
倍精度浮動小数点(既定)
‘flt’
単精度浮動小数点
‘i32’
32 ビット整数
‘i16’
16 ビット整数
normalize, n
フィルタ係数を正規化します。既定では有効です。有効にすると、DC での振幅応答が 0dB に正規化されます。
mix
出力にフィルタ後の信号をどれだけ使うか。既定は 1 です。範囲は 0 から 1 です。
response
IR の周波数応答(振幅をマゼンタ、位相を緑、群遅延を黄)を追加の映像ストリームに表示します。既定では無効です。
channel
どの IR チャンネルの周波数応答を表示するかを設定します。既定では最初のチャンネルが表示されます。このオプションは response が有効なときにのみ使われます。
size
映像ストリームのサイズを設定します。このオプションは response が有効なときにのみ使われます。
tf および sf フォーマットの係数は空白で区切り、昇順で並べます。
zp フォーマットの係数は空白で区切り、係数の順序は問いません。zp フォーマットの係数は虚数単位 i を持つ複素数です。
チャンネルごとに異なる係数やゲインを指定できます。その場合は係数やゲインを ’|’ で区切ります。最後に指定した係数が、残りのすべてのチャンネルに使われます。
8.30.1 Examples
-
サンプリングレート 48000 Hz に対して、約 5000Hz の 2 極楕円ノッチを適用します:
aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d -
上と同じだが
zpフォーマットの場合:aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s -
アナログ伝達関数フォーマットを使い、3 次のアナログ正規化バターワースローパスフィルタを適用します:
aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
8.31 alimiter
リミッタは、入力信号が指定したしきい値を超えて上昇するのを防ぎます。このリミッタは先読み(lookahead)技術を使って信号の歪みを防止します。そのため、信号が処理された後にわずかな遅延が生じます。この遅延は設定したアタックタイムと同じであることに注意してください。
このフィルタは次のオプションを受け付けます。
level_in
入力ゲインを設定します。既定値は 1 です。
level_out
出力ゲインを設定します。既定値は 1 です。
limit
このレベルを超える信号をリミッタに通さないようにします。既定値は 1 です。
attack
リミッタがこの時間(ミリ秒単位)で減衰レベルに達します。既定値は 5 ミリ秒です。
release
リミッティングからこのミリ秒数で減衰 1.0 へ戻します。既定値は 50 ミリ秒です。
asc
常にゲインリダクションが必要な場合、ASC はリリースタイム内に減衰を 0 まで戻すのではなく、平均的な減衰レベルへ戻すように働きます。
asc_level
リリースタイムが ASC からどれだけ影響を受けるかを選択します。0 はリリースタイムをほとんど変化させず、1 はより長いリリースタイムを生みます。
level
出力信号を自動レベル調整します。既定では有効です。有効にすると音声を 0dB に正規化し直します。
latency
attack パラメータで設定した先読みバッファによって生じる遅延を補正します。また、ストリームが EOF に達したときに先読みバッファ内の有効な音声データをフラッシュします。
選択した設定によっては、このフィルタを適用する前に aresample で入力を 2 倍または 4 倍にアップサンプリングすることが推奨されます。
8.32 allpass
中心周波数(Hz 単位)frequency、フィルタ幅 width の 2 極オールパスフィルタを適用します。オールパスフィルタは、音声の周波数対振幅の関係を変えずに、周波数対位相の関係を変化させます。
このフィルタは次のオプションを受け付けます。
frequency, f
周波数を Hz 単位で設定します。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q ファクタ
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタの帯域幅を width_type で指定した単位で指定します。
mix, m
フィルタ後の信号を出力にどれだけ使うかを指定します。既定値は 1 です。範囲は 0 から 1 の間です。
channels, c
フィルタを適用するチャンネルを指定します。既定では利用可能なすべてのチャンネルにフィルタが適用されます。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC での振幅応答を 0dB に正規化します。
order, o
フィルタの次数を設定します。1 または 2 を指定できます。既定値は 2 です。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタリングの精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動で選択します。
s16
常に符号付き 16 ビットを使用します。
s32
常に符号付き 32 ビットを使用します。
f32
常に浮動小数点 32 ビットを使用します。
f64
常に浮動小数点 64 ビットを使用します。
8.32.1 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
allpass の frequency を変更します。コマンドの構文は次のとおりです: "frequency"
width_type, t
allpass の width_type を変更します。コマンドの構文は次のとおりです: "width_type"
width, w
allpass の width を変更します。コマンドの構文は次のとおりです: "width"
mix, m
allpass の mix を変更します。コマンドの構文は次のとおりです: "mix"
8.33 aloop
音声サンプルをループします。
このフィルタは次のオプションを受け付けます。
loop
ループ回数を設定します。この値を -1 にすると無限ループになります。既定値は 0 です。
size
サンプルの最大数を設定します。既定値は 0 です。
start
ループの最初のサンプルを設定します。既定値は 0 です。
time
ループ開始時刻を秒単位で設定します。start オプションが -1 に設定されている場合にのみ使用されます。
8.34 amerge
2 つ以上の音声ストリームを単一のマルチチャンネルストリームにマージします。
すべての入力は同じサンプリングレートとフォーマットでなければなりません。
入力の長さが同じでない場合、出力は最も短い入力で停止します。
このフィルタは次のオプションを受け付けます。
inputs
入力数を設定します。既定値は 2 です。
layout_mode
このオプションは、出力チャンネルレイアウトの決定方法と、マージ時に音声チャンネルを並べ替えるかどうかを制御します。
legacy
このフィルタが従来から振る舞ってきたモードであり、既定値です。
入力のチャンネルレイアウトが既知で互いに重ならず、したがって互換性がある場合、出力のチャンネルレイアウトはそれに応じて設定され、チャンネルは必要に応じて並べ替えられます。入力のチャンネルレイアウトが重なる、一部が不明、または ambisonics のような特殊なチャンネルレイアウトを使用している場合、出力は最初の入力のすべてのチャンネル、続いて 2 番目の入力のすべてのチャンネルをその順序で持ち、出力のチャンネルレイアウトは合計チャンネル数に対応する既定値になります。
たとえば、最初の入力が 2.1(FL+FR+LF)で 2 番目の入力が FC+BL+BR の場合、出力は 5.1 になり、チャンネルは次の順序になります: a1, a2, b1, a3, b2, b3(a1 は最初の入力の最初のチャンネル、b1 は 2 番目の入力の最初のチャンネル)。
一方、両方の入力がステレオの場合、出力チャンネルは既定の順序 a1, a2, b1, b2 になり、チャンネルレイアウトは任意に 4.0 に設定されますが、これは期待した値である場合もそうでない場合もあります。
reset
このモードは入力チャンネルレイアウトを無視し、チャンネルの並べ替えを行いません。出力は最初の入力のすべてのチャンネル、続いて 2 番目の入力のすべてのチャンネルをその順序で、以下同様に持ちます。
出力チャンネルレイアウトは合計チャンネル数のみを指定します。
normal
このモードは入力チャンネルからチャンネル名と指定情報を保持し、チャンネルの並べ替えを行いません。出力は最初の入力のすべてのチャンネル、続いて 2 番目の入力のすべてのチャンネルをその順序で、以下同様に持ちます。
8.34.1 Examples
-
2 つのモノラルファイルをステレオストリームにマージします:
amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge -
input.mkv に 1 つの映像ストリームと 6 つの音声ストリームがあると仮定して複数のマージを行います:
ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
8.35 amix
複数の音声入力を単一の出力にミックスします。
このフィルタは float サンプルのみをサポートすることに注意してください(amerge と pan の音声フィルタは多くのフォーマットをサポートします)。amix の入力が整数サンプルの場合、float サンプルへの変換を行うために aresample が自動的に挿入されます。
このフィルタは次のパラメータを受け付けます。
inputs
入力数。指定しない場合は既定で 2 になります。
duration
ストリームの終端をどのように決定するか。
longest
最も長い入力の長さ。(既定値)
shortest
最も短い入力の長さ。
first
最初の入力の長さ。
dropout_transition
入力ストリームが終了したときの音量再正規化のための遷移時間(秒単位)。既定値は 2 秒です。
weights
各入力音声ストリームの重みを、スペース区切りの数列として指定します。入力数に対して指定された重みが少ない場合、最後の重みが残りの入力に割り当てられます。各入力の既定の重みは 1 です。
normalize
サンプルの単純な加算だけでなく、常に入力をスケーリングします。このオプションを無効にした場合、このフィルタでの処理の前後で入力が正規化されていないと激しいクリッピングが起こるおそれがあるので注意してください。既定では有効です。
8.35.1 Examples
-
次の例は、3 つの入力音声ストリームを、最初の入力と同じ長さでドロップアウト遷移時間 3 秒の単一出力にミックスします:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT -
次の例は、1 つのボーカルと 1 つの音楽の入力音声ストリームを、最も長い入力と同じ長さの単一出力にミックスします。音楽はボーカルの 4 分の 1 の重みを持ち、入力は正規化されません:
ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
8.35.2 Commands
このフィルタは次のコマンドをサポートします。
weights normalize
構文は同名のオプションと同じです。
8.36 amultiply
1 番目の音声ストリームと 2 番目の音声ストリームを乗算し、結果を出力音声ストリームに格納します。乗算は、1 番目のストリームの各サンプルと、2 番目のストリームの同じ位置のサンプルを掛け合わせることで行われます。
この要素ごとの乗算によって、振幅フェードや振幅変調を作り出せます。
8.37 anequalizer
各チャンネル向けの高次パラメトリックマルチバンドイコライザです。
このフィルタは次のパラメータを受け付けます。
params
このオプション文字列は次の形式です: "cchn f=cf w=w g=g t=f | ..." 各イコライザバンドは ’|’ で区切ります。
chn
イコライゼーションを適用するチャンネル番号を設定します。入力にそのチャンネルがない場合、そのエントリは無視されます。
f
バンドの中心周波数を設定します。入力にその周波数がない場合、そのエントリは無視されます。
w
バンド幅を Hz 単位で設定します。
g
バンドゲインを dB 単位で設定します。
t
バンドのフィルタタイプを設定します。省略可能で、次の値を指定できます:
‘0’
Butterworth。これが既定値です。
‘1’
Chebyshev type 1。
‘2’
Chebyshev type 2。
curves
このオプションを有効にすると、anequalizer の周波数応答が映像ストリームに表示されます。
size
映像ストリームのサイズを設定します。curves オプションが有効な場合にのみ有用です。
mgain
表示される最大ゲインを設定します。curves オプションが有効な場合にのみ有用です。これを適切な値に設定すると、互いに近すぎる隣接バンドから導かれ、両方が有効なときに高いゲインを生むようなゲインを表示できるようになります。
fscale
映像出力に周波数応答を描画する際に使用する周波数スケールを設定します。linear(線形)または logarithmic(対数)を指定できます。既定値は logarithmic です。
colors
映像ストリームに表示される各チャンネルの曲線の色を設定します。これはスペースまたは ’|’ で区切った色名のリストです。認識されない色や指定のない色は白色に置き換えられます。
8.37.1 Examples
- Chebyshev type 1 フィルタを使い、最初の 2 チャンネルについて中心周波数 200Hz・幅 100Hz のゲインを 10 下げます:
anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
8.37.2 Commands
このフィルタは次のコマンドをサポートします。
change
既存のフィルタパラメータを変更します。コマンドの構文は次のとおりです: "fN|f=freq|w=width|g=gain"
fN は既存のフィルタ番号で、0 から始まります。該当するフィルタが存在しない場合はエラーが返されます。freq は新しい周波数パラメータを設定します。width は新しい幅パラメータを Hz 単位で設定します。gain は新しいゲインパラメータを dB 単位で設定します。
asendcmd を使った完全なフィルタ呼び出しは次のようになります: asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...
8.38 anlmdn
Non-Local Means アルゴリズムを使って、音声サンプルの広帯域ノイズを低減します。
各サンプルは、似た文脈を持つ他のサンプルを探すことで調整されます。この文脈の類似度は、サイズ p の周辺パッチを比較することで定義されます。パッチは、サンプルの周囲 r の範囲内で探索されます。
このフィルタは次のオプションを受け付けます。
strength, s
ノイズ除去の強さを設定します。指定できる範囲は 0.00001 から 10000 です。既定値は 0.00001 です。
patch, p
パッチ半径の長さを設定します。指定できる範囲は 1 から 100 ミリ秒です。既定値は 2 ミリ秒です。
research, r
探索半径の長さを設定します。指定できる範囲は 2 から 300 ミリ秒です。既定値は 6 ミリ秒です。
output, o
出力モードを設定します。
次の値を受け付けます。
i
入力をそのまま通します。
o
ノイズを除去した音声を通します。
n
ノイズのみを通します。
既定値は o です。
smooth, m
平滑化係数を設定します。既定値は 11 です。指定できる範囲は 1 から 1000 です。
8.38.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
8.39 anlmf, anlms
2 番目の音声ストリームを使って、1 番目の音声ストリームに Normalized Least-Mean-(Squares|Fourth) アルゴリズムを適用します。
この適応フィルタは、誤差信号(望ましい 2 番目の入力音声ストリームと、実際の信号である 1 番目の入力音声ストリームとの差)の最小二乗平均を生むようなフィルタ係数を見つけることで、望ましいフィルタを模倣するために使われます。
受け付けるオプションの説明は以下のとおりです。
order
フィルタの次数を設定します。
mu
フィルタの mu を設定します。
eps
フィルタの eps を設定します。
leakage
フィルタの leakage を設定します。
out_mode
次の値を受け付けます。
i
1 番目の入力を通します。
d
2 番目の入力を通します。
o
望ましい 2 番目の入力と、誤差信号の推定値との差を通します。
n
1 番目の入力と、誤差信号の推定値との差を通します。
e
誤差信号として推定されたサンプルを通します。
既定値は o です。
precision
サンプル処理に使用する精度を設定します。
auto
他のフィルタに応じて内部サンプルフォーマットを自動で選択します。
float
常に単精度浮動小数点のサンプルフォーマットを使用します。
double
常に倍精度浮動小数点のサンプルフォーマットを使用します。
8.39.1 Examples
- このフィルタの多くの用途の 1 つはノイズ低減で、入力音声を一定量だけ遅延させた同じサンプルでフィルタリングします。ステレオ音声での一例は次のとおりです:
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
8.39.2 Commands
このフィルタは、オプション order を除き、オプションと同じコマンドをサポートします。
8.40 anull
音声ソースをそのまま出力に通します。
8.41 apad
音声ストリームの末尾を無音でパディングします。
これは ffmpeg の -shortest と組み合わせて、音声ストリームを映像ストリームと同じ長さに延長するために使えます。
受け付けるオプションの説明は以下のとおりです。
packet_size
無音パケットのサイズを設定します。既定値は 4096 です。
pad_len
末尾に追加する無音のサンプル数を設定します。この値に達するとストリームが終了します。このオプションは whole_len と排他的です。
whole_len
出力音声ストリームの合計サンプル数の最小値を設定します。この値が入力音声の長さより長い場合、値に達するまで末尾に無音が追加されます。このオプションは pad_len と排他的です。
pad_dur
追加する無音サンプルの長さを指定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。非負の値が設定された場合にのみ使用されます。
whole_dur
出力音声ストリームの合計の長さの最小値を指定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。非負の値が設定された場合にのみ使用されます。この値が入力音声の長さより長い場合、値に達するまで末尾に無音が追加されます。このオプションは pad_dur と排他的です。
pad_len、whole_len、pad_dur、whole_dur のいずれのオプションも設定されていない場合、フィルタは入力ストリームの末尾に無音を無限に追加し続けます。
ffmpeg 4.4 以前では、pad_dur または whole_dur が 0 の場合も、フィルタが無音を無限に追加していたことに注意してください。
8.41.1 Examples
-
入力の末尾に 1024 サンプルの無音を追加します:
apad=pad_len=1024 -
音声出力に少なくとも 10000 サンプルが含まれるようにし、必要なら無音で入力をパディングします:
apad=whole_len=10000 -
ffmpegを使って音声入力を無音でパディングし、shortest オプション使用時に映像ストリームが常に最も短くなり、出力ファイルで最後まで変換されるようにします:ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
8.42 aphaser
入力音声にフェイジング効果を加えます。
フェイザフィルタは、周波数スペクトルに一連のピークと谷を作り出します。ピークと谷の位置は時間とともに変化するように変調され、掃引(スイープ)効果を生み出します。
受け付けるパラメータの説明は以下のとおりです。
in_gain
入力ゲインを設定します。既定値は 0.4 です。
out_gain
出力ゲインを設定します。既定値は 0.74 です。
delay
遅延をミリ秒単位で設定します。既定値は 3.0 です。
decay
ディケイを設定します。既定値は 0.4 です。
speed
変調速度を Hz 単位で設定します。既定値は 0.5 です。
type
変調タイプを設定します。既定値は triangular です。
次の値を受け付けます。
‘triangular, t’ ‘sinusoidal, s’
8.43 aphaseshift
入力音声サンプルに位相シフトを適用します。
このフィルタは次のオプションを受け付けます。
shift
位相シフトを指定します。指定できる範囲は -1.0 から 1.0 です。既定値は 0.0 です。
level
最終出力に適用する出力ゲインを設定します。指定できる範囲は 0.0 から 1.0 です。既定値は 1.0 です。
order
フィルタリングに使用するフィルタの次数を設定します。指定できる範囲は 1 から 16 です。既定値は 8 です。
8.43.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
8.44 apsnr
音声のピーク信号対雑音比(Peak Signal-to-Noise Ratio)を測定します。
このフィルタは 2 つの音声ストリームを入力に取り、1 番目の音声ストリームを出力します。結果はいずれかの入力の終端でチャンネルごとに dB 単位で出力されます。
8.45 apsyclip
入力音声ストリームに心理音響クリッパを適用します。
このフィルタは次のオプションを受け付けます。
level_in
入力ゲインを設定します。既定値は 1 です。範囲は [0.015625 - 64] です。
level_out
出力ゲインを設定します。既定値は 1 です。範囲は [0.015625 - 64] です。
clip
クリッピングの開始値を設定します。既定値は 0dBFS、つまり 1 です。
diff
差分サンプルのみを出力します。導入された歪みを聴き取るのに便利です。既定では無効です。
adaptive
適用する適応的な歪みの強さを設定します。既定値は 0.5 です。指定できる範囲は 0 から 1 です。
iterations
心理音響クリッパの反復回数を設定します。指定できる範囲は 1 から 20 です。既定値は 10 です。
level
出力信号を自動レベル調整します。既定では無効です。有効にすると音声を 0dBFS に正規化し直します。
8.45.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
8.46 apulsator
オーディオパルセータは、オートパンナとトレモロの中間のようなものです。ただし、面白いステレオ効果を生み出すこともできます。パルセータは、波形と位相をずらした LFO(低周波発振器)に基づいて、左右チャンネルの音量を変化させます。このフィルタには、左右チャンネル間のオフセットを定義する機能があります。オフセット 0 は、両方の LFO の形状が一致することを意味します。左右チャンネルは同等に変化し、従来のトレモロになります。オフセット 50% は、右チャンネルの形状がちょうど位相反転される(つまり周波数の半分だけ後方へずらされる)ことを意味し、パルセータはオートパンナとして働きます。1 では両方の曲線が再び一致します。その間のあらゆる設定では位相シフトが各段階の間を切れ目なく移動し、サイン波と三角波で「バイパス」のような音を生み出します。オフセットを(0.5 から始めて)1 に近づけるほど、信号が左スピーカーから右スピーカーへ速く移動します。
このフィルタは次のオプションを受け付けます。
level_in
入力ゲインを設定します。既定値は 1 です。範囲は [0.015625 - 64] です。
level_out
出力ゲインを設定します。既定値は 1 です。範囲は [0.015625 - 64] です。
mode
LFO が使用する波形の形状を設定します。sine、triangle、square、sawup、sawdown のいずれかを指定できます。既定値は sine です。
amount
変調を設定します。元の信号が LFO によってどれだけ影響を受けるかを定義します。
offset_l
左チャンネルのオフセットを設定します。既定値は 0 です。指定できる範囲は [0 - 1] です。
offset_r
右チャンネルのオフセットを設定します。既定値は 0.5 です。指定できる範囲は [0 - 1] です。
width
パルス幅を設定します。既定値は 1 です。指定できる範囲は [0 - 2] です。
timing
使用するタイミングモードを設定します。bpm、ms、hz のいずれかを指定できます。既定値は hz です。
bpm
bpm を設定します。既定値は 120 です。指定できる範囲は [30 - 300] です。timing が bpm に設定されている場合にのみ使用されます。
ms
ms を設定します。既定値は 500 です。指定できる範囲は [10 - 2000] です。timing が ms に設定されている場合にのみ使用されます。
hz
周波数を Hz 単位で設定します。既定値は 2 です。指定できる範囲は [0.01 - 100] です。timing が hz に設定されている場合にのみ使用されます。
8.47 aresample
入力音声を libswresample ライブラリを使って指定したパラメータにリサンプリングします。何も指定しなければ、フィルタは入力と出力の間で自動的に変換を行います。
このフィルタは音声データを伸縮させてタイムスタンプに合わせたり、無音を挿入したり音声を切り詰めたりしてタイムスタンプに合わせることもできます。これらを組み合わせることも、いずれも行わないこともできます。
このフィルタは [sample_rate:]resampler_options という構文を受け付けます。sample_rate はサンプリングレートを表し、resampler_options は ":" で区切った key=value の組のリストです。サポートされるオプションの一覧は ffmpeg-resampler(1) マニュアルの「(ffmpeg-resampler)Resampler Options」の節 を参照してください。
8.47.1 例
-
入力音声を 44100Hz にリサンプリングします:
aresample=44100 -
サンプルを伸縮させて指定したタイムスタンプに合わせます。ただし補正は1秒あたり最大1000サンプルとします:
aresample=async=1000
8.48 areverse
音声クリップを逆再生します。
警告: このフィルタはクリップ全体をバッファリングするためにメモリを必要とするので、トリミングを推奨します。
8.48.1 例
- クリップの先頭5秒を取り出して逆再生します。
atrim=end=5,areverse
8.49 arls
第1の音声ストリームに対し、第2の音声ストリームを使って再帰最小二乗(Recursive Least Squares)アルゴリズムを適用します。
この適応フィルタは、目的のフィルタを模倣するために使われます。誤差信号(目的とする第2入力音声ストリームと、実際の信号である第1入力音声ストリームとの差)の重み付き線形最小二乗コスト関数が最小になるようなフィルタ係数を、再帰的に求めることで実現します。
受け付けるオプションの説明は以下のとおりです。
order
フィルタ次数を設定します。
lambda
忘却係数を設定します。
delta
内部共分散行列を初期化する係数を設定します。
out_mode
フィルタの出力サンプルを設定します。以下の値を受け付けます:
i
第1入力をそのまま渡します。
d
第2入力をそのまま渡します。
o
目的とする第2入力と、誤差信号の推定値との差を渡します。
n
入力である第1入力と、誤差信号の推定値との差を渡します。
e
誤差信号の推定サンプルを渡します。
既定値は o です。
precision
サンプル処理に使う精度を設定します。
auto
他のフィルタに応じて内部のサンプルフォーマットを自動選択します。
float
常に単精度浮動小数点のサンプルフォーマットを使います。
double
常に倍精度浮動小数点のサンプルフォーマットを使います。
8.50 arnndn
リカレントニューラルネットワークを使って音声からノイズを低減します。
このフィルタは以下のオプションを受け付けます:
model, m
読み込む学習済みモデルファイルを設定します。このオプションは常に必須です。
mix
フィルタ処理したサンプルを最終出力にどれだけ混ぜるかを設定します。指定できる範囲は -1 から 1 です。既定値は 1 です。負の値は特別で、フィルタ処理したノイズを最終的なフィルタ出力にどれだけ残すかを設定します。このオプションを -1 にすると、入力信号から除去された実際のノイズを聞くことができます。
8.50.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.51 asdr
音声の信号対歪み比(Signal-to-Distortion Ratio)を測定します。
このフィルタは2つの音声ストリームを入力に取り、第1の音声ストリームを出力します。結果はいずれかの入力が終わった時点で、チャンネルごとに dB で出力されます。
8.52 asetnsamples
各出力音声フレームのサンプル数を設定します。
最後の出力パケットは異なるサンプル数を含むことがあります。入力音声が終端を通知したとき、フィルタは残りのサンプルをすべてフラッシュするためです。
このフィルタは以下のオプションを受け付けます:
nb_out_samples, n
各出力音声フレームのフレーム数を設定します。この数は 各チャンネルごと のサンプル数を意味します。既定値は 1024 です。
pad, p
1 を設定すると、フィルタは最後の音声フレームをゼロで埋め、最後のフレームが直前のフレームと同じサンプル数を含むようにします。既定値は 1 です。
例えば、フレームあたりのサンプル数を 1234 に設定し、最後のフレームのパディングを無効にするには、次のようにします:
asetnsamples=n=1234:p=0
8.53 asetrate
PCM データを変えずにサンプリングレートを設定します。これにより速度とピッチが変化します。
このフィルタは以下のオプションを受け付けます:
sample_rate, r
出力サンプリングレートを設定します。既定値は 44100 Hz です。
8.54 ashowinfo
入力音声フレームごとに、さまざまな情報を含む1行を表示します。入力音声は変更されません。
表示される行は key:value という形式の key/value の組の並びを含みます。
出力には以下の値が表示されます:
n
入力フレームの(連番の)番号で、0 から始まります。
pts
入力フレームの presentation timestamp で、time base 単位で表します。time base はフィルタの入力パッドに依存し、通常は 1/sample_rate です。
pts_time
入力フレームの presentation timestamp を秒で表したものです。
fmt
sample format です。
chlayout
チャンネルレイアウトです。
rate
音声フレームのサンプリングレートです。
nb_samples
フレーム内の(チャンネルあたりの)サンプル数です。
checksum
音声データの Adler-32 チェックサム(16進数で表示)。プレーナ音声の場合、データは全プレーンを連結したものとして扱います。
plane_checksums
各データプレーンに対する Adler-32 チェックサムのリストです。
8.55 asisdr
音声のスケール不変信号対歪み比(Scaled-Invariant Signal-to-Distortion Ratio)を測定します。
このフィルタは2つの音声ストリームを入力に取り、第1の音声ストリームを出力します。結果はいずれかの入力が終わった時点で、チャンネルごとに dB で出力されます。
8.56 asoftclip
音声のソフトクリッピングを適用します。
ソフトクリッピングは歪み効果の一種で、信号の振幅をハードクリッピングのような急峻な形ではなく、なめらかな曲線に沿って飽和させます。
このフィルタは以下のオプションを受け付けます:
type
ソフトクリッピングの種類を設定します。
以下の値を受け付けます:
hard tanh atan cubic exp alg quintic sin erf threshold
クリッピングを始めるしきい値を設定します。既定値は 0dB すなわち 1 です。
output
出力に適用するゲインを設定します。既定値は 0dB すなわち 1 です。
param
シグモイド関数を制御する追加パラメータを設定します。
oversample
オーバーサンプリング係数を設定します。
8.56.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.57 aspectralstats
音声チャンネルに関する周波数領域の統計情報を表示します。統計は音声チャンネルごと、音声フレームごとに計算され、メタデータとして保存されます。
以下のオプションを受け付けます:
win_size
ウィンドウ長をサンプル数で設定します。既定値は 2048 です。指定できる範囲は 32 から 65536 です。
win_func
窓関数を設定します。
以下の値を受け付けます:
‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hann です。
overlap
ウィンドウのオーバーラップを設定します。指定できる範囲は 0 から 1 です。既定値は 0.5 です。
measure
測定するパラメータを選択します。メタデータのキーをフラグとして使えます。既定値は all で、すべてを測定します。none はすべての測定を無効にします。
各メタデータキーのリストは以下のとおりです:
mean variance centroid spread skewness kurtosis entropy flatness crest flux slope decrease rolloff
8.58 asr
自動音声認識(Automatic Speech Recognition)
このフィルタは音声認識に PocketSphinx を使います。このフィルタのコンパイルを有効にするには、FFmpeg を --enable-pocketsphinx を付けて configure する必要があります。
以下のオプションを受け付けます:
rate
入力音声のサンプリングレートを設定します。既定値は 16000 です。これは音声モデルと一致させる必要があり、そうでないと結果が悪くなります。
hmm
音響モデルファイルを含む辞書を設定します。
dict
発音辞書を設定します。
lm
言語モデルファイルを設定します。
lmctl
言語モデルセットを設定します。
lmname
使用する言語モデルを設定します。
logfn
ログメッセージの出力先を設定します。
このフィルタは認識した音声を、フレームメタデータ lavfi.asr.text としてエクスポートします。
8.59 astats
音声チャンネルに関する時間領域の統計情報を表示します。統計は音声チャンネルごとに計算・表示され、該当する場合は全体の値も与えられます。
以下のオプションを受け付けます:
length
ピークおよびトラフの RMS 測定に使う、短いウィンドウ長を秒で指定します。既定値は 0.05(50ミリ秒)です。指定できる範囲は [0 - 10] です。
metadata
メタデータの注入を設定します。すべてのメタデータキーには lavfi.astats.X という接頭辞が付きます。X は 1 から始まるチャンネル番号、または文字列 Overall です。既定では無効です。
各チャンネルで利用できるキーは次のとおりです: Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough Zero_crossings Zero_crossings_rate
Overall では次のとおりです: Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough
例えば、完全なキーは lavfi.astats.1.DC_offset や lavfi.astats.Overall.Peak_count のようになります。
各キーの説明は以下を参照してください。
reset
累積統計をリセットするまでに計算するフレーム数を設定します。既定では無効です。
measure_perchannel
チャンネルごとに測定するパラメータを選択します。メタデータのキーをフラグとして使えます。既定値は all で、すべてを測定します。none はチャンネルごとの測定をすべて無効にします。
measure_overall
全体で測定するパラメータを選択します。メタデータのキーをフラグとして使えます。既定値は all で、すべてを測定します。none は全体の測定をすべて無効にします。
測定キーの説明は以下のとおりです:
none
測定なし
all
すべての測定
Bit_depth
音声全体のビット深度、すなわち各サンプルに使われるビット数
Crest_factor
ピーク対 RMS レベルの標準的な比(注: dB ではない)
DC_offset
ゼロからの平均振幅変位
Dynamic_range
測定した音声のダイナミックレンジ(dB)
Entropy
音声全体で測定したエントロピーです。1.0 に近いエントロピーは、通常ホワイトノイズで測定されます。
Flat_factor
信号のピークレベル(すなわち Min_level または Max_level)におけるフラットさ(すなわち同じ値が連続するサンプル)。
Max_difference
連続する2サンプル間の最大差
Max_level
最大サンプルレベル
Mean_difference
連続する2サンプル間の平均差、すなわち連続する2サンプル間の各差の平均
Min_difference
連続する2サンプル間の最小差
Min_level
最小サンプルレベル
Noise_floor
短いウィンドウにわたって dBFS で測定した、局所的なピークの最小値
Noise_floor_count
信号が Noise floor に達した回数(サンプル数ではない)
Number_of_Infs
無限大の値を持つサンプル数
Number_of_NaNs
NaN(非数)の値を持つサンプル数
Number_of_denormals
非正規化数(subnormal)の値を持つサンプル数
Number_of_samples
サンプル数
Peak_count
信号が Min_level または Max_level に達した回数(サンプル数ではない)
Abs_Peak_count
信号から取った絶対値サンプルが、Min_level と Max_level のうち最大の絶対値に達した回数
Peak_level
dBFS で測定した標準的なピークレベル
RMS_difference
連続する2サンプル間の二乗平均平方根(RMS)差
RMS_level
dBFS で測定した標準的な RMS レベル
RMS_peak RMS_trough
短いウィンドウにわたって測定した RMS レベルのピーク値とトラフ値です。dBFS で測定します。
Zero crossings
波形がゼロレベル軸を横切る点の数
Zero crossings rate
ゼロクロッシングの数と音声サンプル数の比
8.60 asubboost
サブウーファー周波数をブーストします。
このフィルタは以下のオプションを受け付けます:
dry
ドライゲインを設定します。元の信号をどれだけ残すか。指定できる範囲は 0 から 1 です。既定値は 1.0 です。
wet
ウェットゲインを設定します。フィルタ処理した信号をどれだけ残すか。指定できる範囲は 0 から 1 です。既定値は 1.0 です。
boost
最大ブースト係数を設定します。指定できる範囲は 1 から 12 です。既定値は 2 です。
decay
ディレイラインの減衰ゲイン値を設定します。指定できる範囲は 0 から 1 です。既定値は 0.0 です。
feedback
ディレイラインのフィードバックゲイン値を設定します。指定できる範囲は 0 から 1 です。既定値は 0.9 です。
cutoff
カットオフ周波数を Hz で設定します。指定できる範囲は 50 から 900 です。既定値は 100 です。
slope
カットオフ周波数のスロープ量を設定します。指定できる範囲は 0.0001 から 1 です。既定値は 0.5 です。
delay
ディレイを設定します。指定できる範囲は 1 から 100 です。既定値は 20 です。
channels
処理するチャンネルを設定します。既定値は利用可能なすべてです。
8.60.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.61 asubcut
サブウーファー周波数をカットします。
このフィルタは highpass フィルタよりも急峻なロールオフをカスタムに設定でき、そのため阻止帯域の周波数成分をより減衰させることができます。
このフィルタは以下のオプションを受け付けます:
cutoff
カットオフ周波数を Hz で設定します。指定できる範囲は 2 から 200 です。既定値は 20 です。
order
フィルタ次数を設定します。利用できる値は 3 から 20 です。既定値は 10 です。
level
入力ゲインレベルを設定します。指定できる範囲は 0 から 1 です。既定値は 1 です。
8.61.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.62 asupercut
超高域周波数をカットします。
このフィルタは以下のオプションを受け付けます:
cutoff
カットオフ周波数を Hz で設定します。指定できる範囲は 20000 から 192000 です。既定値は 20000 です。
order
フィルタ次数を設定します。利用できる値は 3 から 20 です。既定値は 10 です。
level
入力ゲインレベルを設定します。指定できる範囲は 0 から 1 です。既定値は 1 です。
8.62.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.63 asuperpass
高次のバターワース・バンドパスフィルタを適用します。
このフィルタは以下のオプションを受け付けます:
centerf
中心周波数を Hz で設定します。指定できる範囲は 2 から 999999 です。既定値は 1000 です。
order
フィルタ次数を設定します。利用できる値は 4 から 20 です。既定値は 4 です。
qfactor
Q ファクターを設定します。指定できる範囲は 0.01 から 100 です。既定値は 1 です。
level
入力ゲインレベルを設定します。指定できる範囲は 0 から 2 です。既定値は 1 です。
8.63.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.64 asuperstop
高次のバターワース・バンドストップフィルタを適用します。
このフィルタは以下のオプションを受け付けます:
centerf
中心周波数を Hz で設定します。指定できる範囲は 2 から 999999 です。既定値は 1000 です。
order
フィルタ次数を設定します。利用できる値は 4 から 20 です。既定値は 4 です。
qfactor
Q ファクターを設定します。指定できる範囲は 0.01 から 100 です。既定値は 1 です。
level
入力ゲインレベルを設定します。指定できる範囲は 0 から 2 です。既定値は 1 です。
8.64.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.65 atempo
音声のテンポを調整します。
このフィルタはちょうど1つのパラメータ、音声のテンポを受け付けます。指定しなければ、フィルタは公称 1.0 のテンポを仮定します。テンポは [0.5, 100.0] の範囲でなければなりません。
なお、2 を超えるテンポでは、サンプルをブレンドするのではなく一部を間引きます。何らかの理由でこれが問題になる場合は、atempo のインスタンスを複数連鎖させて目的の積となるテンポを得ることが常に可能です。
8.65.1 例
-
音声をテンポ 80% に遅くします:
atempo=0.8 -
音声をテンポ 300% に速くします:
atempo=3 -
atempo のインスタンスを2つ連鎖させて、音声をテンポ 300% に速くします:
atempo=sqrt(3),atempo=sqrt(3)
8.65.2 コマンド
このフィルタは以下のコマンドをサポートします:
tempo
フィルタのテンポ倍率を変更します。コマンドの構文は : "tempo"
8.66 atilt
音声ストリームにスペクトルチルトフィルタを適用します。
このフィルタは、指定した任意の周波数帯域にわたって任意のスペクトルロールオフ・スロープを適用します。
このフィルタは以下のオプションを受け付けます:
freq
チルトの中心周波数を Hz で設定します。既定値は 10000 Hz です。
slope
チルトのスロープ方向を設定します。既定値は 0 です。指定できる範囲は -1 から 1 です。
width
チルトの幅を設定します。既定値は 1000 です。指定できる範囲は 100 から 10000 です。
order
チルトフィルタの次数を設定します。
level
入力音量レベルを設定します。指定できる範囲は 0 から 4 です。既定値は 1 です。
8.66.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
8.67 atrim
入力をトリミングし、出力に入力の連続した一部分だけが含まれるようにします。
次のパラメータを受け付けます。
start
残す区間の開始タイムスタンプ(秒単位)。すなわち、タイムスタンプ start の音声サンプルが出力の最初のサンプルになります。
end
最初に破棄される音声サンプルの時刻を指定します。すなわち、タイムスタンプ end のサンプルの直前のサンプルが出力の最後のサンプルになります。
start_pts
start と同じですが、このオプションは開始タイムスタンプを秒ではなくサンプル単位で設定します。
end_pts
end と同じですが、このオプションは終了タイムスタンプを秒ではなくサンプル単位で設定します。
duration
出力の最大長(秒単位)。
start_sample
出力すべき最初のサンプルの番号。
end_sample
破棄すべき最初のサンプルの番号。
start、end、duration は時間長指定として表現します。(ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration の節を参照してください。
最初の2組の start/end オプションと duration オプションはフレームのタイムスタンプを参照するのに対し、_sample 系のオプションは単にフィルタを通過するサンプルを数える点に注意してください。したがって、タイムスタンプが誤っていたり、不正確だったり、ゼロから始まっていない場合、start/end_pts と start/end_sample は異なる結果になります。また、このフィルタはタイムスタンプを変更しない点にも注意してください。出力のタイムスタンプをゼロから始めたい場合は、atrim フィルタの後に asetpts フィルタを挿入してください。
複数の start または end オプションを設定した場合、このフィルタは貪欲に動作し、指定した制約のうち少なくとも1つに一致するすべてのサンプルを残そうとします。すべての制約を同時に満たす部分だけを残すには、atrim フィルタを複数連結してください。
既定ではすべての入力が残るようになっています。そのため、たとえば end の値だけを設定して、指定した時刻より前のすべてを残すといった使い方ができます。
例:
-
入力の2分目以外をすべて破棄する:
ffmpeg -i INPUT -af atrim=60:120 -
最初の1000サンプルだけを残す:
ffmpeg -i INPUT -af atrim=end_sample=1000
8.68 axcorrelate
2つの入力音声ストリーム間の、正規化された窓付き相互相関を計算します。
得られるサンプルは常に -1 から 1 の範囲(両端を含む)になります。結果が 1 の場合、選択した区間で2つの入力サンプルが強く相関していることを意味します。結果が 0 の場合はまったく相関していないことを意味します。結果が -1 の場合、2つの入力サンプルが逆位相であり、互いに打ち消し合うことを意味します。
このフィルタは次のオプションを受け付けます。
size
相互相関を計算する区間のサイズを設定します。既定値は 256 です。指定できる範囲は 2 から 131072 です。
algo
相互相関のアルゴリズムを設定します。slow、fast、best のいずれかを指定できます。既定値は best です。fast アルゴリズムは、任意の区間における平均値が常にゼロであると仮定するため、計算量がはるかに少なくて済みます。これは一般には正しくありませんが、典型的な音声ストリームでは妥当です。
8.68.1 Examples
- ステレオ音声ストリームのチャンネル間の相関を計算する:
ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
8.69 bandpass
中心周波数 frequency、(3dB点の)帯域幅 width をもつ2極バターワース帯域通過フィルタを適用します。csg オプションは、既定(定 0dB ピークゲイン)の代わりに定スカートゲイン(ピークゲイン = Q)を選択します。フィルタのロールオフは1オクターブあたり 6dB(1ディケードあたり 20dB)です。
このフィルタは次のオプションを受け付けます。
frequency, f
フィルタの中心周波数を設定します。既定値は 3000 です。
csg
1 に設定すると定スカートゲインになります。既定値は 0 です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q値
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタの帯域幅を width_type の単位で指定します。
mix, m
フィルタ処理した信号を出力にどれだけ使うか。既定値は 1 です。範囲は 0 から 1 です。
channels, c
フィルタを適用するチャンネルを指定します。既定ではすべての利用可能なチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選択します。
s16
常に符号付き16ビットを使用します。
s32
常に符号付き32ビットを使用します。
f32
常に32ビット浮動小数点を使用します。
f64
常に64ビット浮動小数点を使用します。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近の値に達して打ち切られる長さよりも大きく)設定すると、フィルタ処理は線形位相になります。大きさが足りない場合は、不快なアーティファクトを生じます。
なお、この値を非ゼロに設定した場合、フィルタの遅延はちょうどこのサンプル数になります。
8.69.1 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
bandpass の frequency を変更します。コマンドの構文は次のとおりです: "frequency"
width_type, t
bandpass の width_type を変更します。コマンドの構文は次のとおりです: "width_type"
width, w
bandpass の width を変更します。コマンドの構文は次のとおりです: "width"
mix, m
bandpass の mix を変更します。コマンドの構文は次のとおりです: "mix"
8.70 bandreject
中心周波数 frequency、(3dB点の)帯域幅 width をもつ2極バターワース帯域阻止フィルタを適用します。フィルタのロールオフは1オクターブあたり 6dB(1ディケードあたり 20dB)です。
このフィルタは次のオプションを受け付けます。
frequency, f
フィルタの中心周波数を設定します。既定値は 3000 です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q値
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタの帯域幅を width_type の単位で指定します。
mix, m
フィルタ処理した信号を出力にどれだけ使うか。既定値は 1 です。範囲は 0 から 1 です。
channels, c
フィルタを適用するチャンネルを指定します。既定ではすべての利用可能なチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選択します。
s16
常に符号付き16ビットを使用します。
s32
常に符号付き32ビットを使用します。
f32
常に32ビット浮動小数点を使用します。
f64
常に64ビット浮動小数点を使用します。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近の値に達して打ち切られる長さよりも大きく)設定すると、フィルタ処理は線形位相になります。大きさが足りない場合は、不快なアーティファクトを生じます。
なお、この値を非ゼロに設定した場合、フィルタの遅延はちょうどこのサンプル数になります。
8.70.1 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
bandreject の frequency を変更します。コマンドの構文は次のとおりです: "frequency"
width_type, t
bandreject の width_type を変更します。コマンドの構文は次のとおりです: "width_type"
width, w
bandreject の width を変更します。コマンドの構文は次のとおりです: "width"
mix, m
bandreject の mix を変更します。コマンドの構文は次のとおりです: "mix"
8.71 bass, lowshelf
標準的なハイファイ機器のトーンコントロールに似た応答をもつ2極シェルビングフィルタを使って、音声の低音(低い)周波数をブーストまたはカットします。これはシェルビングイコライゼーション(EQ)とも呼ばれます。
このフィルタは次のオプションを受け付けます。
gain, g
0 Hz でのゲインを指定します。実用的な範囲は約 -20(大きくカット)から +20(大きくブースト)です。正のゲインを使うときはクリッピングに注意してください。
frequency, f
フィルタの中心周波数を設定します。これにより、ブーストまたはカットする周波数範囲を広げたり狭めたりできます。既定値は 100 Hz です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q値
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタのシェルフ遷移の急峻さを決めます。
poles, p
極の数を設定します。既定値は 2 です。
mix, m
フィルタ処理した信号を出力にどれだけ使うか。既定値は 1 です。範囲は 0 から 1 です。
channels, c
フィルタを適用するチャンネルを指定します。既定ではすべての利用可能なチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選択します。
s16
常に符号付き16ビットを使用します。
s32
常に符号付き32ビットを使用します。
f32
常に32ビット浮動小数点を使用します。
f64
常に64ビット浮動小数点を使用します。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近の値に達して打ち切られる長さよりも大きく)設定すると、フィルタ処理は線形位相になります。大きさが足りない場合は、不快なアーティファクトを生じます。
なお、この値を非ゼロに設定した場合、フィルタの遅延はちょうどこのサンプル数になります。
8.71.1 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
bass の frequency を変更します。コマンドの構文は次のとおりです: "frequency"
width_type, t
bass の width_type を変更します。コマンドの構文は次のとおりです: "width_type"
width, w
bass の width を変更します。コマンドの構文は次のとおりです: "width"
gain, g
bass の gain を変更します。コマンドの構文は次のとおりです: "gain"
mix, m
bass の mix を変更します。コマンドの構文は次のとおりです: "mix"
8.72 biquad
与えられた係数で biquad IIR フィルタを適用します。ここで b0、b1、b2 と a0、a1、a2 はそれぞれ分子係数と分母係数です。また channels, c はフィルタを適用するチャンネルを指定し、既定ではすべての利用可能なチャンネルが対象です。
8.72.1 Commands
このフィルタは次のコマンドをサポートします。
a0 a1 a2 b0 b1 b2
biquad のパラメータを変更します。コマンドの構文は次のとおりです: "value"
mix, m
フィルタ処理した信号を出力にどれだけ使うか。既定値は 1 です。範囲は 0 から 1 です。
channels, c
フィルタを適用するチャンネルを指定します。既定ではすべての利用可能なチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選択します。
s16
常に符号付き16ビットを使用します。
s32
常に符号付き32ビットを使用します。
f32
常に32ビット浮動小数点を使用します。
f64
常に64ビット浮動小数点を使用します。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近の値に達して打ち切られる長さよりも大きく)設定すると、フィルタ処理は線形位相になります。大きさが足りない場合は、不快なアーティファクトを生じます。
なお、この値を非ゼロに設定した場合、フィルタの遅延はちょうどこのサンプル数になります。
8.73 bs2b
Bauer によるステレオからバイノーラルへの変換で、ステレオ音声録音のヘッドホン再生を改善します。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libbs2b を付けて configure する必要があります。
次のパラメータを受け付けます。
profile
事前定義されたクロスフィードレベル。
default
既定レベル(fcut=700, feed=50)。
cmoy
Chu Moy 回路(fcut=700, feed=60)。
jmeier
Jan Meier 回路(fcut=650, feed=95)。
fcut
カット周波数(Hz 単位)。
feed
フィードレベル(Hz 単位)。
8.74 channelmap
入力チャンネルを新しい位置に再マッピングします。
次のパラメータを受け付けます。
map
入力から出力へチャンネルをマッピングします。引数は ’|’ 区切りのマッピングのリストで、各要素は in_channel-out_channel または in_channel の形式です。in_channel には入力チャンネルの名前(例: 前方左なら FL)か、入力チャンネルレイアウトにおけるそのインデックスを指定できます。out_channel は出力チャンネルの名前か、出力チャンネルレイアウトにおけるそのインデックスです。out_channel を指定しない場合は暗黙的にインデックスとなり、ゼロから始まって各マッピングごとに1ずつ増加します。異なる種類のマッピングを混在させることは許されず、パースエラーになります。
channel_layout
出力ストリームのチャンネルレイアウト。指定しない場合、フィルタは out_channel の名前またはマッピングの数に基づいて推測します。推測されたレイアウトは、必ずしもマッピングの順序どおりにチャンネルを含むとは限りません。
マッピングが1つもない場合、フィルタはインデックスを保ったまま入力チャンネルを出力チャンネルへ暗黙的にマッピングします。
8.74.1 Examples
- たとえば、5.1+ダウンミックスの入力 MOV ファイルを想定すると、
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
これは入力のダウンミックスチャンネルから、ステレオとしてタグ付けされた出力 WAV ファイルを作成します。
- AAC のネイティブなチャンネル順で不適切にエンコードされた 5.1 WAV を修正する:
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
8.75 channelsplit
入力音声ストリームの各チャンネルを、別々の出力ストリームに分割します。
次のパラメータを受け付けます。
channel_layout
入力ストリームのチャンネルレイアウト。既定値は "stereo" です。
channels
別々の出力ストリームとして取り出すチャンネルを記述したチャンネルレイアウト、または各入力チャンネルを別々のストリームとして取り出す "all"。既定値は "all" です。
入力のチャンネルレイアウトに存在しないチャンネルを選択するとエラーになります。
8.75.1 Examples
- たとえば、ステレオの入力 MP3 ファイルを想定すると、
ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
これは2つの音声ストリームをもつ出力 Matroska ファイルを作成し、一方は左チャンネルだけを、もう一方は右チャンネルだけを含みます。
-
5.1 WAV ファイルをチャンネルごとのファイルに分割する:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav -
5.1 WAV ファイルから LFE だけを取り出す:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav
8.76 chorus
音声にコーラス効果を加えます。
単一のボーカルをコーラスのように聞かせることができますが、楽器演奏に適用することもできます。
コーラスは短い遅延をもつエコー効果に似ていますが、エコーでは遅延が一定であるのに対し、コーラスでは正弦波または三角波の変調を使って遅延を変化させます。変調の深さは、変調された遅延が元の遅延の前後どれだけの範囲で再生されるかを定義します。そのため遅延音は遅くまたは速く聞こえ、つまり遅延音が元の音の周りで音程が揺れることになり、コーラスで一部のボーカルがわずかに音を外しているような状態になります。
次のパラメータを受け付けます。
in_gain
入力ゲインを設定します。既定値は 0.4 です。
out_gain
出力ゲインを設定します。既定値は 0.4 です。
delays
遅延を設定します。典型的な遅延は 40ms から 60ms 程度です。
decays
減衰を設定します。
speeds
速度を設定します。
depths
深さを設定します。
8.76.1 Examples
-
単一の遅延:
chorus=0.7:0.9:55:0.4:0.25:2 -
2つの遅延:
chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3 -
3つの遅延を使った、より豊かな響きのコーラス:
chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
8.77 compand
音声のダイナミックレンジを圧縮または伸張します。
次のパラメータを受け付けます。
attacks decays
入力信号の瞬時レベルを平均してその音量を求める、各チャンネルごとの時間(秒単位)のリスト。attacks は音量の増加を、decays は音量の減少を指します。ほとんどの状況では、アタック時間(音声が大きくなることへの応答)はディケイ時間より短くすべきです。人間の耳は突然の大きな音には敏感ですが、突然の小さな音にはそれほど敏感ではないためです。アタックの典型的な値は 0.3 秒、ディケイの典型的な値は 0.8 秒です。指定した attacks と decays の数がチャンネル数より少ない場合、最後に設定された attack/decay が残りのすべてのチャンネルに使われます。
points
伝達関数の点のリスト。信号の最大可能振幅を基準にした dB で指定します。各キーポイントのリストは次の構文で定義する必要があります: x0/y0|x1/y1|x2/y2|.... または x0/y0 x1/y1 x2/y2 ....
入力値は厳密に増加する順序でなければなりませんが、伝達関数は単調増加である必要はありません。点 0/0 は前提とされますが、(0/out-dBn によって)上書きできます。伝達関数の典型的な値は -70/-70|-60/-20|1/0 です。
soft-knee
すべての接合部の曲線半径を dB で設定します。既定値は 0.01 です。
gain
伝達関数のすべての点に適用される追加ゲインを dB で設定します。これにより全体のゲインを簡単に調整できます。既定値は 0 です。
volume
フィルタ処理開始時に各チャンネルで想定する初期音量を dB で設定します。これにより、ユーザーは初めに公称レベルを与えることができ、たとえばコンパンディングが動作を始める前の初期信号レベルに非常に大きなゲインが適用されるのを防げます。初めが静かな音声の典型的な値は -90 dB です。既定値は 0 です。
delay
遅延を秒単位で設定します。入力音声はただちに解析されますが、音量調整器に渡される前に音声が遅延されます。アタック/ディケイ時間とほぼ等しい遅延を指定すると、フィルタは反応的ではなく予測的に動作できるようになります。既定値は 0 です。
8.77.1 Examples
- 騒がしい環境でも聴けるよう、静かな箇所と大きな箇所の両方を持つ音楽を作る:
compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
ささやき声と爆発音の部分を含む音声向けのもう一つの例:
compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
-
ノイズが信号より低いレベルにあるときのノイズゲート:
compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1 -
もう一つのノイズゲートの例。今度はノイズが信号より高いレベルにある場合(ある意味でスケルチに似ている):
compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1 -
-6dB から始まる 2:1 圧縮:
compand=points=-80/-80|-6/-6|0/-3.8|20/3.5 -
-9dB から始まる 2:1 圧縮:
compand=points=-80/-80|-9/-9|0/-5.3|20/2.9 -
-12dB から始まる 2:1 圧縮:
compand=points=-80/-80|-12/-12|0/-6.8|20/1.9 -
-18dB から始まる 2:1 圧縮:
compand=points=-80/-80|-18/-18|0/-9.8|20/0.7 -
-15dB から始まる 3:1 圧縮:
compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2 -
コンプレッサー/ゲート:
compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6 -
エキスパンダー:
compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3 -
-6dB のハードリミッター:
compand=attacks=0:points=-80/-80|-6/-6|20/-6 -
-12dB のハードリミッター:
compand=attacks=0:points=-80/-80|-12/-12|20/-12 -
-35 dB のハードノイズゲート:
compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20 -
ソフトリミッター:
compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
8.78 compensationdelay
Compensation Delay Line は、マイクやスピーカーの位置の違いを補正するための、距離指定によるディレイです。
たとえば、ギターを異なる場所に置いた 2 本のマイクで録音したとします。通常の条件では音波の先端は一定の速度で進むため、マイクの位相はその位置や相互の配置によって変わります。これらのマイクの位相が揃っている(同期している)とき、最良のミックスが得られます。マイク間の距離が約 30 cm になると、一方のマイクが他方に対して逆位相で信号を捉えることになる点に注意してください。これは最終的なミックスを濁った音にします。このフィルタは、各マイクのトラックに異なるディレイを加えて同期させることで、位相の問題の解決を助けます。
1 本のトラックを基準とし、他のトラックを 1 本ずつそれに同期させると最良の結果が得られます。同期/ディレイの許容範囲はサンプリングレートにも依存することを覚えておいてください。サンプリングレートが高いほど許容範囲は広くなります。
このフィルタは次のパラメータを受け付けます:
mm
ミリメートル単位の距離を設定します。微調整用の補正距離です。既定値は 0 です。
cm
センチメートル単位の距離を設定します。距離設定を詰めるための補正距離です。既定値は 0 です。
m
メートル単位の距離を設定します。大まかな距離設定のための補正距離です。既定値は 0 です。
dry
dry 量を設定します。未処理(dry)信号の量です。既定値は 0 です。
wet
wet 量を設定します。処理済み(wet)信号の量です。既定値は 1 です。
temp
摂氏での温度を設定します。これは環境の温度です。既定値は 20 です。
8.78.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.79 crossfeed
ヘッドフォン用のクロスフィードフィルタを適用します。
クロスフィードとは、ステレオ録音の左右チャンネルを混ぜ合わせる処理です。主に低周波数の極端なステレオ分離を抑えるために使われます。
狙いは、聴き手にとってよりスピーカーに近い音を生み出すことです。
このフィルタは次のオプションを受け付けます:
strength
クロスフィードの強さを設定します。既定値は 0.2 です。許容範囲は 0 から 1 です。これはステレオイメージのサイド成分に対するローシェルフフィルタのゲインを設定します。既定値は -6dB です。strength を 1 にしたときの最大は -30db です。
range
サウンドステージの広さを設定します。既定値は 0.5 です。許容範囲は 0 から 1 です。これはローシェルフフィルタのカットオフ周波数を設定します。既定値はおよそ 1550 Hz 付近でのカットオフです。range を 1 にするとカットオフ周波数は 2100 Hz に設定されます。
slope
ローシェルフフィルタのカーブの傾きを設定します。既定値は 0.5 です。許容範囲は 0.01 から 1 です。
level_in
入力ゲインを設定します。既定値は 0.9 です。
level_out
出力ゲインを設定します。既定値は 1 です。
block_size
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(ゼロ付近に減衰して打ち切られるインパルス応答長より大きく)設定すると、フィルタリングは線形位相になります。十分大きくない場合は、不快なアーティファクトを生じるだけになります。
非ゼロの値を設定した場合、フィルタのディレイはちょうどこのサンプル数になる点に注意してください。
8.79.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.80 crystalizer
音声のノイズシャープニングのための単純なアルゴリズムです。
このフィルタは各音声サンプル間の差を線形に増幅します。
このフィルタは次のオプションを受け付けます:
i
エフェクトの強度を設定します(既定値: 2.0)。-10.0 から 0(音は変わらない)を経て 10.0(最大効果)までの範囲でなければなりません。逆フィルタリングには負の値を使います。
c
クリッピングを有効にします。既定では有効です。
8.80.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.81 dcshift
音声に DC シフトを適用します。
これは、(おそらく録音系のハードウェアの問題によって生じた)DC オフセットを音声から取り除くのに役立ちます。DC オフセットがあると、ヘッドルームが減少し、その結果として音量も小さくなります。信号に DC オフセットがあるかどうかは astats フィルタで判定できます。
shift
DC シフトを設定します。許容範囲は [-1, 1] です。音声をシフトさせる量を示します。
limitergain
省略可能です。1 よりかなり小さい値(たとえば 0.05 や 0.02)にすべきで、クリッピングを防ぐために使われます。
8.82 deesser
音声サンプルにディエッシングを適用します。
i
ディエッシングを発動させる強度を設定します。許容範囲は 0 から 1 です。既定値は 0 です。
m
音の高音部に対するダッキングの量を設定します。許容範囲は 0 から 1 です。既定値は 0.5 です。
f
ディエッシング時に元の周波数成分をどれだけ残すかを設定します。許容範囲は 0 から 1 です。既定値は 0.5 です。
s
出力モードを設定します。
次の値を受け付けます:
i
入力をそのまま通します。
o
ess を取り除いたものを通します。
e
ess のみを通します。
既定値は o です。
8.83 dialoguenhance
ステレオ音声内の対話(セリフ)を強調します。
このフィルタはステレオ入力を受け取り、サラウンド(3.0)チャンネル出力を生成します。新たに生成されるフロントセンターチャンネルには、もともと両ステレオチャンネルに含まれていたセリフが強調されて入ります。このフィルタは、ステレオ入力にあるフロント左とフロント右のチャンネルをそのまま出力します。
このフィルタは次のオプションを受け付けます:
original
フロントセンターチャンネル出力に残す元のセンター成分の係数を設定します。許容範囲は 0 から 1 です。既定値は 1 です。
enhance
フロントセンターチャンネル出力に加えるセリフ強調の係数を設定します。許容範囲は 0 から 3 です。既定値は 1 です。
voice
音声検出の係数を設定します。許容範囲は 2 から 32 です。既定値は 2 です。
8.83.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.84 drmeter
音声のダイナミックレンジを測定します。
DR 値が 14 以上の素材は非常にダイナミックです。DR が 8 から 13 の素材は中間的です。8 未満のものはダイナミクスが乏しく、強く圧縮されています。
このフィルタは次のオプションを受け付けます:
length
音声を等しい長さのセグメントに分割するために使う、秒単位のウィンドウ長を設定します。既定値は 3 秒です。
8.85 dynaudnorm
ダイナミックオーディオノーマライザーです。
このフィルタは、入力音声のピーク振幅を目標レベル(たとえば 0 dBFS)まで引き上げるために、一定量のゲインを適用します。ただし、より「単純な」ノーマライズアルゴリズムとは対照的に、Dynamic Audio Normalizer は入力音声に合わせてゲイン係数を動的に再調整します。これにより、「大きい」箇所での歪みやクリッピングを避けつつ、「静かな」箇所に追加のゲインを適用できます。言い換えると、Dynamic Audio Normalizer は各箇所の音量を同じ目標レベルへ揃えるという意味で、静かな箇所と大きい箇所の音量を「均す」のです。ただし、Dynamic Audio Normalizer は「ダイナミックレンジ圧縮」を適用せずにこの目標を達成する点に注意してください。音声ファイルの各箇所内のダイナミックレンジは 100% 保持されます。
framelen, f
フレーム長をミリ秒単位で設定します。範囲は 10 から 8000 ミリ秒です。既定値は 500 ミリ秒です。Dynamic Audio Normalizer は入力音声をフレームと呼ばれる小さな塊に分けて処理します。ピーク振幅は単一のサンプル値だけでは意味を持たないため、これが必要になります。代わりに、連続したサンプル値の並びについてピーク振幅を求める必要があります。「標準的な」ノーマライザーがファイル全体のピーク振幅をそのまま使うのに対し、Dynamic Audio Normalizer はフレームごとに個別にピーク振幅を求めます。フレームの長さはミリ秒で指定します。既定では、Dynamic Audio Normalizer は 500 ミリ秒のフレーム長を使い、これはほとんどのファイルで良好な結果を与えることがわかっています。サンプル数で表した正確なフレーム長は、入力音声ファイルごとのサンプリングレートに基づいて自動的に決定される点に注意してください。
gausssize, g
ガウシアンフィルタのウィンドウサイズを設定します。範囲は 3 から 301 で、奇数でなければなりません。既定値は 31 です。おそらく Dynamic Audio Normalizer の最も重要なパラメータは、ガウシアン平滑化フィルタの window size です。フィルタのウィンドウサイズはフレーム単位で指定され、現在のフレームを中心とします。単純化のため、これは奇数でなければなりません。したがって、既定値の 31 は現在のフレームに加えて、前の 15 フレームと後の 15 フレームを考慮します。ウィンドウを大きくすると平滑化効果が強まり、ゲインの変動が少なく、つまりゲインの適応が遅くなります。逆に、ウィンドウを小さくすると平滑化効果が弱まり、ゲインの変動が大きく、つまりゲインの適応が速くなります。言い換えると、この値を大きくするほど Dynamic Audio Normalizer は「従来型」のノーマライズフィルタのように振る舞います。反対に、この値を小さくするほど Dynamic Audio Normalizer はダイナミックレンジコンプレッサーのように振る舞います。
peak, p
目標ピーク値を設定します。これはノーマライズされた音声入力に許容される最も高い振幅レベルを指定します。このフィルタは目標ピーク振幅にできる限り近づけようとしますが、同時にノーマライズ後の信号が決してピーク振幅を超えないようにもします。フレームの最大ローカルゲイン係数は、目標ピーク振幅によって直接課されます。既定値は 0.95 で、これにより 5% のヘッドルームが残ります*。この値を超えることは推奨されません。
maxgain, m
最大ゲイン係数を設定します。範囲は 1.0 から 100.0 です。既定値は 10.0 です。Dynamic Audio Normalizer は入力フレームごとに、可能な最大の(ローカル)ゲイン係数、すなわちクリッピングや歪みを生じない最大のゲイン係数を求めます。最大ゲイン係数はフレーム内の最大振幅のサンプルによって決まります。ただし Dynamic Audio Normalizer はさらに、あらかじめ定めた(グローバルな)最大ゲイン係数によってフレームの最大ゲイン係数に上限を設けます。これは「無音」またはほぼ無音のフレームで過大なゲイン係数が生じるのを避けるために行われます。既定では最大ゲイン係数は 10.0 で、ほとんどの入力では既定値で十分であり、通常この値を上げることは推奨されません。とはいえ、全体の音量レベルが極端に低い入力では、さらに高いゲイン係数を許容する必要があるかもしれません。ただし、Dynamic Audio Normalizer は「ハードな」しきい値(すなわちしきい値を超える値を切り落とす)を単純に適用するわけではない点に注意してください。代わりに「シグモイド」型のしきい値関数が適用されます。これにより、ゲイン係数はしきい値に滑らかに近づきますが、その値を決して超えません。
targetrms, r
目標 RMS を設定します。範囲は 0.0 から 1.0 です。既定値は 0.0 で無効です。既定では、Dynamic Audio Normalizer は「ピーク」ノーマライズを行います。これは、各フレームの最大ローカルゲイン係数が(もっぱら)フレーム内の最大振幅サンプルによって定義されることを意味します。こうすることで、サンプルは最大信号レベルを超えることなく、すなわちクリッピングせずに、可能な限り増幅されます。ただし任意で、Dynamic Audio Normalizer はフレームの二乗平均平方根(RMS と略記)も考慮できます。電気工学では、RMS は時間変化する信号の電力を求めるのに一般的に使われます。そのため、RMS は信号のピーク振幅だけを見るより「知覚される音量」のよりよい近似だと考えられています。したがって、すべてのフレームを一定の RMS 値に調整すれば、一様な「知覚される音量」を確立できます。目標 RMS 値が指定された場合、フレームのローカルゲイン係数はちょうどその RMS 値になるような係数として定義されます。ただし、クリッピングを防ぐため、最大ローカルゲイン係数は依然としてフレーム内の最大振幅サンプルによって制限される点に注意してください。
coupling, n
チャンネルカップリングを有効にします。既定では有効です。既定では、Dynamic Audio Normalizer はすべてのチャンネルを同じ量だけ増幅します。これは同じゲイン係数がすべてのチャンネルに適用されることを意味し、すなわち可能な最大ゲイン係数は「最も大きい」チャンネルによって決まります。しかし、録音によっては各チャンネルの音量が不均一なことがあり、たとえばあるチャンネルが他より「静か」な場合があります。その場合、このオプションを使ってチャンネルカップリングを無効にできます。こうすると、ゲイン係数は各チャンネルの最大振幅サンプルのみに応じて、チャンネルごとに独立して決定されます。これにより、各チャンネルの音量を揃えることができます。
correctdc, c
DC バイアス補正を有効にします。既定では無効です。(時間領域における)音声信号はサンプル値の並びです。Dynamic Audio Normalizer では、これらのサンプル値は元の入力フォーマットによらず -1.0 から 1.0 の範囲で表現されます。通常、音声信号、すなわち「波形」はゼロ点を中心としているはずです。つまり、ファイル内、または単一フレーム内のすべてのサンプルの平均値を計算すると、結果は 0.0 か、少なくともその値に非常に近くなるはずです。しかし、もし平均値が正または負のいずれかの方向に 0.0 から大きく外れている場合、これは DC バイアスまたは DC オフセットと呼ばれます。DC バイアスは明らかに望ましくないため、Dynamic Audio Normalizer は任意の DC バイアス補正を提供します。DC バイアス補正を有効にすると、Dynamic Audio Normalizer は各入力フレームの平均値、すなわち「DC 補正」オフセットを求め、その値をフレームのすべてのサンプル値から差し引いて、それらのサンプルが再び 0.0 を中心とするようにします。また、フレーム境界での「ギャップ」を避けるため、DC 補正オフセット値は隣り合うフレーム間で滑らかに補間されます。
altboundary, b
代替境界モードを有効にします。既定では無効です。Dynamic Audio Normalizer は各フレームの周囲の一定の近傍を考慮します。これには前方のフレームと後方のフレームの両方が含まれます。しかし、音声ファイルのまさに先頭と末尾に位置する「境界」フレームでは、近傍のフレームがすべて揃っているわけではありません。特に、音声ファイルの最初の数フレームでは前方のフレームが不明です。同様に、音声ファイルの最後の数フレームでは後方のフレームが不明です。このため、「境界」領域の欠けているフレームにどのゲイン係数を仮定すべきかという問題が生じます。Dynamic Audio Normalizer はこの状況に対処する 2 つのモードを実装しています。既定の境界モードは、欠けているフレームについてちょうど 1.0 のゲイン係数を仮定し、その結果、入力の先頭と末尾でそれぞれ滑らかな「フェードイン」と「フェードアウト」になります。
compress, s
圧縮係数を設定します。範囲は 0.0 から 30.0 です。既定値は 0.0 です。既定では、Dynamic Audio Normalizer は「従来型」の圧縮を適用しません。これは、信号のピークが削られず、したがって各ローカル近傍内で完全なダイナミックレンジが保持されることを意味します。しかし、場合によっては Dynamic Audio Normalizer のノーマライズアルゴリズムをより「従来型」の圧縮と組み合わせたいことがあります。この目的のために、Dynamic Audio Normalizer は任意の圧縮(しきい値処理)関数を提供します。圧縮機能が有効な場合(かつその場合に限り)、実際のノーマライズ処理の前に、すべての入力フレームがソフトニーのしきい値関数で処理されます。単純に言えば、しきい値関数は振幅があるしきい値を超えるすべてのサンプルを削ります。ただし、Dynamic Audio Normalizer は固定のしきい値を単純に適用するわけではありません。代わりに、しきい値は個々のフレームごとに調整されます。一般に、パラメータが小さいほど圧縮が強くなり、その逆も同様です。3.0 未満の値は、可聴の歪みが現れる可能性があるため推奨されません。
threshold, t
目標しきい値を設定します。これはノーマライズされる音声入力に許容される最も低い振幅レベルを指定します。入力フレームの音量がこの値を上回ればフレームはノーマライズされます。そうでなければ、フレームはまったくノーマライズされないことがあります。既定値は 0 に設定されており、これはすべての入力フレームがノーマライズされることを意味します。このオプションは主に、デジタルノイズを増幅したくない場合に役立ちます。
channels, h
フィルタリングするチャンネルを指定します。既定では利用可能なすべてのチャンネルがフィルタリングされます。
overlap, o
フレームのオーバーラップを指定します。0(既定値)に設定するとフレームのオーバーラップは行われません。0 より大きく 1 未満の値を使うと、framelen オプションを小さい値に設定したときのように、より控えめでないゲイン調整になります。framelen オプションの値が非ゼロのオーバーラップに合わせて補正されている場合、ゲイン調整はオーバーラップが 0 の場合と比べて時間方向に滑らかになります。
curve, v
フレームに適用するゲインを計算する際に使われる、ピークマッピングカーブの式を指定します。出力フレームの最大ゲインは、このフィルタについて前述した他のオプションによって依然として制限されます。
式には次の定数を含めることができます:
ch
現在のチャンネル番号
sn
現在のサンプル番号
nb_channels
チャンネル数
t
秒で表したタイムスタンプ
sr
サンプリングレート
p
現在のフレームのピーク値
8.85.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.86 earwax
ヘッドフォンで音声を聴きやすくします。
このフィルタは 44.1kHz ステレオ(すなわち音楽 CD のフォーマット)の音声に「キュー」を加え、ヘッドフォンで聴いたときにステレオイメージを頭の内側(ヘッドフォンでは標準)から、聴き手の前方外側(スピーカーでは標準)へ移動させます。
SoX から移植されました。
8.87 equalizer
2 極ピーキングイコライゼーション(EQ)フィルタを適用します。このフィルタでは、選んだ周波数およびその周辺の信号レベルを増減できますが、(バンドパスやバンドリジェクトフィルタとは異なり)他のすべての周波数のレベルは変わりません。
複雑なイコライゼーションカーブを作るために、このフィルタは異なる中心周波数を指定して複数回与えることができます。
このフィルタは次のオプションを受け付けます:
frequency, f
フィルタの中心周波数を Hz で設定します。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q ファクター
o
オクターブ
s
傾き
k
kHz
width, w
フィルタの帯域幅を width_type の単位で指定します。
gain, g
必要なゲインまたは減衰を dB で設定します。正のゲインを使うときはクリッピングに注意してください。
mix, m
出力でフィルタリングした信号をどれだけ使うかを設定します。既定値は 1 です。範囲は 0 から 1 です。
channels, c
フィルタリングするチャンネルを指定します。既定では利用可能なすべてがフィルタリングされます。
normalize, n
biquad 係数をノーマライズします。既定では無効です。有効にすると、DC での振幅応答を 0dB にノーマライズします。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタリングの精度を設定します。
auto
サラウンドフィルタに応じて自動的にサンプルフォーマットを選びます。
s16
常に符号付き 16 ビットを使います。
s32
常に符号付き 32 ビットを使います。
f32
常に浮動小数点 32 ビットを使います。
f64
常に浮動小数点 64 ビットを使います。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(ゼロ付近に減衰して打ち切られるインパルス応答長より大きく)設定すると、フィルタリングは線形位相になります。十分大きくない場合は、不快なアーティファクトを生じるだけになります。
非ゼロの値を設定した場合、フィルタのディレイはちょうどこのサンプル数になる点に注意してください。
8.87.1 Examples
-
帯域幅 200 Hz で 1000 Hz を 10 dB 減衰する:
equalizer=f=1000:t=h:width=200:g=-10 -
Q 1 で 1000 Hz に 2 dB のゲインを適用し、Q 2 で 100 Hz を 5 dB 減衰する:
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
8.87.2 Commands
このフィルタは次のコマンドをサポートします:
frequency, f
イコライザーの周波数を変更します。コマンドの構文は: "frequency"
width_type, t
イコライザーの width_type を変更します。コマンドの構文は: "width_type"
width, w
イコライザーの幅を変更します。コマンドの構文は: "width"
gain, g
イコライザーのゲインを変更します。コマンドの構文は: "gain"
mix, m
イコライザーのミックスを変更します。コマンドの構文は: "mix"
8.88 extrastereo
左右チャンネルの差を線形に増幅し、再生に一種の「ライブ」効果を加えます。
このフィルタは次のオプションを受け付けます:
m
差の係数を設定します(既定値: 2.5)。0.0 はモノラル音(両チャンネルの平均)を、1.0 は音が変わらないことを意味し、-1.0 では左右チャンネルが入れ替わります。
c
クリッピングを有効にします。既定では有効です。
8.88.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.89 firequalizer
任意の周波数応答を用いて FIR イコライゼーションを適用します。
このフィルタは次のオプションを受け付けます:
gain
ゲインカーブの式を(dB で)設定します。式には次の変数を含めることができます:
f
評価される周波数
sr
サンプリングレート
ch
チャンネル番号。マルチチャンネル評価が無効な場合は 0 に設定されます
chid
チャンネル ID。libavutil/channel_layout.h を参照。マルチチャンネル評価が無効な場合は最初のチャンネル ID に設定されます
chs
チャンネル数
chlayout
channel_layout。libavutil/channel_layout.h を参照
および次の関数を含めることができます:
gain_interpolate(f)
gain_entry に基づいて周波数 f のゲインを補間します
cubic_interpolate(f)
gain_interpolate と同じですが、より滑らかです
このオプションはコマンドとしても利用できます。既定値は gain_interpolate(f) です。
gain_entry
gain_interpolate 関数のためのゲインエントリを設定します。式には次の関数を含めることができます:
entry(f, g)
周波数 f に値 g のゲインエントリを格納します
このオプションはコマンドとしても利用できます。
delay
フィルタのディレイを秒で設定します。値が大きいほど正確になります。既定値は 0.01 です。
accuracy
フィルタの精度を Hz で設定します。値が小さいほど正確になります。既定値は 5 です。
wfunc
窓関数を設定します。指定できる値は次のとおりです:
rectangular
矩形窓。ゲインカーブがすでに滑らかな場合に有用です
hann
ハン窓(既定値)
hamming
ハミング窓
blackman
ブラックマン窓
nuttall3
3 項の連続 1 次微分ナットール窓
mnuttall3
最小 3 項の不連続ナットール窓
nuttall
4 項の連続 1 次微分ナットール窓
bnuttall
最小 4 項の不連続ナットール(ブラックマン-ナットール)窓
bharris
ブラックマン-ハリス窓
tukey
テューキー窓
fixed
有効にすると、固定数の音声サンプルを使います。大きなディレイでフィルタリングする際に速度を改善します。既定では無効です。
multi
ゲインに対するマルチチャンネル評価を有効にします。既定では無効です。
zero_phase
タイムスタンプを差し引いてディレイを補正することで、ゼロ位相モードを有効にします。既定では無効です。
scale
ゲインで使うスケールを設定します。指定できる値は次のとおりです:
linlin
線形周波数、線形ゲイン
linlog
線形周波数、対数(dB)ゲイン(既定値)
loglin
対数(20 Hz を 0 とするオクターブスケール)周波数、線形ゲイン
loglog
対数周波数、対数ゲイン
dumpfile
ダンプ用のファイルを設定します。gnuplot に適しています。
dumpscale
dumpfile のスケールを設定します。指定できる値は scale オプションと同じです。既定値は linlog です。
fft2
複素 FFT を用いた 2 チャンネル畳み込みを有効にします。速度を大きく改善します。既定では無効です。
min_phase
最小位相インパルス応答を有効にします。既定では無効です。
8.89.1 Examples
-
1000 Hz でのローパス:
firequalizer=gain='if(lt(f,1000), 0, -INF)' -
gain_entry を使った 1000 Hz でのローパス:
firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)' -
カスタムイコライゼーション:
firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)' -
ディレイを補正するゼロ位相付きのより大きなディレイ:
firequalizer=delay=0.1:fixed=on:zero_phase=on -
左チャンネルにローパス、右チャンネルにハイパス:
firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))' :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
8.90 flanger
音声にフランジャー効果を適用します。
このフィルタは次のオプションを受け付けます。
delay
基本遅延をミリ秒単位で設定します。範囲は 0 から 30。既定値は 0 です。
depth
加えるスイープ遅延をミリ秒単位で設定します。範囲は 0 から 10。既定値は 2 です。
regen
再生(遅延信号のフィードバック)の割合を設定します。範囲は -95 から 95。既定値は 0 です。
width
元の信号に混ぜる遅延信号の割合を設定します。範囲は 0 から 100。既定値は 71 です。
speed
毎秒のスイープ数(Hz)を設定します。範囲は 0.1 から 10。既定値は 0.5 です。
shape
スイープする波形を設定します。triangular(三角波)または sinusoidal(正弦波)を指定できます。既定値は sinusoidal です。
phase
マルチチャンネル向けにスイープ波の位相シフト量を割合で設定します。範囲は 0 から 100。既定値は 25 です。
interp
遅延ラインの補間方式を設定します。linear または quadratic。既定は linear です。
8.91 haas
音声に Haas 効果を適用します。
これはモノラル信号に適用するのが最も理にかなっています。モノラル信号にこのフィルタを適用すると、ある程度の方向感を与え、ステレオ像を広げます。
このフィルタは次のオプションを受け付けます。
level_in
入力レベルを設定します。既定は 1、すなわち 0dB です。
level_out
出力レベルを設定します。既定は 1、すなわち 0dB です。
side_gain
信号のサイド成分に適用するゲインを設定します。既定は 1 です。
middle_source
ミドルソースの種類を設定します。次のいずれかを指定できます。
‘left’
左チャンネルを選びます。
‘right’
右チャンネルを選びます。
‘mid’
ステレオ像の中央成分の信号を選びます。
‘side’
ステレオ像のサイド成分の信号を選びます。
middle_phase
ミドルの位相を反転します。既定では無効です。
left_delay
左チャンネルの遅延を設定します。既定は 2.05 ミリ秒です。
left_balance
左チャンネルのバランスを設定します。既定は -1 です。
left_gain
左チャンネルのゲインを設定します。既定は 1 です。
left_phase
左の位相を反転します。既定では無効です。
right_delay
右チャンネルの遅延を設定します。既定は 2.12 ミリ秒です。
right_balance
右チャンネルのバランスを設定します。既定は 1 です。
right_gain
右チャンネルのゲインを設定します。既定は 1 です。
right_phase
右の位相を反転します。既定では有効です。
8.92 hdcd
High Definition Compatible Digital(HDCD)データをデコードします。HDCD コードが埋め込まれた 16 ビット PCM ストリームを 20 ビット PCM ストリームへ展開します。
このフィルタは HDCD の Peak Extend と Low-level Gain Adjustment 機能をサポートし、Transient Filter フラグを検出します。
ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
このフィルタを wav で使う場合、wav の既定エンコーディングは 16 ビットであるため、生成される 20 ビットストリームは 16 ビットへ切り詰められる点に注意してください。24 ビット PCM 出力を得るには、フィルタの後に -acodec pcm_s24le のような指定を使ってください。
ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
このフィルタは次のオプションを受け付けます。
disable_autoconvert
filter graph 内での自動的なフォーマット変換やリサンプリングを無効にします。
process_stereo
ステレオチャンネルをまとめて処理します。target_gain がチャンネル間で一致しない場合は無効とみなし、最後の有効な target_gain を使います。
cdt_ms
コード検出タイマーの周期をミリ秒単位で設定します。
force_pe
PE が通知されていなくても、ピークを常に -3dBFS 以上へ拡張します。
analyze_mode
音声をソリッドトーンに置き換え、デコード処理の特定の側面を示すように振幅を調整します。出力ファイルをオーディオエディタで元のファイルと並べて読み込むと、解析の助けになります。
analyze_mode=pe:force_pe=true を使うと、PE レベルを超えるすべてのサンプルを確認できます。
モードは次のとおりです。
‘0, off’
無効
‘1, lle’
各サンプルでのゲイン調整レベル
‘2, pe’
ピーク拡張が発生したサンプル
‘3, cdt’
コード検出タイマーが有効なサンプル
‘4, tgm’
target gain がチャンネル間で一致しないサンプル
8.93 headphone
頭部伝達関数(HRTF)を適用し、ヘッドフォンによるバイノーラル再生のためにユーザーの周囲へ仮想スピーカーを配置します。HRIR は追加のストリームとして与えられ、各チャンネルにつき 1 つのステレオ入力ストリームが必要です。
このフィルタは次のオプションを受け付けます。
map
畳み込み用の入力ストリームのマッピングを設定します。引数は ’|’ 区切りのチャンネル名のリストで、フィルタへの追加ストリーム入力として与える順に並べます。これは入力ストリーム数も指定します。入力ストリーム数は、最初のストリームのチャンネル数に 1 を加えた数以上でなければなりません。
gain
音声に適用するゲインを設定します。値の単位は dB です。既定は 0 です。
type
処理の種類を設定します。time または freq を指定できます。time は時間領域で音声を処理するため低速です。freq は周波数領域で処理するため高速です。既定は freq です。
lfe
LFE チャンネルに対するゲインを個別に設定します。値の単位は dB です。既定は 0 です。
size
一度に処理するフレームのサイズをサンプル数で設定します。既定値は 1024 です。指定できる範囲は 1024 から 96000 です。
hrir
hrir ストリームのフォーマットを設定します。既定値は stereo です。代替値は multich です。stereo を指定した場合、追加ストリームの数は最初の入力ストリームの入力チャンネル数以上でなければなりません。また各追加ストリームはステレオ(2 チャンネル)でなければなりません。multich を指定した場合、追加ストリームの数はちょうど 1 つでなければなりません。また、その追加ストリームの入力チャンネル数は、最初の入力ストリームのチャンネル数の 2 倍以上でなければなりません。
8.93.1 Examples
-
7.1 のダウンミックスに対し、係数として wav ファイルを amovie フィルタで読み込む完全な例です。各 amovie フィルタは IR 係数を含むステレオファイルを入力として使います。これらのファイルは仮想スピーカーの各位置に対応する係数を与えます。
ffmpeg -i input.wav -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR" output.wav -
同じく 7.1 のダウンミックスに対し、係数として wav ファイルを amovie フィルタで読み込む完全な例ですが、今度は multich の hrir フォーマットを使います。
ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich" output.wav
8.94 highpass
3dB 点周波数のハイパスフィルタを適用します。フィルタは 1 極または 2 極(既定)のいずれかにできます。減衰は 1 極あたり 1 オクターブで 6dB(1 極あたり 1 ディケードで 20dB)です。
このフィルタは次のオプションを受け付けます。
frequency, f
周波数を Hz 単位で設定します。既定は 3000 です。
poles, p
極の数を設定します。既定は 2 です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q ファクター
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタの帯域幅を width_type の単位で指定します。2 極フィルタにのみ適用されます。既定は 0.707q で、バターワース応答になります。
mix, m
フィルタ処理した信号を出力にどれだけ使うかを設定します。既定は 1 です。範囲は 0 から 1 です。
channels, c
フィルタ対象のチャンネルを指定します。既定では利用可能なすべてのチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC における振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じて自動的にサンプルフォーマットを選びます。
s16
常に符号付き 16 ビットを使います。
s32
常に符号付き 32 ビットを使います。
f32
常に 32 ビット浮動小数点を使います。
f64
常に 64 ビット浮動小数点を使います。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がほぼゼロに達して切り詰められる長さより大きく)設定すると、フィルタは直線位相になります。十分に大きくない場合は、不快なアーティファクトを生じます。
この値を 0 以外に設定すると、フィルタ遅延はちょうどこのサンプル数になる点に注意してください。
8.94.1 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
ハイパス周波数を変更します。コマンドの構文は : "frequency" です。
width_type, t
ハイパスの width_type を変更します。コマンドの構文は : "width_type" です。
width, w
ハイパスの width を変更します。コマンドの構文は : "width" です。
mix, m
ハイパスの mix を変更します。コマンドの構文は : "mix" です。
8.95 join
複数の入力ストリームを 1 つのマルチチャンネルストリームへ結合します。
次のパラメータを受け付けます。
inputs
入力ストリームの数です。既定は 2 です。
channel_layout
希望する出力のチャンネルレイアウトです。既定は stereo です。
map
入力から出力へチャンネルをマッピングします。引数は ’|’ 区切りのマッピングのリストで、それぞれ input_idx.in_channel-out_channel の形式です。input_idx は入力ストリームの 0 始まりのインデックスです。in_channel は入力チャンネルの名前(例: 前方左の FL)か、指定した入力ストリーム内でのそのインデックスのいずれかです。out_channel は出力チャンネルの名前です。
マッピングが明示的に指定されない場合、フィルタはそれを推測しようとします。まず未使用の一致する入力チャンネルを探し、それが見つからなければ最初の未使用の入力チャンネルを選びます。
3 つの入力を結合します(チャンネルレイアウトを適切に設定した状態で)。
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
6 つの単一チャンネルストリームから 5.1 出力を構築します。
ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out
8.96 ladspa
LADSPA(Linux Audio Developer’s Simple Plugin API)プラグインを読み込みます。
このフィルタのコンパイルを有効にするには、--enable-ladspa を付けて FFmpeg を configure する必要があります。
file, f
読み込む LADSPA プラグインライブラリの名前を指定します。環境変数 LADSPA_PATH が定義されている場合、LADSPA プラグインは LADSPA_PATH にコロン区切りで列挙された各ディレクトリから検索されます。定義されていない場合は標準の LADSPA パスから、次の順で検索されます: HOME/.ladspa/lib/、/usr/local/lib/ladspa/、/usr/lib/ladspa/。
plugin, p
ライブラリ内のプラグインを指定します。ライブラリの中にはプラグインを 1 つだけ含むものもありますが、多数含むものもあります。これを設定しない場合、フィルタは指定したライブラリ内で利用可能なすべてのプラグインを一覧表示します。
controls, c
’|’ 区切りの controls のリストを設定します。これは読み込んだプラグインの挙動を決める 0 個以上の浮動小数点値です(例: ディレイ、しきい値、ゲインなど)。controls は次の構文で定義する必要があります: c0=value0|c1=value1|c2=value2|...。ここで valuei は i 番目の control に設定する値です。あるいは次の構文でも定義できます: value0|value1|value2|...。ここで valuei は i 番目の control に設定する値です。controls を help に設定すると、利用可能なすべての control とその有効範囲が表示されます。
sample_rate, s
サンプリングレートを指定します。既定は 44100 です。プラグインの入力が 0 の場合にのみ使われます。
nb_samples, n
各出力フレームのチャンネルごとのサンプル数を設定します。既定は 1024 です。プラグインの入力が 0 の場合にのみ使われます。
duration, d
ソースする音声の最小継続時間を設定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。生成される音声は常に完全なフレームの末尾で切られるため、実際の継続時間は指定した値より長くなる場合がある点に注意してください。指定しない場合、または指定した継続時間が負の場合、音声は無限に生成されるものとみなされます。プラグインの入力が 0 の場合にのみ使われます。
latency, l
レイテンシ補償を有効にします。既定では無効です。プラグインに入力がある場合にのみ使われます。
8.96.1 Examples
-
amp(LADSPA のサンプルプラグイン)ライブラリ内で利用可能なすべてのプラグインを一覧表示します。
ladspa=file=amp -
VCFライブラリのvcf_notchプラグインについて、利用可能なすべての control とその有効範囲を一覧表示します。ladspa=f=vcf:p=vcf_notch:c=help -
Computer Music Toolkit(CMT)プラグインライブラリを使って低品質の音響機器をシミュレートします。ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12 -
TAP-plugins(Tom’s Audio Processing plugins)を使って音声にリバーブを加えます。
ladspa=file=tap_reverb:tap_reverb -
振幅 0.2 でホワイトノイズを生成します。
ladspa=file=cmt:noise_source_white:c=c0=.2 -
C* Audio Plugin Suite(CAPS)ライブラリのプラグインC* Click - Metronomeを使って 20 bpm のクリックを生成します。ladspa=file=caps:Click:c=c1=20' -
C* Eq10X2 - Stereo 10-band equaliserエフェクトを適用します。ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2 -
Steve Harris の
SWH Pluginsコレクションの fast lookahead limiter を使って音量を 20dB 上げます。ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2 -
Steve Harris の
SWH Pluginsコレクションの Multiband EQ を使って低域を減衰させます。ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0 -
C* Audio Plugin Suite(CAPS)ライブラリのNarrowerを使ってステレオ像を狭めます。ladspa=caps:Narrower -
別のホワイトノイズ。今度は
C* Audio Plugin Suite(CAPS)ライブラリを使います。ladspa=caps:White:.2 -
C* Audio Plugin Suite(CAPS)ライブラリを使ったフラクタルノイズです。ladspa=caps:Fractal:c=c1=1 -
VLevelプラグインを使った動的な音量正規化です。ladspa=vlevel-ladspa:vlevel_mono
8.96.2 Commands
このフィルタは次のコマンドをサポートします。
cN
N 番目の control 値を変更します。
指定した値が無効な場合は無視され、直前の値が保持されます。
8.97 loudnorm
EBU R128 ラウドネス正規化です。ダイナミックと線形の両方の正規化モードを含みます。シングルパス(ライブストリーム、ファイル)とダブルパス(ファイル)の両モードに対応します。このアルゴリズムは IL、LRA、最大トゥルーピークをターゲットにできます。ダイナミックモードでは、トゥルーピークを正確に検出するために音声ストリームを 192 kHz へアップサンプリングします。出力サンプリングレートを明示的に設定するには -ar オプションまたは aresample フィルタを使ってください。
このフィルタは次のオプションを受け付けます。
I, i
統合ラウドネスのターゲットを設定します。範囲は -70.0 〜 -5.0。既定値は -24.0 です。
LRA, lra
ラウドネスレンジのターゲットを設定します。範囲は 1.0 〜 50.0。既定値は 7.0 です。
TP, tp
最大トゥルーピークを設定します。範囲は -9.0 〜 +0.0。既定値は -2.0 です。
measured_I, measured_i
入力ファイルの実測 IL です。範囲は -99.0 〜 +0.0。
measured_LRA, measured_lra
入力ファイルの実測 LRA です。範囲は 0.0 〜 99.0。
measured_TP, measured_tp
入力ファイルの実測トゥルーピークです。範囲は -99.0 〜 +99.0。
measured_thresh
入力ファイルの実測しきい値です。範囲は -99.0 〜 +0.0。
offset
オフセットゲインを設定します。ゲインはトゥルーピークリミッタの前に適用されます。範囲は -99.0 〜 +99.0。既定は +0.0 です。
linear
ソース音声を線形にスケーリングして正規化します。measured_I、measured_LRA、measured_TP、measured_thresh をすべて指定する必要があります。ターゲット LRA はソース LRA より低くしてはならず、統合ラウドネスの変化によってトゥルーピークがターゲット TP を超えてはなりません。これらの条件のいずれかが満たされない場合、正規化モードはダイナミックに戻ります。指定できる値は true または false。既定は true です。
dual_mono
モノラルの入力ファイルを「デュアルモノ」として扱います。モノラルファイルをステレオシステムで再生する目的であれば、その EBU R128 測定値は知覚的に正しくなくなります。true に設定すると、このオプションはその影響を補償します。マルチチャンネルの入力ファイルはこのオプションの影響を受けません。指定できる値は true または false。既定は false です。
print_format
統計の出力フォーマットを設定します。指定できる値は summary、json、none。既定値は none です。
stats_file
統計を指定したファイルに書き込みます。フォーマットは print_format で制御され、print_format を設定する必要があります。標準出力へ書き込むには - を指定します。既定は未設定です。
8.98 lowpass
3dB 点周波数のローパスフィルタを適用します。フィルタは 1 極または 2 極(既定)のいずれかにできます。減衰は 1 極あたり 1 オクターブで 6dB(1 極あたり 1 ディケードで 20dB)です。
このフィルタは次のオプションを受け付けます。
frequency, f
周波数を Hz 単位で設定します。既定は 500 です。
poles, p
極の数を設定します。既定は 2 です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q ファクター
o
オクターブ
s
スロープ
k
kHz
width, w
フィルタの帯域幅を width_type の単位で指定します。2 極フィルタにのみ適用されます。既定は 0.707q で、バターワース応答になります。
mix, m
フィルタ処理した信号を出力にどれだけ使うかを設定します。既定は 1 です。範囲は 0 から 1 です。
channels, c
フィルタ対象のチャンネルを指定します。既定では利用可能なすべてのチャンネルが対象です。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると、DC における振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じて自動的にサンプルフォーマットを選びます。
s16
常に符号付き 16 ビットを使います。
s32
常に符号付き 32 ビットを使います。
f32
常に 32 ビット浮動小数点を使います。
f64
常に 64 ビット浮動小数点を使います。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がほぼゼロに達して切り詰められる長さより大きく)設定すると、フィルタは直線位相になります。十分に大きくない場合は、不快なアーティファクトを生じます。
この値を 0 以外に設定すると、フィルタ遅延はちょうどこのサンプル数になる点に注意してください。
8.98.1 Examples
- LFE チャンネルのみをローパスします。LFE が存在しない場合は何もしません。
lowpass=c=LFE
8.98.2 Commands
このフィルタは次のコマンドをサポートします。
frequency, f
ローパス周波数を変更します。コマンドの構文は : "frequency" です。
width_type, t
ローパスの width_type を変更します。コマンドの構文は : "width_type" です。
width, w
ローパスの width を変更します。コマンドの構文は : "width" です。
mix, m
ローパスの mix を変更します。コマンドの構文は : "mix" です。
8.99 lv2
LV2(LADSPA Version 2)プラグインを読み込みます。
このフィルタのコンパイルを有効にするには、--enable-lv2 を付けて FFmpeg を configure する必要があります。
plugin, p
プラグイン URI を指定します。’:’ はエスケープが必要な場合があります。
controls, c
’|’ 区切りの controls のリストを設定します。これは読み込んだプラグインの挙動を決める 0 個以上の浮動小数点値です(例: ディレイ、しきい値、ゲインなど)。controls を help に設定すると、利用可能なすべての control とその有効範囲が表示されます。
sample_rate, s
サンプリングレートを指定します。既定は 44100 です。プラグインの入力が 0 の場合にのみ使われます。
nb_samples, n
各出力フレームのチャンネルごとのサンプル数を設定します。既定は 1024 です。プラグインの入力が 0 の場合にのみ使われます。
duration, d
ソースする音声の最小継続時間を設定します。受け付ける構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。生成される音声は常に完全なフレームの末尾で切られるため、実際の継続時間は指定した値より長くなる場合がある点に注意してください。指定しない場合、または指定した継続時間が負の場合、音声は無限に生成されるものとみなされます。プラグインの入力が 0 の場合にのみ使われます。
8.99.1 Examples
-
Calf の bass enhancer プラグインを適用します:
lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2 -
Calf の vinyl プラグインを適用します:
lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5 -
ArtyFX の bit crusher プラグインを適用します:
lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
8.99.2 Commands
このフィルタは、プラグインがコマンドとしてエクスポートするすべてのオプションをサポートします。
8.100 mcompand
音声のダイナミックレンジをマルチバンドでコンプレッション(圧縮)または拡張します。
入力音声は 4 次 Linkwitz-Riley IIR を使って複数のバンドに分割されます。これはスピーカーのクロスオーバーに相当し、コンパンダ動作がない場合はフラットな周波数特性が得られます。
以下のパラメータを受け付けます:
args
このオプションの構文は次のとおり: attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 各項目の説明については compand フィルタのドキュメントを参照してください。
8.101 pan
指定したゲインレベルでチャンネルをミックスします。このフィルタは、出力チャンネルレイアウトに続けてチャンネル定義の一式を指定する形で受け付けます。
このフィルタは、音声ストリームのチャンネルを効率的にリマップする用途も想定して設計されています。
このフィルタは "l|outdef|outdef|..." という形式のパラメータを受け付けます:
l
出力チャンネルレイアウトまたはチャンネル数
outdef
出力チャンネルの指定。形式は "out_name=[gain]in_name[(+-)[gain]in_name...]"
out_name
定義する出力チャンネル。チャンネル名(FL、FR など)またはチャンネル番号(c0、c1 など)のいずれか
gain
チャンネルに対する乗算係数。1 にすると音量は変化しません
in_name
使用する入力チャンネル。詳細は out_name を参照してください。名前付きと番号付きの入力チャンネルを混在させることはできません
チャンネル指定中の ‘=’ を ‘<’ に置き換えると、その指定のゲインは合計が 1 になるように再正規化され、クリッピングノイズを避けられます。
8.101.1 Mixing examples
例として、ステレオからモノラルへダウンミックスしつつ、左チャンネルの係数を大きくしたい場合:
pan=1c|c0=0.9*c0+0.1*c1
3・4・5・7 チャンネルのサラウンドに対して自動的に機能する、カスタマイズしたステレオへのダウンミックス:
pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
なお ffmpeg には既定のダウンミックス(およびアップミックス)機構が組み込まれており、特別な要件がない限りそちらを優先すべきです("-ac" オプションを参照)。
8.101.2 Remapping examples
チャンネルのリマップが有効になるのは、以下の条件をすべて満たす場合に限られます:
- ゲイン係数が 0 または 1 であること、
- 各出力チャンネルに対する入力が 1 つだけであること、
これらの条件がすべて満たされると、フィルタはユーザーに通知("Pure channel mapping detected")したうえで、最適化された可逆な方式でリマップを行います。
例として、5.1 のソースから余分なチャンネルを捨ててステレオの音声ストリームを得たい場合:
pan="stereo| c0=FL | c1=FR"
同じソースに対して、入力チャンネルレイアウトを保ったまま左前と右前のチャンネルを入れ替えることもできます:
pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
入力がステレオの音声ストリームであれば、(ステレオのチャンネルレイアウトを保ったまま)左前チャンネルをミュートできます:
pan="stereo|c1=c1"
同じくステレオの音声ストリーム入力に対して、右チャンネルを左前・右前の両方にコピーできます:
pan="stereo| c0=FR | c1=FR"
8.102 replaygain
ReplayGain スキャナフィルタ。このフィルタは音声ストリームを入力として受け取り、変更せずに出力します。フィルタリング終了時に track_gain と track_peak を表示します。
このフィルタは以下のエクスポートされる読み取り専用オプションを受け付けます:
track_gain
ストリーム終了時にエクスポートされるトラックゲイン(dB)。
track_peak
ストリーム終了時にエクスポートされるトラックピーク。
8.103 resample
音声のサンプルフォーマット、サンプリングレート、チャンネルレイアウトを変換します。直接使用することは想定していません。
8.104 rubberband
librubberband を使ってタイムストレッチとピッチシフトを適用します。
このフィルタをコンパイルできるようにするには、FFmpeg を --enable-librubberband を付けて configure する必要があります。
このフィルタは以下のオプションを受け付けます:
tempo
テンポのスケール係数を設定します。
pitch
ピッチのスケール係数を設定します。
transients
過渡音(トランジェント)検出器を設定します。指定できる値は次のとおりです:
crisp mixed smooth detector
検出器を設定します。指定できる値は次のとおりです:
compound percussive soft phase
位相を設定します。指定できる値は次のとおりです:
laminar independent window
処理ウィンドウのサイズを設定します。指定できる値は次のとおりです:
standard short long smoothing
スムージングを設定します。指定できる値は次のとおりです:
off on formant
ピッチシフト時のフォルマント保持を有効にします。指定できる値は次のとおりです:
shifted preserved pitchq
ピッチ品質を設定します。指定できる値は次のとおりです:
quality speed consistency channels
チャンネルを設定します。指定できる値は次のとおりです:
apart together
8.104.1 Commands
このフィルタは以下のコマンドをサポートします:
tempo
フィルタのテンポのスケール係数を変更します。コマンドの構文は : "tempo"
pitch
フィルタのピッチのスケール係数を変更します。コマンドの構文は : "pitch"
8.105 sidechaincompress
このフィルタは通常のコンプレッサと同様に動作しますが、検出した信号を 2 つ目の入力信号を使ってコンプレッションできる点が特徴です。2 つの入力ストリームを必要とし、1 つの出力ストリームを返します。1 つ目の入力ストリームは 2 つ目のストリームの信号に応じて処理されます。フィルタリング後の信号は、後段の処理で別のフィルタにかけることもできます。pan フィルタや amerge フィルタを参照してください。
このフィルタは以下のオプションを受け付けます:
level_in
入力ゲインを設定します。既定値は 1。範囲は 0.015625 から 64。
mode
コンプレッサの動作モードを設定します。upward または downward を指定できます。既定値は downward。
threshold
2 つ目のストリームの信号がこのレベルを超えると、1 つ目のストリームのゲインリダクションに影響します。既定値は 0.125。範囲は 0.00097563 から 1。
ratio
信号を低減する比率を設定します。1:2 とは、レベルがしきい値より 4dB 高くなった場合、リダクション後はしきい値より 2dB 高いだけになるという意味です。既定値は 2。範囲は 1 から 20。
attack
ゲインリダクションが始まるまでに、信号がしきい値を超えていなければならない時間(ミリ秒)。既定値は 20。範囲は 0.01 から 2000。
release
リダクションが再び弱められるまでに、信号がしきい値を下回っていなければならない時間(ミリ秒)。既定値は 250。範囲は 0.01 から 9000。
makeup
処理後に信号をどれだけ増幅するかを設定します。既定値は 1。範囲は 1 から 64。
knee
しきい値付近の鋭いニーをカーブさせ、ゲインリダクションへより滑らかに移行させます。既定値は 2.82843。範囲は 1 から 8。
link
サイドチェインストリームの全チャンネルの平均(average)レベルと、より大きい(maximum)チャンネルのどちらをリダクションに反映するかを選択します。既定値は average。
detection
peak の場合は正確な信号を、rms の場合は RMS の信号を取るかを指定します。既定値は rms で、こちらの方が概して滑らかになります。
level_sc
サイドチェインゲインを設定します。既定値は 1。範囲は 0.015625 から 64。
mix
出力にコンプレッション後の信号をどれだけ使うか。既定値は 1。範囲は 0 から 1。
8.105.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.105.2 Examples
- 2 つの音声入力を取り、1 つ目の入力を 2 つ目の入力の信号に応じてコンプレッションし、後でそのコンプレッション後の信号を 2 つ目の入力とマージする、完全な ffmpeg の例:
ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
8.106 sidechaingate
サイドチェインゲートは通常の(広帯域)ゲートと同様に動作しますが、検出した信号をゲインリダクション段に送る前にフィルタリングできる点が特徴です。通常、ゲートは全帯域の信号を使ってしきい値を超えるレベルを検出します。例として、サイドチェイン信号から低域をすべてカットしておくと、ゲートは高域が十分に現れない場合にのみトラックの音量を下げるようになります。この手法を使えば、生ドラムの共鳴を抑えたり、激しく歪ませたギターのミュートストロークの「ゴロつき」を取り除いたりできます。2 つの入力ストリームを必要とし、1 つの出力ストリームを返します。1 つ目の入力ストリームは 2 つ目のストリームの信号に応じて処理されます。
このフィルタは以下のオプションを受け付けます:
level_in
フィルタリング前の入力レベルを設定します。既定値は 1。指定できる範囲は 0.015625 から 64。
mode
動作モードを設定します。upward または downward を指定できます。既定値は downward。upward モードに設定すると、信号の大きい部分が増幅され、ダイナミックレンジが上方向に拡張されます。一方 downward の場合は、信号の小さい部分が低減されます。
range
信号がしきい値を下回ったときのゲインリダクションのレベルを設定します。既定値は 0.06125。指定できる範囲は 0 から 1。これを 0 に設定するとリダクションが無効になり、フィルタはエキスパンダのように動作します。
threshold
信号がこのレベルを超えると、ゲインリダクションが解除されます。既定値は 0.125。指定できる範囲は 0 から 1。
ratio
信号を低減する比率を設定します。既定値は 2。指定できる範囲は 1 から 9000。
attack
ゲインリダクションが止まるまでに、信号がしきい値を超えていなければならない時間(ミリ秒)。既定値は 20 ミリ秒。指定できる範囲は 0.01 から 9000。
release
リダクションが再び強められるまでに、信号がしきい値を下回っていなければならない時間(ミリ秒)。既定値は 250 ミリ秒。指定できる範囲は 0.01 から 9000。
makeup
処理後の信号の増幅量を設定します。既定値は 1。指定できる範囲は 1 から 64。
knee
しきい値付近の鋭いニーをカーブさせ、ゲインリダクションへより滑らかに移行させます。既定値は 2.828427125。指定できる範囲は 1 から 8。
detection
検出に正確な信号を取るか、RMS のような信号を取るかを選択します。既定値は rms。peak または rms を指定できます。
link
全チャンネルの平均レベルと、より大きいチャンネルのどちらをリダクションに反映するかを選択します。既定値は average。average または maximum を指定できます。
level_sc
サイドチェインゲインを設定します。既定値は 1。範囲は 0.015625 から 64。
8.106.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.107 silencedetect
音声ストリーム中の無音を検出します。
このフィルタは、入力音声の音量がノイズ許容値以下である状態が、検出する最小の無音継続時間以上にわたって続いたことを検出すると、メッセージをログに出力します。
表示される時刻と継続時間は秒単位で表されます。lavfi.silence_start または lavfi.silence_start.X メタデータキーは、タイムスタンプが検出継続時間に達するか超える最初のフレームに設定され、無音の最初のフレームのタイムスタンプを保持します。
lavfi.silence_duration または lavfi.silence_duration.X、および lavfi.silence_end または lavfi.silence_end.X メタデータキーは、無音の後の最初のフレームに設定されます。mono が有効で各チャンネルが個別に評価される場合は、.X を付したキーが使われ、X はチャンネル番号に対応します。
このフィルタは以下のオプションを受け付けます:
noise, n
ノイズ許容値を設定します。dB 単位(指定値に "dB" を付加した場合)または振幅比で指定できます。既定値は -60dB、すなわち 0.001。
duration, d
通知までの無音継続時間を設定します(既定値は 2 秒)。指定できる構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。
mono, m
各チャンネルを合算せず個別に処理します。既定では無効。
8.107.1 Examples
-
-50dB のノイズ許容値で 5 秒の無音を検出します:
silencedetect=n=-50dB:d=5 -
ffmpegを使って silence.mp3 中の無音を 0.0001 のノイズ許容値で検出する完全な例:ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
8.108 silenceremove
音声の先頭・中間・末尾から無音を取り除きます。
このフィルタは以下のオプションを受け付けます:
start_periods
音声の先頭をトリミングするかどうかを示す値。0 にすると先頭の無音は一切トリミングされません。0 以外の値を指定すると、非無音が見つかるまでの音声をトリミングします。通常、音声の先頭から無音をトリミングする場合 start_periods は 1 ですが、より大きな値に増やすと、指定した回数ぶんの非無音区間が現れるまでの音声をすべてトリミングできます。既定値は 0。
start_duration
音声のトリミングを止めるまでに、非無音を検出していなければならない時間を指定します。この時間を長くすると、断続的なノイズを無音として扱い、トリミングできます。既定値は 0。
start_threshold
どのサンプル値を無音として扱うかを示します。デジタル音声では 0 で問題ないことが多いですが、アナログから録音した音声では、背景ノイズを考慮して値を大きくしたい場合があります。dB 単位(指定値に "dB" を付加した場合)または振幅比で指定できます。既定値は 0。
start_silence
トリミング後に先頭で残す無音の最大継続時間を指定します。既定値は 0 で、これは無音として検出されたすべてのサンプルをトリミングすることに等しくなります。
start_mode
マルチチャンネル音声の先頭における無音終了の検出モードを指定します。any または all を指定できます。既定値は any。any の場合、いずれかのチャンネルのいずれかのサンプルが非無音と検出されると、音声ストリーム先頭での無音トリミングの終了がトリガーされます。all の場合、すべてのチャンネルのすべてのサンプルが非無音と検出されたときにのみ、先頭での無音トリミングの終了がトリガーされます。用途は限られます。
stop_periods
音声の末尾から無音をトリミングする回数を設定します。正の値を指定すると、指定した無音区間が見つかった後の音声をトリミングします。ファイルの中間から無音を取り除くには、負の stop_periods を指定します。この値は正の値として扱われ、stop_periods で指定したとおりに処理を再開すべきことを示すため、音声の中間にある無音区間の除去に適しています。既定値は 0。
stop_duration
音声のコピーを止める前に存在していなければならない無音の継続時間を指定します。長い継続時間を指定すると、残したい無音を音声中に残せます。既定値は 0。
stop_threshold
start_threshold と同じですが、音声の末尾から無音をトリミングする際に用います。dB 単位(指定値に "dB" を付加した場合)または振幅比で指定できます。既定値は 0。
stop_silence
トリミング後に末尾で残す無音の最大継続時間を指定します。既定値は 0 で、これは無音として検出されたすべてのサンプルをトリミングすることに等しくなります。
stop_mode
マルチチャンネル音声の先頭以降における無音開始の検出モードを指定します。any または all を指定できます。既定値は all。any の場合、いずれかのチャンネルのいずれかのサンプルが無音と検出されると、音声ストリーム先頭以降での無音トリミングの開始がトリガーされます。用途は限られます。all の場合、すべてのチャンネルのすべてのサンプルが無音と検出されたときにのみ、先頭以降での無音トリミングの開始がトリガーされます。
detection
無音をどのように検出するかを設定します。
avg
移動ウィンドウ内のサンプルの絶対値の平均。
rms
移動ウィンドウ内のサンプルの絶対値の二乗平均平方根。
peak
移動ウィンドウ内のサンプルの絶対値の最大値。
median
移動ウィンドウ内のサンプルの絶対値の中央値。
ptp
移動ウィンドウ内のサンプルの最大ピークと最小ピークの差の絶対値。
dev
移動ウィンドウ内のサンプル値の標準偏差。
既定値は rms。
window
無音検出のためのウィンドウサイズ(サンプル数)を算出するのに使う秒数で表した継続時間を設定します。0 にするとウィンドウ処理が事実上無効になり、無音検出にチャンネルあたり単一サンプルのみを使います。その場合、start_silence や stop_silence を 0 以外の値に設定し、あわせて start_duration や stop_duration も 0 以外の値に設定する必要が生じることがあります。既定値は 0.02。指定できる範囲は 0 から 10。
timestamp
出力される各音声フレームのタイムスタンプの処理モードを設定します。
write
タイムスタンプを全面的に書き換え、最初の出力フレームについてのみ開始時刻を保持します。
copy
ドロップされなかったフレームは、入力音声フレームと同じタイムスタンプのままにします。
既定値は write。
8.108.1 Examples
-
次の例は、録音ボタンを押してから演奏が始まるまでの間によく生じる先頭の遅延を含まないように録音を開始する用途に、このフィルタをどう使えるかを示しています:
silenceremove=start_periods=1:start_duration=5:start_threshold=0.02 -
音声中の 1 秒を超える無音箇所について、先頭から末尾まですべての無音を取り除きます:
silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB -
ピーク検出を使い、デジタル無音のサンプルを先頭から末尾まですべて取り除きます。音声中にデジタル無音が 0 サンプルを超えて存在し、かつデジタル無音がストリーム中の同じ位置で全チャンネルにわたって検出される場合:
silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0 -
音声中で 1 つの無音区間あたり 1 秒を超える無音について、先頭から末尾まで 2 回目ごとに現れる無音区間をトリミングします:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB -
上記と同様ですが、トリミングした各区間から最大 0.5 秒の無音を残します:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5 -
上記と同様ですが、音声の先頭から最大 1.5 秒の無音を残します:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
8.108.2 Commands
このフィルタは上記オプションの一部をコマンドとしてサポートします。
8.109 sofalizer
SOFAlizer は頭部伝達関数(HRTF)を使って、ヘッドフォンによるバイノーラル聴取のためにユーザーの周囲に仮想スピーカーを生成します(最大 9 チャンネルまでの音声フォーマットに対応)。HRTF は SOFA ファイルに格納されます(データベースについては http://www.sofacoustics.org/ を参照)。SOFAlizer はオーストリア科学アカデミーの音響学研究所(ARI)で開発されています。
このフィルタをコンパイルできるようにするには、FFmpeg を --enable-libmysofa を付けて configure する必要があります。
このフィルタは以下のオプションを受け付けます:
sofa
レンダリングに使う SOFA ファイルを設定します。
gain
音声に適用するゲインを設定します。値は dB 単位。既定値は 0。
rotation
仮想スピーカーの回転角を度単位で設定します。既定値は 0。
elevation
仮想スピーカーの仰角を度単位で設定します。既定値は 0。
radius
近接場 HRTF を使う場合のスピーカーとリスナー間の距離をメートル単位で設定します。既定値は 1。
type
処理タイプを設定します。time または freq を指定できます。time は時間領域で音声を処理し、低速です。freq は周波数領域で音声を処理し、高速です。既定値は freq。
speakers
仮想スピーカーの位置をカスタム指定します。このオプションの構文は次のとおりです:
lfegain
LFE チャンネルのゲインをカスタム指定します。値は dB 単位。既定値は 0。
framesize
フレームサイズをサンプル数でカスタム指定します。既定値は 1024。指定できる範囲は 1024 から 96000。オプション ‘type’ が freq に設定されている場合にのみ使われます。
normalize
SOFA ファイルの読み込み時にすべての IR を正規化するか。既定では有効。
interpolate
厳密な位置が一致しない場合に、最も近い IR を隣接する IR と補間するか。既定では無効。
minphase
SOFA ファイルの読み込み時にすべての IR を最小位相化します。既定では無効。
anglestep
隣接探索の角度ステップを設定します。オプション interpolate が有効な場合にのみ使われます。
radstep
隣接探索の半径ステップを設定します。オプション interpolate が有効な場合にのみ使われます。
8.109.1 Examples
-
ClubFritz6 の sofa ファイルを使います:
sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1 -
ClubFritz12 の sofa ファイルを使い、より大きな半径とわずかな回転を加えます:
sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5 -
上記と同様ですが、左前・右前・左後・右後にカスタムのスピーカー位置を指定し、さらにカスタムゲインも加えます:
"sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
8.110 speechnorm
Speech Normalizer(音声ノーマライザ)。
このフィルタは、しきい値に応じて音声サンプルの各半周期(すべて 0 より上、またはすべて 0 より下にあり、最も近い 2 つのゼロ交差の間にあるサンプルの集まり)を拡張または圧縮し、以下のオプションで制御される条件のもとで音声が目標ピーク値に達するようにします。
このフィルタは以下のオプションを受け付けます:
peak, p
拡張の目標ピーク値を設定します。これは正規化後の入力音声で許容される絶対振幅レベルの上限を指定します。既定値は 0.95。指定できる範囲は 0.0 から 1.0。
expansion, e
最大拡張係数を設定します。指定できる範囲は 1.0 から 50.0。既定値は 2.0。このオプションは、サンプルの局所的な半周期の最大拡張を制御します。最大拡張は、局所ピーク値が目標ピーク値に達するが決して超えず、かつ新旧のピーク値の比がこのオプション値を超えないような値となります。
compression, c
最大圧縮係数を設定します。指定できる範囲は 1.0 から 50.0。既定値は 2.0。このオプションは、サンプルの局所的な半周期の最大圧縮を制御します。このオプションは threshold オプションが 0.0 より大きい値に設定されている場合にのみ使われ、その場合、局所ピークが threshold で設定した値以下のときに、そのピークの半周期に属するすべてのサンプルが現在の圧縮係数で圧縮されます。
threshold, t
しきい値を設定します。既定値は 0.0。指定できる範囲は 0.0 から 1.0。このオプションは、サンプルのどの半周期が圧縮され、どれが拡張されるかを指定します。局所ピーク値がこのオプション値以下である半周期のサンプルは現在の圧縮係数で圧縮され、しきい値より大きい場合は、目標ピーク値に達するが決して超えないように拡張係数で拡張されます。
raise, r
サンプルの半周期ごとの拡張の増加量を設定します。既定値は 0.001。指定できる範囲は 0.0 から 1.0。これは、拡張係数が expansion の値に達するまでに半周期ごとにどれだけ速く上がるかを制御します。このオプションを高くしすぎると歪みを招くことがあります。
fall, f
サンプルの半周期ごとの圧縮の増加量を設定します。既定値は 0.001。指定できる範囲は 0.0 から 1.0。これは、圧縮係数が compression の値に達するまでに半周期ごとにどれだけ速く上がるかを制御します。
channels, h
フィルタリングするチャンネルを指定します。既定では利用可能なすべてのチャンネルがフィルタリングされます。
invert, i
反転フィルタリングを有効にします。既定では無効。これは threshold オプションの解釈を反転させます。有効にすると、局所ピーク値が threshold オプション以下である半周期のサンプルが拡張され、そうでなければ圧縮されます。
link, l
フィルタリングする各チャンネルのサンプルに適用するゲインを計算する際にチャンネルをリンクします。既定では無効。無効の場合はフィルタリングする各チャンネルのゲイン計算が独立に行われ、このオプションを有効にした場合は、フィルタリングする各チャンネルで取り得るすべてのゲインの最小値が使われます。
rms, m
拡張の目標 RMS 値を設定します。これは正規化後の入力音声で許容される RMS レベルの上限を指定します。既定値は 0.0 で、つまり無効。指定できる範囲は 0.0 から 1.0。
8.110.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.110.2 Examples
-
弱く緩やかな増幅:
speechnorm=e=3:r=0.00001:l=1 -
中程度で緩やかな増幅:
speechnorm=e=6.25:r=0.00001:l=1 -
強く速い増幅:
speechnorm=e=12.5:r=0.0001:l=1 -
非常に強く速い増幅:
speechnorm=e=25:r=0.0001:l=1 -
極端で速い増幅:
speechnorm=e=50:r=0.0001:l=1
8.111 stereotools
このフィルタには、ステレオ信号を扱うための便利なユーティリティがいくつか備わっており、M/S ステレオ録音をパラメータを制御しながら L/R 信号へ変換したり、マスタートラックのステレオイメージを広げたりできます。
このフィルタは以下のオプションを受け付けます:
level_in
両チャンネルについて、フィルタリング前の入力レベルを設定します。既定値は 1。指定できる範囲は 0.015625 から 64。
level_out
両チャンネルについて、フィルタリング後の出力レベルを設定します。既定値は 1。指定できる範囲は 0.015625 から 64。
balance_in
両チャンネル間の入力バランスを設定します。既定値は 0。指定できる範囲は -1 から 1。
balance_out
両チャンネル間の出力バランスを設定します。既定値は 0。指定できる範囲は -1 から 1。
softclip
ソフトクリッピングを有効にします。耳障りなデジタルの 0dB クリッピングの代わりに、アナログ的な歪みになります。既定では無効。
mutel
左チャンネルをミュートします。既定では無効。
muter
右チャンネルをミュートします。既定では無効。
phasel
左チャンネルの位相を変えます。既定では無効。
phaser
右チャンネルの位相を変えます。既定では無効。
mode
ステレオモードを設定します。指定できる値は次のとおりです:
‘lr>lr’
Left/Right から Left/Right へ。これが既定。
‘lr>ms’
Left/Right から Mid/Side へ。
‘ms>lr’
Mid/Side から Left/Right へ。
‘lr>ll’
Left/Right から Left/Left へ。
‘lr>rr’
Left/Right から Right/Right へ。
‘lr>l+r’
Left/Right から Left + Right へ。
‘lr>rl’
Left/Right から Right/Left へ。
‘ms>ll’
Mid/Side から Left/Left へ。
‘ms>rr’
Mid/Side から Right/Right へ。
‘ms>rl’
Mid/Side から Right/Left へ。
‘lr>l-r’
Left/Right から Left - Right へ。
slev
サイド信号のレベルを設定します。既定値は 1。指定できる範囲は 0.015625 から 64。
sbal
サイド信号のバランスを設定します。既定値は 0。指定できる範囲は -1 から 1。
mlev
ミドル信号のレベルを設定します。既定値は 1。指定できる範囲は 0.015625 から 64。
mpan
ミドル信号のパンを設定します。既定値は 0。指定できる範囲は -1 から 1。
base
モノラルと反転チャンネルの間でステレオベースを設定します。既定値は 0。指定できる範囲は -1 から 1。
delay
左チャンネルを右チャンネルから、またその逆をどれだけ遅延させるかをミリ秒単位で設定します。既定値は 0。指定できる範囲は -20 から 20。
sclevel
S/C レベルを設定します。既定値は 1。指定できる範囲は 1 から 100。
phase
ステレオ位相を度単位で設定します。既定値は 0。指定できる範囲は 0 から 360。
bmode_in, bmode_out
balance_in/balance_out オプションのバランスモードを設定します。
次のいずれかを指定できます:
‘balance’
クラシックなバランスモード。一度に片方のチャンネルを減衰させます。ゲインは 1 まで上がります。
‘amplitude’
上記のクラシックモードと同様ですが、ゲインは 2 まで上がります。
‘power’
等パワー分配。-6dB から +6dB の範囲。
8.111.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
8.111.2 Examples
-
カラオケのような効果を適用する:
stereotools=mlev=0.015625 -
M/S 信号を L/R に変換する:
"stereotools=mode=ms>lr"
8.112 stereowiden
このフィルタは、両チャンネルに共通する信号を抑え、左の信号を右へ(およびその逆へ)遅延させることでステレオ効果を高め、ステレオ感を広げます。
このフィルタは以下のオプションを受け付けます。
delay
左の信号を右へ(およびその逆へ)遅延させる時間をミリ秒で指定します。既定値は 20 ミリ秒です。
feedback
右へ(およびその逆へ)入る遅延信号のゲイン量です。左の信号を右の出力へ(およびその逆へ)遅延させる効果を与え、これによって広がり感が生まれます。既定値は 0.3 です。
crossfeed
左を逆位相で右へクロスフィードします。これはモノラル成分の抑制に役立ちます。値が 1 の場合は両チャンネルに共通する信号をすべて打ち消します。既定値は 0.3 です。
drymix
元のチャンネルの入力信号レベルを設定します。既定値は 0.8 です。
8.112.1 Commands
このフィルタは delay を除く上記すべてのオプションをコマンドとしてサポートします。
8.113 superequalizer
18 バンドのイコライザを適用します。
このフィルタは以下のオプションを受け付けます。
1b
65Hz バンドのゲインを設定します。
2b
92Hz バンドのゲインを設定します。
3b
131Hz バンドのゲインを設定します。
4b
185Hz バンドのゲインを設定します。
5b
262Hz バンドのゲインを設定します。
6b
370Hz バンドのゲインを設定します。
7b
523Hz バンドのゲインを設定します。
8b
740Hz バンドのゲインを設定します。
9b
1047Hz バンドのゲインを設定します。
10b
1480Hz バンドのゲインを設定します。
11b
2093Hz バンドのゲインを設定します。
12b
2960Hz バンドのゲインを設定します。
13b
4186Hz バンドのゲインを設定します。
14b
5920Hz バンドのゲインを設定します。
15b
8372Hz バンドのゲインを設定します。
16b
11840Hz バンドのゲインを設定します。
17b
16744Hz バンドのゲインを設定します。
18b
20000Hz バンドのゲインを設定します。
8.114 surround
音声のサラウンドアップミックスフィルタを適用します。
このフィルタは音声ストリームからマルチチャンネル出力を生成できます。
このフィルタは以下のオプションを受け付けます。
chl_out
出力チャンネルレイアウトを設定します。既定では 5.1 です。
必要な構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Channel Layout の節 を参照してください。
chl_in
入力チャンネルレイアウトを設定します。既定ではステレオです。
必要な構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Channel Layout の節 を参照してください。
level_in
入力音量レベルを設定します。既定では 1 です。
level_out
出力音量レベルを設定します。既定では 1 です。
lfe
出力チャンネルレイアウトに LFE チャンネルがある場合に、その出力を有効にします。既定では有効です。
lfe_low
LFE のローカットオフ周波数を設定します。既定では 128 Hz です。
lfe_high
LFE のハイカットオフ周波数を設定します。既定では 256 Hz です。
lfe_mode
LFE モードを設定します。add または sub を指定できます。既定値は add です。add モードでは LFE チャンネルが入力音声から作成され、出力に加算されます。sub モードでも LFE チャンネルは入力音声から作成されて出力に加算されますが、加えて LFE 以外のすべての出力チャンネルから出力 LFE チャンネルが減算されます。
smooth
時間的な滑らかさの強さを設定します。ステレオ音声を時間方向に変換する際に各係数を徐々に変化させるために使われます。指定できる範囲は 0.0 から 1.0 までです。focus オプションの値が 0.0 より大きい場合に出力品質を改善するのに役立ちます。既定値は 0.0 です。この範囲内かつ端を含まない値のみが効果を持ちます。
angle
ステレオサラウンド変換の角度を設定します。指定できる範囲は 0 から 360 までです。既定値は 90 です。
focus
ステレオサラウンド変換のフォーカスを設定します。指定できる範囲は -1 から 1 までです。既定値は 0 です。
fc_in
フロントセンターの入力音量を設定します。既定では 1 です。
fc_out
フロントセンターの出力音量を設定します。既定では 1 です。
fl_in
フロントレフトの入力音量を設定します。既定では 1 です。
fl_out
フロントレフトの出力音量を設定します。既定では 1 です。
fr_in
フロントライトの入力音量を設定します。既定では 1 です。
fr_out
フロントライトの出力音量を設定します。既定では 1 です。
sl_in
サイドレフトの入力音量を設定します。既定では 1 です。
sl_out
サイドレフトの出力音量を設定します。既定では 1 です。
sr_in
サイドライトの入力音量を設定します。既定では 1 です。
sr_out
サイドライトの出力音量を設定します。既定では 1 です。
bl_in
バックレフトの入力音量を設定します。既定では 1 です。
bl_out
バックレフトの出力音量を設定します。既定では 1 です。
br_in
バックライトの入力音量を設定します。既定では 1 です。
br_out
バックライトの出力音量を設定します。既定では 1 です。
bc_in
バックセンターの入力音量を設定します。既定では 1 です。
bc_out
バックセンターの出力音量を設定します。既定では 1 です。
lfe_in
LFE の入力音量を設定します。既定では 1 です。
lfe_out
LFE の出力音量を設定します。既定では 1 です。
allx
全チャンネルについて、X 軸方向へのステレオイメージの広がり量を設定します。指定できる範囲は -1 から 15 までです。既定ではこの値は負の -1 で、使用されません。
ally
全チャンネルについて、Y 軸方向へのステレオイメージの広がり量を設定します。指定できる範囲は -1 から 15 までです。既定ではこの値は負の -1 で、使用されません。
fcx, flx, frx, blx, brx, slx, srx, bcx
各チャンネルについて、X 軸方向へのステレオイメージの広がり量を設定します。指定できる範囲は 0.06 から 15 までです。既定ではこの値は 0.5 です。
fcy, fly, fry, bly, bry, sly, sry, bcy
各チャンネルについて、Y 軸方向へのステレオイメージの広がり量を設定します。指定できる範囲は 0.06 から 15 までです。既定ではこの値は 0.5 です。
win_size
ウィンドウサイズを設定します。指定できる範囲は 1024 から 65536 までです。既定のサイズは 4096 です。
win_func
ウィンドウ関数を設定します。
以下の値を受け付けます。
‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hann です。
overlap
ウィンドウのオーバーラップを設定します。1 に設定すると、選択したウィンドウ関数に推奨されるオーバーラップが選ばれます。既定値は 0.5 です。
8.115 tiltshelf
標準的なハイファイのトーンコントロールに似た応答を持つ 2 極シェルビングフィルタを用いて、音声の低い周波数をブースト(またはカット)し、高い周波数をカット(またはブースト)します。これはシェルビングイコライゼーション(EQ)とも呼ばれます。
このフィルタは以下のオプションを受け付けます。
gain, g
0 Hz でのゲインを指定します。実用的な範囲はおよそ -20(大きくカット)から +20(大きくブースト)までです。正のゲインを使う場合はクリッピングに注意してください。
frequency, f
フィルタの中心周波数を設定します。これによりブーストまたはカットする周波数範囲を広げたり狭めたりできます。既定値は 3000 Hz です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q-Factor
o
octave
s
slope
k
kHz
width, w
フィルタのシェルフ遷移の急峻さを決定します。
poles, p
極の数を設定します。既定値は 2 です。
mix, m
フィルタ処理した信号を出力にどの程度使うかを指定します。既定値は 1 です。範囲は 0 から 1 までです。
channels, c
フィルタ対象のチャンネルを指定します。既定では利用可能なすべてがフィルタ対象になります。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選びます。
s16
常に符号付き 16 ビットを使います。
s32
常に符号付き 32 ビットを使います。
f32
常に浮動小数点 32 ビットを使います。
f64
常に浮動小数点 64 ビットを使います。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近に達して打ち切られる長さより大きく)設定するとフィルタ処理は線形位相になりますが、大きさが足りないと不快なアーティファクトが生じるだけになります。
非ゼロの値に設定した場合、フィルタの遅延はちょうどこのサンプル数になることに注意してください。
8.115.1 Commands
このフィルタは一部のオプションをコマンドとしてサポートします。
8.116 treble, highshelf
標準的なハイファイのトーンコントロールに似た応答を持つ 2 極シェルビングフィルタを用いて、音声の高域(トレブル)周波数をブーストまたはカットします。これはシェルビングイコライゼーション(EQ)とも呼ばれます。
このフィルタは以下のオプションを受け付けます。
gain, g
約 22 kHz とナイキスト周波数のうち低い方でのゲインを指定します。実用的な範囲はおよそ -20(大きくカット)から +20(大きくブースト)までです。正のゲインを使う場合はクリッピングに注意してください。
frequency, f
フィルタの中心周波数を設定します。これによりブーストまたはカットする周波数範囲を広げたり狭めたりできます。既定値は 3000 Hz です。
width_type, t
フィルタの帯域幅を指定する方法を設定します。
h
Hz
q
Q-Factor
o
octave
s
slope
k
kHz
width, w
フィルタのシェルフ遷移の急峻さを決定します。
poles, p
極の数を設定します。既定値は 2 です。
mix, m
フィルタ処理した信号を出力にどの程度使うかを指定します。既定値は 1 です。範囲は 0 から 1 までです。
channels, c
フィルタ対象のチャンネルを指定します。既定では利用可能なすべてがフィルタ対象になります。
normalize, n
biquad 係数を正規化します。既定では無効です。有効にすると DC での振幅応答を 0dB に正規化します。
transform, a
IIR フィルタの変換タイプを設定します。
di dii tdi tdii latt svf zdf precision, r
フィルタ処理の精度を設定します。
auto
サラウンドフィルタに応じてサンプルフォーマットを自動的に選びます。
s16
常に符号付き 16 ビットを使います。
s32
常に符号付き 32 ビットを使います。
f32
常に浮動小数点 32 ビットを使います。
f64
常に浮動小数点 64 ビットを使います。
block_size, b
逆方向 IIR 処理に使うブロックサイズを設定します。この値を十分大きく(インパルス応答がゼロ付近に達して打ち切られる長さより大きく)設定するとフィルタ処理は線形位相になりますが、大きさが足りないと不快なアーティファクトが生じるだけになります。
非ゼロの値に設定した場合、フィルタの遅延はちょうどこのサンプル数になることに注意してください。
8.116.1 Commands
このフィルタは以下のコマンドをサポートします。
frequency, f
トレブルの周波数を変更します。コマンドの構文は次のとおりです: "frequency"
width_type, t
トレブルの width_type を変更します。コマンドの構文は次のとおりです: "width_type"
width, w
トレブルの width を変更します。コマンドの構文は次のとおりです: "width"
gain, g
トレブルのゲインを変更します。コマンドの構文は次のとおりです: "gain"
mix, m
トレブルの mix を変更します。コマンドの構文は次のとおりです: "mix"
8.117 tremolo
正弦波による振幅変調です。
このフィルタは以下のオプションを受け付けます。
f
変調周波数(Hz)です。サブハーモニック領域(20 Hz 以下)の変調周波数ではトレモロ効果が得られます。20 Hz より高い変調周波数を指定すれば、このフィルタはリングモジュレータとしても使えます。範囲は 0.1 〜 20000.0 です。既定値は 5.0 Hz です。
d
変調の深さをパーセンテージで指定します。範囲は 0.0 〜 1.0 です。既定値は 0.5 です。
8.118 vibrato
正弦波による位相変調です。
このフィルタは以下のオプションを受け付けます。
f
変調周波数(Hz)です。範囲は 0.1 〜 20000.0 です。既定値は 5.0 Hz です。
d
変調の深さをパーセンテージで指定します。範囲は 0.0 〜 1.0 です。既定値は 0.5 です。
8.119 virtualbass
音声の Virtual Bass フィルタを適用します。
このフィルタはステレオ入力を受け取り、LFE 付きステレオ(2.1)チャンネルの出力を生成します。新たに生成される LFE チャンネルには、元のステレオ両チャンネルから得た仮想的な低音が強調されて含まれます。このフィルタはフロントレフトとフロントライトのチャンネルを、ステレオ入力のまま変更せずに出力します。
このフィルタは以下のオプションを受け付けます。
cutoff
仮想低音のカットオフ周波数を設定します。既定値は 250 Hz です。指定できる範囲は 100 から 500 Hz までです。
strength
仮想低音の強さを設定します。指定できる範囲は 0.5 から 3 までです。既定値は 3 です。
8.120 volume
入力音声の音量を調整します。
以下のパラメータを受け付けます。
volume
音声の音量を表す式を設定します。
出力値は最大値でクリップされます。
出力音声の音量は次の関係で与えられます。
output_volume = volume * input_volume
volume の既定値は "1.0" です。
precision
このパラメータは数値計算の精度を表します。
どの入力サンプルフォーマットを許可するかを決定し、それが音量スケーリングの精度に影響します。
fixed
8 ビット固定小数点。入力サンプルフォーマットを U8、S16、S32 に制限します。
float
32 ビット浮動小数点。入力サンプルフォーマットを FLT に制限します。(既定)
double
64 ビット浮動小数点。入力サンプルフォーマットを DBL に制限します。
replaygain
入力フレームで ReplayGain サイドデータに遭遇したときの動作を選びます。
drop
ReplayGain サイドデータを除去し、その内容を無視します(既定)。
ignore
ReplayGain サイドデータを無視しますが、フレーム内には残します。
track
トラックゲインがあれば、それを優先します。
album
アルバムゲインがあれば、それを優先します。
replaygain_preamp
選択した replaygain のゲインに適用するプリアンプゲイン(dB)です。
replaygain_preamp の既定値は 0.0 です。
replaygain_noclip
適用するゲインを制限してクリッピングを防ぎます。
replaygain_noclip の既定値は 1 です。
eval
volume 式を評価するタイミングを設定します。
以下の値を受け付けます。
‘once’
フィルタの初期化時、または ‘volume’ コマンドが送られたときに一度だけ式を評価します。
‘frame’
入ってくるフレームごとに式を評価します。
既定値は ‘once’ です。
volume 式には以下のパラメータを含められます。
n
フレーム番号(ゼロから始まる)
nb_channels
チャンネル数
nb_consumed_samples
フィルタが消費したサンプル数
nb_samples
現在のフレームのサンプル数
pos
ファイル内での元のフレーム位置。非推奨であり、使用しないでください。
pts
フレームの PTS
sample_rate
サンプリングレート
startpts
ストリーム開始時の PTS
startt
ストリーム開始時の時刻
t
フレームの時刻
tb
タイムスタンプのタイムベース
volume
最後に設定された音量値
eval が ‘once’ に設定されている場合、利用できるのは sample_rate と tb の変数のみで、それ以外の変数はすべて NAN に評価されることに注意してください。
8.120.1 Commands
このフィルタは次のコマンドに対応しています。
volume
音量の式を変更します。このコマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が保持されます。
8.120.2 Examples
- 入力音声の音量を半分にする:
volume=volume=0.5 volume=volume=1/2 volume=volume=-6.0206dB
上記いずれの例でも、volume という名前付きキーは省略できます。たとえば次のように書けます。
volume=0.5
-
固定小数点精度を使って入力音声のパワーを 6 デシベル上げる:
volume=volume=6dB:precision=fixed -
時刻 10 以降、5 秒間の減衰期間をかけて音量をフェードさせる:
volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
8.121 volumedetect
入力映像の音量を検出します。
このフィルタにはパラメータがありません。対応するのは 16 ビット符号付き整数のサンプルのみで、必要に応じて入力が変換されます。音量に関する統計情報は、入力ストリームの終端に達したときにログへ出力されます。
具体的には、平均音量(二乗平均平方根)、最大音量(サンプル単位)、および記録された音量値のヒストグラムの先頭部分(最大値からサンプルの累積 1/1000 まで)を表示します。
音量はすべて、最大 PCM 値を基準としたデシベルで表されます。
8.121.1 Examples
出力の抜粋を次に示します。
[Parsed_volumedetect_0 0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0 0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0 0xa23120] histogram_4db: 6
[Parsed_volumedetect_0 0xa23120] histogram_5db: 62
[Parsed_volumedetect_0 0xa23120] histogram_6db: 286
[Parsed_volumedetect_0 0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0 0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0 0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0 0xa23120] histogram_10db: 8409
これは次のことを意味します。
- 平均二乗エネルギーはおよそ -27 dB、つまり 10^-2.7 です。
- 最大のサンプルは -4 dB、より正確には -4 dB から -5 dB の間にあります。
- -4 dB のサンプルが 6 個、-5 dB が 62 個、-6 dB が 286 個、というように続きます。
言い換えると、音量を +4 dB 上げてもクリッピングは起きず、+5 dB 上げると 6 サンプルでクリッピングが発生する、という具合です。
8.122 whisper
OpenAI の Whisper モデルを使って自動音声認識を実行します。
前提として whisper.cpp ライブラリ (https://github.com/ggml-org/whisper.cpp) が必要です。ライブラリをインストールした後、./configure --enable-whisper で有効化できます。
このフィルタには次のオプションがあります。
model
ダウンロードした whisper.cpp モデルのファイルパス(必須)。
language
文字起こしに使用する言語(自動検出は 'auto')。既定値: "auto"
translate
有効にすると、文字起こしを元の言語から英語へ翻訳します。このオプションを有効にするにはマルチリンガルモデルが必要です。既定値: "false"
queue
whisper で音声を処理する前にフィルタへキューイングできる最大サイズです。小さい値を使うと音声ストリームはより頻繁に処理されますが、文字起こしの品質は下がり、必要な処理能力は高くなります。大きい値(例: 10~20 秒)を使うと、(whisper-cli ツールのように)より少ない CPU でより正確な結果が得られますが、文字起こしのレイテンシは高くなるため、リアルタイムストリームの処理には向きません。vad_model オプションを大きな queue 値と組み合わせて使うことを検討してください。既定値: "3"
use_gpu
GPU サポートを有効にするかどうか。既定値: "true"
gpu_device
使用する GPU デバイスのインデックス。既定値: "0"
destination
設定すると、文字起こしの出力が指定したファイルまたは URL(FFmpeg の AVIO プロトコルのいずれかを使用)へ送られます。設定しない場合、出力は info メッセージとしてログに記録されます。出力は "lavfi.whisper.text" フレームメタデータにも設定されます。出力先がファイルで、すでに存在する場合は上書きされます。
format
出力先のフォーマット文字列です。"text"(文字起こしされたテキストのみを出力先へ送る)、"srt"(字幕フォーマット)、"json" のいずれかを指定できます。既定値: "text"
max_len
文字数で表したセグメントの最大長です。0 より大きい値に設定すると、文字起こしのセグメントがこの長さを超えないよう単語単位で分割されます。これは行の短い字幕を生成するのに便利です。既定値: "0"
vad_model
VAD モデルファイルへのパスです。設定すると、フィルタは音声キューを分割するために使用する追加の音声区間検出 (voice activity detection) モジュール (https://github.com/snakers4/silero-vad) を読み込みます。このオプションには whisper.cpp リポジトリから取得した有効なパス(例: "../whisper.cpp/models/ggml-silero-v5.1.2.bin")を設定し、queue パラメータをより大きな値(例: 20)に増やしてください。
vad_threshold
使用する VAD のしきい値。既定値: "0.5"
vad_min_speech_duration
VAD で発話とみなす最小の継続時間。既定値: "0.1"
vad_min_silence_duration
VAD で無音とみなす最小の継続時間。既定値: "0.5"
8.122.1 Examples
-
srt ファイルを生成しながら文字起こしを実行する:
ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\ :language=en\ :queue=3\ :destination=output.srt\ :format=srt" -f null - -
文字起こしを実行し、出力を JSON フォーマットで HTTP サービスへ送る:
ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\ :language=en\ :queue=3\ :destination=http\\://localhost\\:3000\ :format=json' -f null - -
VAD オプションを使ってマイク入力を文字起こしする:
ffmpeg -loglevel warning -f pulse -i default \ -af 'highpass=f=200,lowpass=f=3000,whisper=model=../whisper.cpp/models/ggml-medium.bin\ :language=en\ :queue=10\ :destination=-\ :format=json\ :vad_model=../whisper.cpp/models/ggml-silero-v5.1.2.bin' -f null -
9 Audio Sources
以下では、現在利用可能な音声ソースについて説明します。
9.1 abuffer
音声フレームをバッファリングし、フィルタチェインで利用できるようにします。
このソースは主にプログラムからの利用、特に libavfilter/buffersrc.h で定義されたインターフェイスを通じた利用を想定しています。
次のパラメータを受け付けます。
time_base
送信するフレームのタイムスタンプに使用するタイムベースです。浮動小数点数か、分子/分母の形式のいずれかでなければなりません。
sample_rate
入ってくる音声バッファのサンプリングレートです。
sample_fmt
入ってくる音声バッファのサンプルフォーマットです。サンプルフォーマット名か、libavutil/samplefmt.h の enum AVSampleFormat における対応する整数表現のいずれかです。
channel_layout
入ってくる音声バッファのチャンネルレイアウトです。libavutil/channel_layout.c の channel_layout_map にあるチャンネルレイアウト名か、libavutil/channel_layout.h の AV_CH_LAYOUT_* マクロにおける対応する整数表現のいずれかです。
channels
入ってくる音声バッファのチャンネル数です。channels と channel_layout の両方を指定する場合は、両者が整合していなければなりません。
9.1.1 Examples
abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
これは、44100Hz のプレーナ 16 ビット符号付きステレオを受け付けるようソースに指示します。サンプルフォーマット名 "s16p" は数値 6 に対応し、"stereo" チャンネルレイアウトは値 0x3 に対応するため、これは次と同等です。
abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
9.2 aevalsrc
式で指定した音声信号を生成します。
このソースは、入力として 1 つ以上の式(チャンネルごとに 1 つ)を受け付け、それらを評価して対応する音声信号を生成します。
このソースは次のオプションを受け付けます。
exprs
チャンネルごとに '|' で区切った式のリストを設定します。channel_layout オプションを指定しない場合、選択されるチャンネルレイアウトは指定した式の数に依存します。指定した場合、最後に指定した式が残りの出力チャンネルに適用されます。
channel_layout, c
チャンネルレイアウトを設定します。指定したレイアウトのチャンネル数は、指定した式の数と一致しなければなりません。
duration, d
生成する音声の最小継続時間を設定します。受け付けられる構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。生成される音声は常に完全なフレームの終端で区切られるため、結果の継続時間は指定した継続時間より長くなる場合があります。
指定しない場合、または式で表した継続時間が負の場合は、音声を無限に生成し続けるものとみなされます。
nb_samples, n
出力フレームごとのチャンネルあたりのサンプル数を設定します。既定値は 1024 です。
sample_rate, s
サンプリングレートを指定します。既定値は 44100 です。
exprs の各式には、次の定数を含めることができます。
n
評価対象のサンプルの番号。0 から始まります。
t
評価対象のサンプルの時刻。秒単位で表され、0 から始まります。
s
サンプリングレート。
9.2.1 Examples
-
無音を生成する:
aevalsrc=0 -
周波数 440 Hz の sin 信号を生成し、サンプリングレートを 8000 Hz に設定する:
aevalsrc="sin(440*2*PI*t):s=8000" -
2 チャンネルの信号を生成し、チャンネルレイアウト(Front Center + Back Center)を明示的に指定する:
aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC" -
ホワイトノイズを生成する:
aevalsrc="-2+random(0)" -
振幅変調された信号を生成する:
aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)" -
360 Hz のキャリア上に 2.5 Hz のバイノーラルビートを生成する:
aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
9.3 afdelaysrc
分数遅延 FIR 係数を生成します。
生成されたストリームは、音声信号をフィルタリングするために afir フィルタとともに使用できます。
このフィルタは次のオプションを受け付けます。
delay, d
分数遅延を設定します。既定は 0 です。
sample_rate, r
サンプリングレートを設定します。既定は 44100 です。
nb_samples, n
フレームごとのサンプル数を設定します。既定は 1024 です。
taps, t
出力音声ストリームのフィルタ係数の数を設定します。既定値は 0 です。
channel_layout, c
チャンネルレイアウトを指定します。チャンネルレイアウトを表す文字列を指定できます。channel_layout の既定値は "stereo" です。
9.4 afireqsrc
FIR イコライザ係数を生成します。
生成されたストリームは、音声信号をフィルタリングするために afir フィルタとともに使用できます。
このフィルタは次のオプションを受け付けます。
preset, p
イコライザのプリセットを設定します。既定のプリセットは flat です。
利用可能なプリセットは次のとおりです。
‘custom’ ‘flat’ ‘acoustic’ ‘bass’ ‘beats’ ‘classic’ ‘clear’ ‘deep bass’ ‘dubstep’ ‘electronic’ ‘hard-style’ ‘hip-hop’ ‘jazz’ ‘metal’ ‘movie’ ‘pop’ ‘r&b’ ‘rock’ ‘vocal booster’ gains, g
各バンドのカスタムゲインを設定します。preset オプションが custom に設定されている場合にのみ使用されます。ゲインは空白で区切り、それぞれ dBFS で設定します。既定は 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 です。
bands, b
カスタムイコライザのゲインを設定する対象のカスタムバンドを設定します。これは厳密に増加する順序でなければなりません。preset オプションが custom に設定されている場合にのみ使用されます。バンドは空白で区切り、それぞれ周波数を Hz で表します。既定は 25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000 です。
taps, t
出力音声ストリームのフィルタ係数の数を設定します。既定値は 4096 です。
sample_rate, r
出力音声ストリームのサンプリングレートを設定します。既定は 44100 です。
nb_samples, n
出力音声ストリームのフレームごとのサンプル数を設定します。既定は 1024 です。
interp, i
FIR イコライザ係数の補間方法を設定します。linear または cubic を指定できます。
phase, h
FIR フィルタの位相タイプを設定します。linear または min(最小位相)を指定できます。既定は最小位相フィルタです。
9.5 afirsrc
周波数サンプリング法を使って FIR 係数を生成します。
生成されたストリームは、音声信号をフィルタリングするために afir フィルタとともに使用できます。
このフィルタは次のオプションを受け付けます。
taps, t
出力音声ストリームのフィルタ係数の数を設定します。既定値は 1025 です。
frequency, f
振幅と位相を設定する対象の周波数点を設定します。これは非減少の順序でなければならず、最初の要素は 0、最後の要素は 1 でなければなりません。要素は空白で区切ります。
magnitude, m
frequency で設定した各周波数点の振幅値を設定します。値の数は周波数点の数と同じでなければなりません。値は空白で区切ります。
phase, p
frequency で設定した各周波数点の位相値を設定します。値の数は周波数点の数と同じでなければなりません。値は空白で区切ります。
sample_rate, r
サンプリングレートを設定します。既定は 44100 です。
nb_samples, n
フレームごとのサンプル数を設定します。既定は 1024 です。
win_func, w
窓関数を設定します。既定は blackman です。
9.6 anullsrc
null 音声ソースで、未処理の音声フレームを返します。主にテンプレートとして、また解析/デバッグツールでの利用や、入力データを無視するフィルタ(たとえば sox synth フィルタ)のソースとして役立ちます。
このソースは次のオプションを受け付けます。
channel_layout, cl
チャンネルレイアウトを指定します。整数か、チャンネルレイアウトを表す文字列のいずれかを指定できます。channel_layout の既定値は "stereo" です。
文字列とチャンネルレイアウト値の対応については、libavutil/channel_layout.c の channel_layout_map の定義を確認してください。
sample_rate, r
サンプリングレートを指定します。既定は 44100 です。
nb_samples, n
要求するフレームごとのサンプル数を設定します。
duration, d
生成する音声の継続時間を設定します。受け付けられる構文については (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual を参照してください。
指定しない場合、または式で表した継続時間が負の場合は、音声を無限に生成し続けるものとみなされます。
9.6.1 Examples
-
サンプリングレートを 48000 Hz に、チャンネルレイアウトを AV_CH_LAYOUT_MONO に設定する。
anullsrc=r=48000:cl=4 -
より分かりやすい構文で同じ操作を行う:
anullsrc=r=48000:cl=mono
すべてのパラメータを明示的に定義する必要があります。
9.7 flite
libflite ライブラリを使って音声発話を合成します。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libflite で configure する必要があります。
2.0 より前のバージョンの flite ライブラリはスレッドセーフでない点に注意してください。
このフィルタは次のオプションを受け付けます。
list_voices
1 に設定すると、利用可能なボイスの名前を一覧表示してすぐに終了します。既定値は 0 です。
nb_samples, n
フレームごとの最大サンプル数を設定します。既定値は 512 です。
textfile
読み上げるテキストを含むファイル名を設定します。
text
読み上げるテキストを設定します。
voice, v
音声合成に使用するボイスを設定します。既定値は kal です。list_voices オプションも参照してください。
9.7.1 Examples
-
ファイル speech.txt から読み込み、標準の flite ボイスでテキストを合成する:
flite=textfile=speech.txt -
指定したテキストを
sltボイスを選択して読み込む:flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt -
ffmpeg にテキストを入力する:
ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt -
fliteとlavfiデバイスを使って ffplay に指定したテキストを読み上げさせる:ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
libflite の詳細については http://www.festvox.org/flite/ を参照してください。
9.8 anoisesrc
ノイズ音声信号を生成します。
このフィルタは次のオプションを受け付けます。
sample_rate, r
サンプリングレートを指定します。既定値は 48000 Hz です。
amplitude, a
生成する音声ストリームの振幅(0.0 - 1.0)を指定します。既定値は 1.0 です。
duration, d
生成する音声ストリームの継続時間を指定します。このオプションを指定しない場合、長さが無限のノイズになります。
color, colour, c
ノイズの色を指定します。利用可能なノイズの色は white、pink、brown、blue、violet、velvet です。既定の色は white です。
seed, s
PRNG のシードに使用する値を指定します。
nb_samples, n
出力フレームごとのサンプル数を設定します。既定は 1024 です。
density
velvet ノイズジェネレータの密度(0.0 - 1.0)を設定します。既定は 0.05 です。
9.8.1 Examples
- 44.1 kHz のサンプリングレートと 0.5 の振幅で、60 秒のピンクノイズを生成する:
anoisesrc=d=60:c=pink:r=44100:a=0.5
9.9 hilbert
奇数タップのヒルベルト変換 FIR 係数を生成します。
生成されたストリームは、信号の位相を 90 度シフトするために afir フィルタとともに使用できます。
これは多くのマトリックスコーディング方式や、解析信号の生成に使われます。この処理はしばしば虚数単位 i(または j)による乗算として記述されます。
このフィルタは次のオプションを受け付けます。
sample_rate, s
サンプリングレートを設定します。既定は 44100 です。
taps, t
FIR フィルタの長さを設定します。既定は 22051 です。
nb_samples, n
フレームごとのサンプル数を設定します。
win_func, w
FIR 係数を生成する際に使用する窓関数を設定します。
9.10 sinc
sinc カイザー窓のローパス、ハイパス、バンドパス、またはバンドリジェクト FIR 係数を生成します。
生成されたストリームは、音声信号をフィルタリングするために afir フィルタとともに使用できます。
このフィルタは次のオプションを受け付けます。
sample_rate, r
サンプリングレートを設定します。既定は 44100 です。
nb_samples, n
フレームごとのサンプル数を設定します。既定は 1024 です。
hp
ハイパス周波数を設定します。既定は 0 です。
lp
ローパス周波数を設定します。既定は 0 です。ハイパス周波数がローパス周波数より低く、かつローパス周波数が 0 より大きい場合、フィルタはバンドパスフィルタの係数を生成し、そうでない場合はバンドリジェクトフィルタの係数を生成します。
phase
フィルタの位相応答を設定します。既定は 50 です。許容範囲は 0 から 100 です。
beta
カイザー窓の beta を設定します。
att
阻止帯域の減衰量を設定します。既定は 120dB、許容範囲は 40 から 180 dB です。
round
丸めを有効にします。既定では無効です。
hptaps
ハイパスフィルタのタップ数を設定します。
lptaps
ローパスフィルタのタップ数を設定します。
9.11 sine
振幅 1/8 のサイン波からなる音声信号を生成します。
この音声信号はビット完全 (bit-exact) です。
このフィルタは次のオプションを受け付けます。
frequency, f
キャリア周波数を設定します。既定は 440 Hz です。
beep_factor, b
キャリア周波数の beep_factor 倍の周波数で、毎秒の周期的なビープ音を有効にします。既定は 0 で、ビープ音は無効です。
sample_rate, r
サンプリングレートを指定します。既定は 44100 です。
duration, d
生成する音声ストリームの継続時間を指定します。
samples_per_frame
出力フレームごとのサンプル数を設定します。
式には次の定数を含めることができます。
n
出力音声フレームの(連番の)番号。0 から始まります。
pts
出力音声フレームの PTS(Presentation TimeStamp)。TB 単位で表されます。
t
出力音声フレームの PTS。秒単位で表されます。
TB
出力音声フレームのタイムベース。
既定は 1024 です。
9.11.1 Examples
-
単純な 440 Hz のサイン波を生成する:
sine -
220 Hz のサイン波を、毎秒 880 Hz のビープ音付きで 5 秒間生成する:
sine=220:4:d=5 sine=f=220:b=4:d=5 sine=frequency=220:beep_factor=4:duration=5 -
1602,1601,1602,1601,1602という NTSC パターンに従う 1 kHz のサイン波を生成する:sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
10 Audio Sinks
以下では、現在利用可能な音声シンクについて説明します。
10.1 abuffersink
音声フレームをバッファリングし、フィルタチェインの末尾で利用できるようにします。
このシンクは主にプログラムからの利用、特に libavfilter/buffersink.h で定義されたインターフェイスまたはオプションシステムを通じた利用を想定しています。
このシンクは AVABufferSinkContext 構造体へのポインタを受け付けます。この構造体は入ってくるバッファのフォーマットを定義し、初期化のために avfilter_init_filter へ opaque パラメータとして渡されます。
10.2 anullsink
ヌル音声シンクです。入力された音声に対しては何も行いません。主にテンプレートとして、また解析・デバッグ用ツールでの利用に役立ちます。
11 映像フィルタ
FFmpeg のビルドを構成する際、既存のフィルタはどれでも --disable-filters で無効化できます。configure の出力には、ビルドに含まれる映像フィルタが表示されます。
以下に、現在利用可能な映像フィルタを説明します。
11.1 addroi
映像フレーム内に注目領域(region of interest)をマークします。
フレームデータはそのまま素通しされますが、フレームには注目領域を示すメタデータが付加され、後段のエンコードの挙動に影響を与えることがあります。フィルタを複数回適用すれば、複数の領域をマークできます。
x
フレーム左端から領域までの距離(ピクセル単位)。
y
フレーム上端から領域までの距離(ピクセル単位)。
w
領域の幅(ピクセル単位)。
h
領域の高さ(ピクセル単位)。
パラメータ x、y、w、h は式であり、次の変数を含められます。
iw
入力フレームの幅。
ih
入力フレームの高さ。
qoffset
領域内に適用する量子化オフセット。
これは -1 から +1 の範囲の実数でなければなりません。値ゼロは品質の変化なしを意味します。負の値はより高い品質(量子化を弱く)を要求し、正の値はより低い品質(量子化を強く)を要求します。
範囲は、極端な値が可能な限り最大のオフセットを示すよう調整されています。フレームの残りの部分が可能な限り最悪の品質でエンコードされる場合でも、-1 のオフセットはこの領域を可能な限り最良の品質でエンコードすべきことを示します。中間の値は、コーデックに依存する何らかの方法で補間されます。
たとえば 10ビットの H.264 では、量子化パラメータは -12 から 51 の間で変化します。したがって典型的な qoffset 値である -1/10 は、この領域を全範囲の約10分の1だけフレームの残りより良い QP でエンコードすべきことを示します。よって、フレームの大半が QP 約30でエンコードされる場合、この領域は QP 約24(おおよそ -1/10 * (51 - -12) = -6.3 のオフセット)になります。極端な値である -1 は、フレームの残りの扱いにかかわらずこの領域を可能な限り最良の品質でエンコードすべきこと、すなわち QP -12 でエンコードすべきことを示します。
clear
true に設定すると、新しい領域を追加する前に、フレームにマークされている既存の注目領域をすべて除去します。
11.1.1 例
-
フレーム中央の4分の1を注目領域としてマークします。
addroi=iw/4:ih/4:iw/2:ih/2:-1/10 -
フレーム左端の幅100ピクセルの領域を、非常に注目度の低い領域(残りより大幅に低い品質でエンコードする)としてマークします。
addroi=0:0:100:ih:+1/5
11.2 alphaextract
入力からアルファ成分を取り出し、グレースケール映像として出力します。これは alphamerge フィルタと組み合わせると特に便利です。
11.3 alphamerge
主入力のアルファ成分を、2つ目の入力のグレースケール値で追加または置き換えます。これは alphaextract と組み合わせて使うことを想定しており、アルファチャンネルをサポートしないフォーマットでアルファを持つフレーム列を伝送・保存できるようにします。
たとえば、通常の YUV エンコードされた映像と、alphaextract で作成した別の映像から完全なフレームを再構成するには、次のように使います。
movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
11.4 amplify
現在のピクセルと、隣接するフレームの同じ位置のピクセルとの差を増幅します。
このフィルタは次のオプションを受け付けます。
radius
フレーム半径を設定します。既定値は 2。指定できる範囲は 1 から 63。たとえば半径 3 にすると、フィルタは7フレームの平均を計算します。
factor
差を増幅する係数を設定します。既定値は 2。指定できる範囲は 0 から 65535。
threshold
差の増幅に対するしきい値を設定します。この値以上の差は元のピクセルを変化させません。既定値は 10。指定できる範囲は 0 から 65535。
tolerance
差の増幅に対する許容値を設定します。この値より小さい差は元のピクセルを変化させません。既定値は 0。指定できる範囲は 0 から 65535。
low
元のピクセルを変化させる際の下限を設定します。既定値は 65535。指定できる範囲は 0 から 65535。このオプションは、元のピクセル値を下げる量の最大値を制御します。
high
元のピクセルを変化させる際の上限を設定します。既定値は 65535。指定できる範囲は 0 から 65535。このオプションは、元のピクセル値を上げる量の最大値を制御します。
planes
フィルタ対象のプレーンを設定します。既定値は all。指定できる範囲は 0 から 15。
11.4.1 コマンド
このフィルタは、同名のオプションに対応する次のコマンドをサポートします。
factor threshold tolerance low high planes
11.5 ass
subtitles フィルタと同じですが、動作に libavcodec と libavformat を必要としません。一方で、ASS(Advanced Substation Alpha)字幕ファイルに限定されます。
このフィルタは subtitles フィルタの filename/f、original_size、fontsdir、alpha を受け付け、さらに次のオプションを受け付けます。
shaping
シェイピングエンジンを設定します。
指定できる値は次のとおりです。
‘auto’
既定の libass シェイピングエンジンで、利用可能なもののうち最良です。
‘simple’
高速でフォントに依存しないシェイパーです。置換のみを行えます。
‘complex’
OpenType を用いて置換と配置を行う、より低速なシェイパーです。アラビア語、ヘブライ語、デーヴァナーガリー、タイ語など複雑な文字体系を正しく描画するために必要です。libass が HarfBuzz 付きでビルドされている必要があります。
既定値は auto。
11.6 atadenoise
映像入力に適応型時間平均ノイズ除去(Adaptive Temporal Averaging Denoiser)を適用します。
このフィルタは次のオプションを受け付けます。
0a
1番目のプレーンのしきい値 A を設定します。既定値は 0.02。有効範囲は 0 から 0.3。
0b
1番目のプレーンのしきい値 B を設定します。既定値は 0.04。有効範囲は 0 から 5。
1a
2番目のプレーンのしきい値 A を設定します。既定値は 0.02。有効範囲は 0 から 0.3。
1b
2番目のプレーンのしきい値 B を設定します。既定値は 0.04。有効範囲は 0 から 5。
2a
3番目のプレーンのしきい値 A を設定します。既定値は 0.02。有効範囲は 0 から 0.3。
2b
3番目のプレーンのしきい値 B を設定します。既定値は 0.04。有効範囲は 0 から 5。
しきい値 A は入力信号の急激な変化に反応するよう設計され、しきい値 B は入力信号の連続的な変化に反応するよう設計されています。
s
フィルタが平均化に使うフレーム数を設定します。既定値は 9。[5, 129] の範囲の奇数でなければなりません。
p
フィルタが平均化に使うフレームのプレーンを設定します。既定値は all。
a
フィルタが平均化に使うアルゴリズムの種別を設定します。既定値は並列を表す p。代わりに直列を表す s を設定できます。
並列は直列より速い場合がありますが、その逆は決して起こりません。並列はしきい値を超える最初の変化で早期に打ち切るのに対し、直列は両側のフレームがしきい値以下であれば処理を続行します。
0s 1s 2s
1番目、2番目、3番目のプレーンのシグマを設定します。既定値は 32767。有効範囲は 0 から 32767。このオプションは、size で定義された半径内の各ピクセルの重みを制御します。既定値はすべてのピクセルが同じ重みを持つことを意味します。このオプションを 0 に設定すると、実質的にフィルタリングを無効化します。
11.6.1 コマンド
このフィルタは、s オプションを除きオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
11.7 avgblur
平均ぼかしフィルタを適用します。
このフィルタは次のオプションを受け付けます。
sizeX
水平方向の半径サイズを設定します。
planes
フィルタ対象のプレーンを設定します。既定ではすべてのプレーンがフィルタされます。
sizeY
垂直方向の半径サイズを設定します。ゼロの場合は sizeX と同じになります。既定値は 0。
11.7.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.8 backgroundkey
静的な背景を透明に変えます。
このフィルタは次のオプションを受け付けます。
threshold
シーンチェンジ検出のしきい値。
similarity
背景との類似度(パーセント)。
blend
類似していないピクセルに対するブレンド量を設定します。
11.8.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.9 bbox
入力フレームの輝度プレーンにおける非黒ピクセルのバウンディングボックスを計算します。
このフィルタは、許容される最小値より大きい輝度値を持つすべてのピクセルを含むバウンディングボックスを計算します。バウンディングボックスを表すパラメータはフィルタのログに出力されます。
このフィルタは次のオプションを受け付けます。
min_val
最小の輝度値を設定します。既定値は 16。
11.9.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.10 bilateral
バイラテラルフィルタを適用します。エッジを保ちながら空間的に平滑化します。
このフィルタは次のオプションを受け付けます。
sigmaS
空間方向の重みを計算するガウス関数のシグマを設定します。指定できる範囲は 0 から 512。既定値は 0.1。
sigmaR
値域方向の重みを計算するガウス関数のシグマを設定します。指定できる範囲は 0 から 1。既定値は 0.1。
planes
フィルタ対象のプレーンを設定します。既定では最初のプレーンのみ。
11.10.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.11 bitplanenoise
ビットプレーンノイズを表示・測定します。
このフィルタは次のオプションを受け付けます。
bitplane
解析するプレーンを設定します。既定値は 1。
filter
上で設定した bitplane からノイズの多いピクセルを除去します。既定では無効です。
11.12 blackdetect, blackdetect_vulkan
(ほぼ)完全に黒い映像区間を検出します。チャプターの切り替わり、コマーシャル、不正な録画の検出に役立ちます。
このフィルタは検出解析の結果をログとフレームメタデータの両方に出力します。指定した最小継続時間以上の黒区間が見つかると、開始・終了のタイムスタンプと継続時間を含む行が info レベルでログに出力されます。さらに、各フレームについて検出された黒量を示す行が debug レベルで出力されます。
このフィルタはまた、黒区間の最初のフレームにキー lavfi.black_start のメタデータを、黒区間が終わった直後のフレームにキー lavfi.black_end のメタデータを付加します。値はそのフレームのタイムスタンプです。このメタデータは、指定した最小継続時間にかかわらず付加されます。
このフィルタは次のオプションを受け付けます。
black_min_duration, d
検出する黒区間の最小継続時間を秒で設定します。非負の浮動小数点数でなければなりません。
既定値は 2.0。
picture_black_ratio_th, pic_th
画像を「黒」とみなすしきい値を設定します。次の比率の最小値を表します。
nb_black_pixels / nb_pixels
この比率に対して画像が黒とみなされます。既定値は 0.98。
pixel_black_th, pix_th
ピクセルを「黒」とみなすしきい値を設定します。
このしきい値は、ピクセルが「黒」とみなされる最大の輝度値を表します。与えた値は次の式に従ってスケーリングされます。
absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size
luma_range_size と luma_minimum_value は入力映像フォーマットに依存し、範囲は YUV フルレンジフォーマットでは [0-255]、YUV 非フルレンジフォーマットでは [16-235] となります。
既定値は 0.10。
alpha
true の場合、輝度チャンネルの代わりにアルファチャンネルを調べます。ほぼ黒のフレームではなく、(ほぼ)透明なフレームを検出します。
既定では無効です。
次の例は、ピクセルの最大しきい値を最小値に設定し、2秒以上の黒区間のみを検出します。
blackdetect=d=2:pix_th=0.00
11.13 blackframe
(ほぼ)完全に黒いフレームを検出します。チャプターの切り替わりやコマーシャルの検出に役立ちます。出力行は、検出したフレームのフレーム番号、黒さの割合、(判明していれば)ファイル内の位置(不明なら -1)、秒単位のタイムスタンプで構成されます。
出力行を表示するには、loglevel を少なくとも AV_LOG_INFO 値に設定する必要があります。
このフィルタはフレームメタデータ lavfi.blackframe.pblack を出力します。値は、画像内でしきい値を下回るピクセルの割合を表します。
このフィルタは次のパラメータを受け付けます。
amount
しきい値を下回る必要があるピクセルの割合。既定値は 98。
threshold, thresh
ピクセル値を黒とみなすしきい値。既定値は 32。
11.14 blend
2つの映像フレームを互いにブレンドします。
blend フィルタは2つの入力ストリームを受け取り1つのストリームを出力します。1つ目の入力が「上」レイヤー、2つ目の入力が「下」レイヤーになります。既定では、最も長い入力が終わると出力も終了します。
tblend(time blend)フィルタは1つのストリームから連続する2つのフレームを取り、古いフレームの上に新しいフレームをブレンドした結果を出力します。
受け付けるオプションを以下に説明します。
c0_mode c1_mode c2_mode c3_mode all_mode
特定のピクセル成分(all_mode の場合はすべてのピクセル成分)に対するブレンドモードを設定します。既定値は normal。
成分モードに指定できる値は次のとおりです。
‘addition’ ‘and’ ‘average’ ‘bleach’ ‘burn’ ‘darken’ ‘difference’ ‘divide’ ‘dodge’ ‘exclusion’ ‘extremity’ ‘freeze’ ‘geometric’ ‘glow’ ‘grainextract’ ‘grainmerge’ ‘hardlight’ ‘hardmix’ ‘hardoverlay’ ‘harmonic’ ‘heat’ ‘interpolate’ ‘lighten’ ‘linearlight’ ‘multiply’ ‘multiply128’ ‘negation’ ‘normal’ ‘or’ ‘overlay’ ‘phoenix’ ‘pinlight’ ‘reflect’ ‘screen’ ‘softdifference’ ‘softlight’ ‘stain’ ‘subtract’ ‘vividlight’ ‘xor’ c0_opacity c1_opacity c2_opacity c3_opacity all_opacity
特定のピクセル成分(all_opacity の場合はすべてのピクセル成分)に対するブレンドの不透明度を設定します。ピクセル成分のブレンドモードと組み合わせた場合にのみ使われます。
c0_expr c1_expr c2_expr c3_expr all_expr
特定のピクセル成分(all_expr の場合はすべてのピクセル成分)に対するブレンド式を設定します。これらが設定されている場合、関連するモードオプションは無視されることに注意してください。
式では次の変数を使えます。
N
フィルタされたフレームの連番です。0 から始まります。
X Y
現在のサンプルの座標。
W H
現在フィルタ中のプレーンの幅と高さ。
SW SH
フィルタ対象のプレーンの幅と高さのスケール。現在のプレーンの寸法と輝度プレーンの寸法との比率です。たとえば yuv420p フレームの場合、値は輝度プレーンで 1,1、クロマプレーンで 0.5,0.5 となります。
T
現在のフレームの時刻(秒)。
TOP, A
1つ目の映像フレーム(上レイヤー)の現在位置におけるピクセル成分の値。
BOTTOM, B
2つ目の映像フレーム(下レイヤー)の現在位置におけるピクセル成分の値。
blend フィルタは framesync オプションもサポートします。
11.14.1 例
-
最初の10秒で下レイヤーから上レイヤーへのトランジションを適用します。
blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))' -
上レイヤーから下レイヤーへ水平方向の線形トランジションを適用します。
blend=all_expr='A*(X/W)+B*(1-X/W)' -
1×1のチェッカーボード効果を適用します。
blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)' -
左から現す(uncover left)効果を適用します。
blend=all_expr='if(gte(N*SW+X,W),A,B)' -
下へ現す(uncover down)効果を適用します。
blend=all_expr='if(gte(Y-N*SH,0),A,B)' -
左上へ現す(uncover up-left)効果を適用します。
blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)' -
映像を対角線で分割し、両側に上レイヤーと下レイヤーを表示します。
blend=all_expr='if(gt(X,Y*(W/H)),A,B)' -
現在のフレームと直前のフレームとの差を表示します。
tblend=all_mode=grainextract
11.14.2 コマンド
このフィルタはオプションと同じコマンドをサポートします。
11.15 blockdetect
入力フレームを変更せずに、フレームのブロックノイズ(blockiness)を判定します。
Remco Muijs および Ihor Kirenko: "A no-reference blocking artifact measure for adaptive video processing." 2005 13th European signal processing conference に基づきます。
このフィルタは次のオプションを受け付けます。
period_min period_max
ピクセルグリッド(周期)を判定するための最小値と最大値を設定します。既定値は [3,24]。
planes
フィルタ対象のプレーンを設定します。既定では最初のプレーンのみ。
11.15.1 例
- 最初のプレーンのブロックノイズを判定し、[8,32] の範囲で周期を探索します。
blockdetect=period_min=8:period_max=32:planes=1
11.16 blurdetect
入力フレームを変更せずに、フレームのぼけ(blurriness)を判定します。
Marziliano, Pina, et al. "A no-reference perceptual blur metric." に基づきます。ブロックベースの簡略化を行えます。
このフィルタは次のオプションを受け付けます。
low high
Canny しきい値処理アルゴリズムで使う low と high のしきい値を設定します。
high しきい値は「強い」エッジピクセルを選択し、それらが low しきい値で選択された「弱い」エッジピクセルと8連結を通じて接続されます。
low と high のしきい値は [0,1] の範囲で選び、low は high 以下でなければなりません。
low の既定値は 20/255、high の既定値は 50/255。
radius
エッジピクセルの周囲で局所的な最大値を探索する半径を定義します。
block_pct
最も顕著なブロックについてのみぼけを判定します。パーセントで与えます。
block_width
幅 block_width のブロックについてぼけを判定します。1 より小さい値に設定すると、ブロックは使われず、block_height にかかわらず画像全体が1つとして処理されます。
block_height
高さ block_height のブロックについてぼけを判定します。1 より小さい値に設定すると、ブロックは使われず、block_width にかかわらず画像全体が1つとして処理されます。
planes
フィルタ対象のプレーンを設定します。既定では最初のプレーンのみ。
11.16.1 例
- 最も顕著な32×32ブロックの80%についてぼけを判定します。
blurdetect=block_width=32:block_height=32:block_pct=80
11.17 bm3d
Block-Matching 3D アルゴリズムを使ってフレームのノイズを除去します。
このフィルタは次のオプションを受け付けます。
sigma
ノイズ除去の強度を設定します。既定値は 1。指定できる範囲は 0 から 999.9。ノイズ除去アルゴリズムは sigma に非常に敏感なので、ソースに応じて調整してください。
block
局所パッチのサイズを設定します。これは2Dの寸法を設定します。
bstep
ブロック処理のスライドステップを設定します。既定値は 4。指定できる範囲は 1 から 64。値が小さいほど多くの参照ブロックを処理でき、低速になります。
group
3次元方向の類似ブロックの最大数を設定します。既定値は 1。1 に設定するとブロックマッチングは行われません。値が大きいほど1グループ内のブロック数が増えます。指定できる範囲は 1 から 256。
range
ブロックマッチングの探索半径を設定します。既定値は 9。指定できる範囲は 1 から INT32_MAX。
mstep
ブロックマッチングにおける2つの探索位置の間のステップを設定します。既定値は 1。指定できる範囲は 1 から 64。小さいほど低速になります。
thmse
ブロックマッチングの平均二乗誤差のしきい値を設定します。有効範囲は 0 から INT32_MAX。
hdthr
3D変換領域でのハードしきい値処理に用いるしきい値パラメータを設定します。値が大きいほど周波数領域でのハードしきい値フィルタリングが強くなります。
estim
フィルタリングの推定モードを設定します。basic または final を指定できます。既定値は basic。
ref
有効にすると、フィルタはブロックマッチングに2つ目のストリームを使います。estim オプションが basic の場合は既定で無効、estim が final の場合は常に有効です。
planes
フィルタ対象のプレーンを設定します。既定値はアルファを除く利用可能なすべて。
11.17.1 例
-
bm3d による基本的なフィルタリング。
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic -
上と同じですが、輝度のみをフィルタします。
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1 -
上と同じですが、両方の推定モードを使います。
split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1 -
上と同じですが、代わりに nlmeans フィルタでプレフィルタします。
split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
11.18 boxblur
入力映像にボックスぼかしアルゴリズムを適用します。
このフィルタは次のパラメータを受け付けます。
luma_radius, lr luma_power, lp chroma_radius, cr chroma_power, cp alpha_radius, ar alpha_power, ap
受け付けるオプションを以下に説明します。
luma_radius, lr chroma_radius, cr alpha_radius, ar
対応する入力プレーンのぼかしに使う、ピクセル単位のボックス半径の式を設定します。
半径の値は非負の数でなければならず、輝度プレーンとアルファプレーンでは式 min(w,h)/2 の値、クロマプレーンでは min(cw,ch)/2 の値を超えてはなりません。
luma_radius の既定値は "2"。指定しない場合、chroma_radius と alpha_radius は luma_radius に設定された対応する値が既定値になります。
式には次の定数を含められます。
w h
入力の幅と高さ(ピクセル単位)。
cw ch
入力クロマ画像の幅と高さ(ピクセル単位)。
hsub vsub
水平方向と垂直方向のクロマサブサンプル値。たとえばピクセルフォーマット "yuv422p" では、hsub は 2、vsub は 1 です。
luma_power, lp chroma_power, cp alpha_power, ap
boxblur フィルタを対応するプレーンに何回適用するかを指定します。
luma_power の既定値は 2。指定しない場合、chroma_power と alpha_power は luma_power に設定された対応する値が既定値になります。
値 0 にすると効果が無効になります。
11.18.1 例
-
boxblur フィルタを、輝度・クロマ・アルファの半径を 2 にして適用します:
boxblur=luma_radius=2:luma_power=1 boxblur=2:1 -
輝度の半径を 2 に、アルファとクロマの半径を 0 に設定します:
boxblur=2:1:cr=0:ar=0 -
輝度とクロマの半径を映像の寸法に対する割合で設定します:
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
11.19 bwdif
入力映像をデインターレースします("bwdif" は "Bob Weaver Deinterlacing Filter" の略です)。
yadif をベースに w3fdif と三次補間アルゴリズムを用いた動き適応型デインターレースです。次のパラメータを受け付けます:
mode
採用するインターレースモード。次のいずれかの値を受け付けます:
0, send_frame
1 フレームごとに 1 フレームを出力します。
1, send_field
1 フィールドごとに 1 フレームを出力します。
既定値は send_field です。
parity
入力インターレース映像で想定するピクチャフィールドのパリティ。次のいずれかの値を受け付けます:
0, tff
トップフィールドが先頭であると仮定します。
1, bff
ボトムフィールドが先頭であると仮定します。
-1, auto
フィールドパリティの自動検出を有効にします。
既定値は auto です。インターレースが不明な場合やデコーダがこの情報を出力しない場合は、トップフィールドが先頭であると仮定します。
deint
どのフレームをデインターレースするかを指定します。次のいずれかの値を受け付けます:
0, all
すべてのフレームをデインターレースします。
1, interlaced
インターレースとマークされたフレームのみをデインターレースします。
既定値は all です。
11.20 ccrepack
CEA-708 クローズドキャプションのサイドデータを再パックします
このフィルタは、市販のエンコーダで見られる、上流の不正な CEA-708 ペイロードに関連するさまざまな問題、具体的にはタプル数の誤り(対象 FPS に対する cc_count の誤り)やタプルの順序の誤り(つまり CEA-608 タプルがペイロードの先頭エントリに配置されていない状態)を修正します。
11.21 cas
映像ストリームに Contrast Adaptive Sharpen フィルタを適用します。
このフィルタは次のオプションを受け付けます:
strength
シャープニングの強度を設定します。既定値は 0 です。
planes
フィルタ対象のプレーンを設定します。既定ではアルファプレーンを除くすべてのプレーンをフィルタします。
11.21.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。
11.22 chromahold
特定の色を除くすべての色について色情報を除去します。
このフィルタは次のオプションを受け付けます:
color
ニュートラルなクロマに置き換えない色です。
similarity
上記の色との類似度(パーセント)です。0.01 は正確なキー色のみに一致し、1.0 はすべてに一致します。
blend
ブレンド率(パーセント)です。0.0 ではピクセルは完全にグレーになるか、まったくグレーにならないかのいずれかになります。値が大きいほど色がより保持されます。
yuv
渡された色が RGB ではなくすでに YUV であることを示します。
これを有効にすると "green" や "red" のようなリテラルの色は意味をなさなくなります。これは正確な YUV 値を 16 進数で渡すために使えます。
11.22.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.23 chromakey
YUV 色空間での色/クロマキーイングです。
このフィルタは次のオプションを受け付けます:
color
透明に置き換える色です。
similarity
キー色との類似度(パーセント)です。
0.01 は正確なキー色のみに一致し、1.0 はすべてに一致します。
blend
ブレンド率(パーセント)です。
0.0 ではピクセルは完全に透明になるか、まったく透明にならないかのいずれかになります。
値が大きいほど半透明のピクセルになり、ピクセルの色がキー色に近いほど透明度が高くなります。
yuv
渡された色が RGB ではなくすでに YUV であることを示します。
これを有効にすると "green" や "red" のようなリテラルの色は意味をなさなくなります。これは正確な YUV 値を 16 進数で渡すために使えます。
11.23.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.23.2 例
-
入力画像の緑のピクセルをすべて透明にします:
ffmpeg -i input.png -vf chromakey=green out.png -
グリーンスクリーン映像を静的な黒背景の上に重ねます。
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
11.24 chromanr
クロミナンスノイズを低減します。
このフィルタは次のオプションを受け付けます:
thres
クロミナンス値を平均化する際のしきい値を設定します。現在のピクセルと近傍ピクセルの Y・U・V 成分の絶対差の合計がこのしきい値より小さい場合、平均化に使用されます。輝度成分は変更されず、そのまま出力にコピーされます。既定値は 30 です。指定できる範囲は 1 から 200 です。
sizew
平均化に使用する矩形の水平半径を設定します。指定できる範囲は 1 から 100 です。既定値は 5 です。
sizeh
平均化に使用する矩形の垂直半径を設定します。指定できる範囲は 1 から 100 です。既定値は 5 です。
stepw
平均化時の水平ステップを設定します。既定値は 1 です。指定できる範囲は 1 から 50 です。主にフィルタ処理を高速化するのに役立ちます。
steph
平均化時の垂直ステップを設定します。既定値は 1 です。指定できる範囲は 1 から 50 です。主にフィルタ処理を高速化するのに役立ちます。
threy
クロミナンス値を平均化する際の Y のしきい値を設定します。現在のピクセルと近傍ピクセルの Y 成分の最大許容差をより細かく制御します。既定値は 200 です。指定できる範囲は 1 から 200 です。
threu
クロミナンス値を平均化する際の U のしきい値を設定します。現在のピクセルと近傍ピクセルの U 成分の最大許容差をより細かく制御します。既定値は 200 です。指定できる範囲は 1 から 200 です。
threv
クロミナンス値を平均化する際の V のしきい値を設定します。現在のピクセルと近傍ピクセルの V 成分の最大許容差をより細かく制御します。既定値は 200 です。指定できる範囲は 1 から 200 です。
distance
計算に使用する距離の種類を設定します。
‘manhattan’
絶対差です。
‘euclidean’
差の二乗です。
既定の距離の種類は manhattan です。
11.24.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
11.25 chromashift
クロマピクセルを水平方向および/または垂直方向にシフトします。
このフィルタは次のオプションを受け付けます:
cbh
クロマブルーを水平方向にシフトする量を設定します。
cbv
クロマブルーを垂直方向にシフトする量を設定します。
crh
クロマレッドを水平方向にシフトする量を設定します。
crv
クロマレッドを垂直方向にシフトする量を設定します。
edge
エッジモードを設定します。smear、default、warp のいずれかを指定できます。
11.25.1 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.26 ciescope
CIE 色度図を表示し、その上にピクセルを重ねて表示します。
このフィルタは次のオプションを受け付けます:
system
色システムを設定します。
‘ntsc, 470m’ ‘ebu, 470bg’ ‘smpte’ ‘240m’ ‘apple’ ‘widergb’ ‘cie1931’ ‘rec709, hdtv’ ‘uhdtv, rec2020’ ‘dcip3’ cie
CIE システムを設定します。
‘xyy’ ‘ucs’ ‘luv’ gamuts
描画する色域を設定します。
利用可能な値については system オプションを参照してください。
size, s
ciescope のサイズを設定します。既定では 512 です。
intensity, i
入力ピクセル値を CIE 図にマッピングする際に使用する強度を設定します。
contrast
有効な色システムの色域から外れた tongue 色を描画する際に使用するコントラストを設定します。
corrgamma
スコープに表示されるガンマを補正します。既定では有効です。
showwhite
CIE 図に白色点を表示します。既定では無効です。
gamma
入力ガンマを設定します。XYZ 入力色空間でのみ使用されます。
fill
CIE 色で塗りつぶします。既定では有効です。
11.27 codecview
一部の codec が出力する情報を可視化します。
一部の codec は、サイドデータなどの手段でフレームを通じて情報を出力できます。たとえば MPEG ベースの一部の codec は、codec の flags2 オプションにある export_mvs フラグで動きベクトルを出力します。
このフィルタは次のオプションを受け付けます:
block
輝度プレーンを使ってブロック分割構造を表示します。
mv
可視化する動きベクトルを設定します。
mv で利用できるフラグは次のとおりです:
‘pf’
P フレームの前方予測 MV
‘bf’
B フレームの前方予測 MV
‘bb’
B フレームの後方予測 MV
qp
クロマプレーンを使って量子化パラメータを表示します。
mv_type, mvt
可視化する動きベクトルの種類を設定します。frame_type オプションで指定しない限り、すべてのフレームの MV を含みます。
mv_type で利用できるフラグは次のとおりです:
‘fp’
前方予測 MV
‘bp’
後方予測 MV
frame_type, ft
動きベクトルを可視化するフレームの種類を設定します。
frame_type で利用できるフラグは次のとおりです:
‘if’
イントラ符号化フレーム(I フレーム)
‘pf’
予測フレーム(P フレーム)
‘bf’
双方向予測フレーム(B フレーム)
11.27.1 例
-
ffplayを使ってすべてのフレームの前方予測 MV を可視化します:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp -
ffplayを使って P フレームと B フレームの多方向 MV を可視化します:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
11.28 colorbalance
入力フレームの原色(赤・緑・青)の強度を変更します。
このフィルタでは、入力フレームをシャドウ・中間調・ハイライトの各領域で、赤-シアン・緑-マゼンタ・青-黄のバランスについて調整できます。
調整値を正にするとバランスは原色側に、負にすると補色側にシフトします。
このフィルタは次のオプションを受け付けます:
rs gs bs
赤・緑・青のシャドウ(最も暗いピクセル)を調整します。
rm gm bm
赤・緑・青の中間調(中程度のピクセル)を調整します。
rh gh bh
赤・緑・青のハイライト(最も明るいピクセル)を調整します。
各オプションの指定できる範囲は [-1.0, 1.0] です。既定値は 0 です。
pl
カラーバランスを変更する際に明度を保持します。既定では無効です。
11.28.1 例
- シャドウに赤の色かぶりを加えます:
colorbalance=rs=.3
11.28.2 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.29 colorcontrast
RGB 成分間の色コントラストを調整します。
このフィルタは次のオプションを受け付けます:
rc
赤-シアンのコントラストを設定します。既定値は 0.0 です。指定できる範囲は -1.0 から 1.0 です。
gm
緑-マゼンタのコントラストを設定します。既定値は 0.0 です。指定できる範囲は -1.0 から 1.0 です。
by
青-黄のコントラストを設定します。既定値は 0.0 です。指定できる範囲は -1.0 から 1.0 です。
rcw gmw byw
各 rc、gm、by オプション値の重みを設定します。既定値は 0.0 です。指定できる範囲は 0.0 から 1.0 です。すべての重みが 0.0 の場合、フィルタ処理は無効になります。
pl
明度を保持する度合いを設定します。既定値は 0.0 です。指定できる範囲は 0.0 から 1.0 です。
11.29.1 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.30 colorcorrect
黒と白について選択的に色のホワイトバランスを調整します。このフィルタは YUV 色空間で動作します。
このフィルタは次のオプションを受け付けます:
rl
赤のシャドウスポットを設定します。指定できる範囲は -1.0 から 1.0 です。既定値は 0 です。
bl
青のシャドウスポットを設定します。指定できる範囲は -1.0 から 1.0 です。既定値は 0 です。
rh
赤のハイライトスポットを設定します。指定できる範囲は -1.0 から 1.0 です。既定値は 0 です。
bh
青のハイライトスポットを設定します。指定できる範囲は -1.0 から 1.0 です。既定値は 0 です。
saturation
彩度の量を設定します。指定できる範囲は -3.0 から 3.0 です。既定値は 1 です。
analyze
manual 以外に設定すると、すべてのフレームを解析し、そこから導出したパラメータを使って出力フレームをフィルタ処理します。
指定できる値は次のとおりです:
‘manual’ ‘average’ ‘minmax’ ‘median’
既定値は manual です。
11.30.1 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.31 colorchannelmixer
色チャンネルを再混合して映像入力フレームを調整します。
このフィルタは、同じピクセルの他のチャンネルに関連付けられた値を加算することで、ある色チャンネルを変更します。たとえば変更対象が赤の場合、出力値は次のようになります:
red=red*rr + blue*rb + green*rg + alpha*ra
このフィルタは次のオプションを受け付けます:
rr rg rb ra
出力赤チャンネルに対する入力の赤・緑・青・アルファチャンネルの寄与を調整します。既定値は rr が 1、rg・rb・ra が 0 です。
gr gg gb ga
出力緑チャンネルに対する入力の赤・緑・青・アルファチャンネルの寄与を調整します。既定値は gg が 1、gr・gb・ga が 0 です。
br bg bb ba
出力青チャンネルに対する入力の赤・緑・青・アルファチャンネルの寄与を調整します。既定値は bb が 1、br・bg・ba が 0 です。
ar ag ab aa
出力アルファチャンネルに対する入力の赤・緑・青・アルファチャンネルの寄与を調整します。既定値は aa が 1、ar・ag・ab が 0 です。
各オプションの指定できる範囲は [-2.0, 2.0] です。
pc
色保持モードを設定します。指定できる値は次のとおりです:
‘none’
色保持を無効にします。これが既定です。
‘lum’
輝度を保持します。
‘max’
RGB トリプレットの最大値を保持します。
‘avg’
RGB トリプレットの平均値を保持します。
‘sum’
RGB トリプレットの合計値を保持します。
‘nrm’
RGB トリプレットの正規化値を保持します。
‘pwr’
RGB トリプレットのべき乗値を保持します。
pa
色を変更する際の色保持量を設定します。指定できる範囲は [0.0, 1.0] です。既定値は 0.0 で、無効になっています。
11.31.1 例
-
ソースをグレースケールに変換します:
colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 -
セピア調をシミュレートします:
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
11.31.2 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.32 colordetect
映像フレームを解析して、実効的な値の範囲とアルファモードを判定します。
このフィルタは次のオプションを受け付けます:
mode
検出するプロパティの集合です。アルファチャンネルを持たない入力画像でのアルファモードなど、利用できないプロパティは自動的に無視されます。
次のフラグの組み合わせを受け付けます:
‘color_range’
ソースが limited(MPEG)範囲外の輝度ピクセルを含むかどうかを検出します。これはこのソースが full range の YUV ソースであることを示します。
‘alpha_mode’
ソースがアルファチャンネルを超える色値を含むかどうかを検出します。これはアルファチャンネルが乗算済みではなく独立(ストレート)であることを示します。また、アルファプレーンが完全に不透明かどうかも検出します。
‘all’
上記すべてのプロパティの検出を有効にします。これが既定です。
11.33 colorize
映像ストリームに単色を重ねます。
このフィルタは次のオプションを受け付けます:
hue
色相を設定します。指定できる範囲は 0 から 360 です。既定値は 0 です。
saturation
彩度を設定します。指定できる範囲は 0 から 1 です。既定値は 0.5 です。
lightness
明度を設定します。指定できる範囲は 0 から 1 です。既定値は 0.5 です。
mix
ソースの明度を混ぜる比率を設定します。既定では 1.0 です。指定できる範囲は 0.0 から 1.0 です。
11.33.1 コマンド
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.34 colorkey
RGB 色空間での色キーイングです。このフィルタは 8 ビット RGB 形式のフレームに対して動作し、キー色の類似度半径内に収まる各ピクセルのアルファ成分を 0 に設定します。類似度半径外のピクセルのアルファ値は blend オプションの値に依存します。
このフィルタは次のオプションを受け付けます:
color
アルファを 0(完全な透明)に設定する対象の色を設定します。ffmpeg-utils マニュアルの "Color" セクションを参照してください。既定値は black です。
similarity
キー色の周辺で、他の色も完全な透明になる半径を設定します。算出される距離は、キー色の RGB 値とピクセルの色との 3D 空間における単位分数距離に関係します。範囲は 0.01 から 1.0 です。0.01 は正確なキー色のごく狭い半径内に一致し、1.0 はすべてに一致します。既定値は 0.01 です。
blend
類似度半径外に収まるピクセルのアルファ値の計算方法を設定します。0.0 ではピクセルは完全に透明か完全に不透明のいずれかになります。値が大きいほど半透明のピクセルになり、ピクセルの色がキー色に近いほど透明度が高くなります。範囲は 0.0 から 1.0 です。既定値は 0.0 です。
11.34.1 例
-
入力画像の緑のピクセルをすべて透明にします:
ffmpeg -i input.png -vf colorkey=green out.png -
グリーンスクリーン映像を静的な背景画像の上に重ねます。
ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv11.34.2 Commands
このフィルタはオプションと同じコマンドに対応します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.35 colorhold
特定の色を除き、すべての RGB 色から色情報を取り除きます。
このフィルタは次のオプションを受け付けます。
color
中立的なグレーに置き換えられずに残す色です。
similarity
上記の色との類似度をパーセントで指定します。0.01 ではキーカラーと完全に一致するものだけが対象となり、1.0 ではすべてが対象になります。
blend
ブレンドの割合をパーセントで指定します。0.0 ではピクセルが完全にグレーになります。値を大きくするほど色がより多く保持されます。
11.35.1 Commands
このフィルタはオプションと同じコマンドに対応します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.36 colorlevels
レベルを使って入力映像フレームを調整します。
このフィルタは次のオプションを受け付けます。
rimin gimin bimin aimin
赤・緑・青・アルファの入力黒点を調整します。指定できる範囲は [-1.0, 1.0]。既定値は 0。
rimax gimax bimax aimax
赤・緑・青・アルファの入力白点を調整します。指定できる範囲は [-1.0, 1.0]。既定値は 1。
入力レベルは、ハイライト(明るいトーン)を明るくしたり、シャドウ(暗いトーン)を暗くしたり、明暗のバランスを変えたりするために使います。
romin gomin bomin aomin
赤・緑・青・アルファの出力黒点を調整します。指定できる範囲は [0, 1.0]。既定値は 0。
romax gomax bomax aomax
赤・緑・青・アルファの出力白点を調整します。指定できる範囲は [0, 1.0]。既定値は 1。
出力レベルでは、出力レベル範囲を手動で制限して選択できます。
preserve
色の保持モードを設定します。指定できる値は次のとおりです。
‘none’
色の保持を無効にします。これが既定値です。
‘lum’
輝度を保持します。
‘max’
RGB トリプレットの最大値を保持します。
‘avg’
RGB トリプレットの平均値を保持します。
‘sum’
RGB トリプレットの合計値を保持します。
‘nrm’
RGB トリプレットの正規化値を保持します。
‘pwr’
RGB トリプレットの累乗値を保持します。
11.36.1 Examples
-
映像出力を暗くします:
colorlevels=rimin=0.058:gimin=0.058:bimin=0.058 -
コントラストを上げます:
colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96 -
映像出力を明るくします:
colorlevels=rimax=0.902:gimax=0.902:bimax=0.902 -
明るさを上げます:
colorlevels=romin=0.5:gomin=0.5:bomin=0.5
11.36.2 Commands
このフィルタは上記のすべてのオプションをコマンドとして対応しています。
11.37 colormap
映像ストリームにカスタムのカラーマップを適用します。
このフィルタは 3 つの入力映像ストリームを必要とします。第 1 ストリームはフィルタ処理の対象となる映像ストリームです。第 2 と第 3 の映像ストリームは、元の色から目標の色へのマッピングに用いるカラーパッチを指定します。
このフィルタは次のオプションを受け付けます。
patch_size
元と目標の映像ストリームのパッチサイズをピクセル単位で設定します。
nb_patches
元と目標の映像ストリームから使用するパッチの最大数を設定します。既定値は追加映像ストリームで利用可能なパッチ数です。指定できるパッチの最大数は 64。
type
目標色に適用する調整方法を設定します。relative または absolute を指定できます。既定値は absolute。
kernel
マッピングされた色どうしの色差を測定するために使うカーネルを設定します。
指定できる値は次のとおりです。
‘euclidean’ ‘weuclidean’
既定値は euclidean。
11.38 colormatrix
カラーマトリクスを変換します。
このフィルタは次のオプションを受け付けます。
src dst
変換元と変換先のカラーマトリクスを指定します。両方の値を指定しなければなりません。
指定できる値は次のとおりです。
‘bt709’
BT.709
‘fcc’
FCC
‘bt601’
BT.601
‘bt470’
BT.470
‘bt470bg’
BT.470BG
‘smpte170m’
SMPTE-170M
‘smpte240m’
SMPTE-240M
‘bt2020’
BT.2020
たとえば BT.601 から SMPTE-240M に変換するには、次のコマンドを使います。
colormatrix=bt601:smpte240m
11.39 colorspace
色空間、伝達特性、または原色を変換します。入力映像はサイズが偶数である必要があります。
このフィルタは次のオプションを受け付けます。
all
すべての色プロパティを一度に指定します。
指定できる値は次のとおりです。
‘bt470m’
BT.470M
‘bt470bg’
BT.470BG
‘bt601-6-525’
BT.601-6 525
‘bt601-6-625’
BT.601-6 625
‘bt709’
BT.709
‘smpte170m’
SMPTE-170M
‘smpte240m’
SMPTE-240M
‘bt2020’
BT.2020
space
出力色空間を指定します。
指定できる値は次のとおりです。
‘bt709’
BT.709
‘fcc’
FCC
‘bt470bg’
BT.470BG または BT.601-6 625
‘smpte170m’
SMPTE-170M または BT.601-6 525
‘smpte240m’
SMPTE-240M
‘ycgco’
YCgCo
‘bt2020ncl’
非定輝度の BT.2020
trc
出力伝達特性を指定します。
指定できる値は次のとおりです。
‘bt709’
BT.709
‘bt470m’
BT.470M
‘bt470bg’
BT.470BG
‘gamma22’
定数ガンマ 2.2
‘gamma28’
定数ガンマ 2.8
‘smpte170m’
SMPTE-170M、BT.601-6 625 または BT.601-6 525
‘smpte240m’
SMPTE-240M
‘srgb’
SRGB
‘iec61966-2-1’
iec61966-2-1
‘iec61966-2-4’
iec61966-2-4
‘xvycc’
xvycc
‘bt2020-10’
10 ビットコンテンツ向けの BT.2020
‘bt2020-12’
12 ビットコンテンツ向けの BT.2020
primaries
出力原色を指定します。
指定できる値は次のとおりです。
‘bt709’
BT.709
‘bt470m’
BT.470M
‘bt470bg’
BT.470BG または BT.601-6 625
‘smpte170m’
SMPTE-170M または BT.601-6 525
‘smpte240m’
SMPTE-240M
‘film’
film
‘smpte431’
SMPTE-431
‘smpte432’
SMPTE-432
‘bt2020’
BT.2020
‘jedec-p22’
JEDEC P22 蛍光体
range
出力カラーレンジを指定します。
指定できる値は次のとおりです。
‘tv’
TV(制限)レンジ
‘mpeg’
MPEG(制限)レンジ
‘pc’
PC(フル)レンジ
‘jpeg’
JPEG(フル)レンジ
format
出力カラーフォーマットを指定します。
指定できる値は次のとおりです。
‘yuv420p’
YUV 4:2:0 プレーナ 8 ビット
‘yuv420p10’
YUV 4:2:0 プレーナ 10 ビット
‘yuv420p12’
YUV 4:2:0 プレーナ 12 ビット
‘yuv422p’
YUV 4:2:2 プレーナ 8 ビット
‘yuv422p10’
YUV 4:2:2 プレーナ 10 ビット
‘yuv422p12’
YUV 4:2:2 プレーナ 12 ビット
‘yuv444p’
YUV 4:4:4 プレーナ 8 ビット
‘yuv444p10’
YUV 4:4:4 プレーナ 10 ビット
‘yuv444p12’
YUV 4:4:4 プレーナ 12 ビット
fast
ガンマ/原色補正を省略する高速変換を行います。CPU 負荷は大幅に下がりますが、数学的には正確でなくなります。colormatrix フィルタが生成する出力と互換性のある結果を得るには、fast=1 を使います。
dither
ディザリングモードを指定します。
指定できる値は次のとおりです。
‘none’
ディザリングなし
‘fsb’
Floyd-Steinberg ディザリング
wpadapt
白色点の順応モード。
指定できる値は次のとおりです。
‘bradford’
Bradford 白色点順応
‘vonkries’
von Kries 白色点順応
‘identity’
恒等白色点順応(すなわち白色点順応なし)
clipgamut
色空間変換の結果として生じる色域外の色をどのようにクリップするかを制御します。
指定できる値は次のとおりです。
‘none’
色域外の色をクリップしません。
‘rgb’
ガンマ伝達 LUT を構築する際に、RGB 値を [0, 1] の範囲にクリップします。
iall
すべての入力プロパティを一度に上書きします。指定できる値は all と同じです。
ispace
入力色空間を上書きします。指定できる値は space と同じです。
iprimaries
入力原色を上書きします。指定できる値は primaries と同じです。
itrc
入力伝達特性を上書きします。指定できる値は trc と同じです。
irange
入力カラーレンジを上書きします。指定できる値は range と同じです。
このフィルタは、伝達特性・色空間・原色を指定したユーザー値に変換します。出力値が指定されていない場合は、"all" プロパティに基づく既定値が設定されます。そのプロパティも指定されていない場合、フィルタはエラーをログに出力します。出力のカラーレンジとフォーマットは、既定では入力のカラーレンジとフォーマットと同じ値になります。入力の伝達特性・色空間・原色・カラーレンジは入力データに設定されているべきです。これらのいずれかが欠けている場合、フィルタはエラーをログに出力し、変換は行われません。
たとえば入力を SMPTE-240M に変換するには、次のコマンドを使います。
colorspace=smpte240m
11.40 colortemperature
映像の色温度を調整し、周囲の色温度の変化をシミュレートします。
このフィルタは次のオプションを受け付けます。
temperature
色温度をケルビンで設定します。指定できる範囲は 1000 から 40000 です。既定値は 6500 K です。
mix
フィルタ処理後の出力との混合度を設定します。指定できる範囲は 0 から 1 です。既定値は 1 です。
pl
明度を保持する量を設定します。指定できる範囲は 0 から 1 です。既定値は 0 です。
11.40.1 Commands
このフィルタはオプションと同じコマンドに対応します。
11.41 convolution
3x3、5x5、7x7、または水平/垂直に最大 49 要素の畳み込みを適用します。
このフィルタは次のオプションを受け付けます。
0m 1m 2m 3m
各プレーンの行列を設定します。行列は、正方形モードでは 9・25・49 個の符号付き整数の列、行モードでは 1 から 49 個の奇数個の符号付き整数からなります。
0rdiv 1rdiv 2rdiv 3rdiv
各プレーンで計算された値に対する乗数を設定します。未設定または 0 の場合は、全行列要素の合計の逆数(1/sum)になります。
0bias 1bias 2bias 3bias
各プレーンのバイアスを設定します。この値は乗算の結果に加算されます。画像全体を明るく、または暗くするのに役立ちます。既定値は 0.0。
0mode 1mode 2mode 3mode
各プレーンの行列モードを設定します。square、row、column のいずれかを指定できます。既定値は square。
11.41.1 Commands
このフィルタは上記のすべてのオプションをコマンドとして対応しています。
11.41.2 Examples
-
シャープを適用します:
convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0" -
ぼかしを適用します:
convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9" -
エッジ強調を適用します:
convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128" -
エッジ検出を適用します:
convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128" -
対角線も含むラプラシアンエッジ検出器を適用します:
convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0" -
エンボスを適用します:
convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
11.42 convolve
第 2 ストリームをインパルスとして用い、映像ストリームの 2D 畳み込みを周波数領域で適用します。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。
impulse
どのインパルス映像フレームを処理するかを設定します。first または all を指定できます。既定値は all。
convolve フィルタは framesync オプションにも対応しています。
11.43 copy
入力映像ソースを変更せずに出力へコピーします。これは主にテスト目的で役立ちます。
11.44 coreimage
OSX 上で Apple の CoreImage API を用いて GPU で映像をフィルタ処理します。
ハードウェアアクセラレーションは OpenGL コンテキストに基づきます。通常これは映像ハードウェアによって処理されることを意味します。ただし、ソフトウェアベースの OpenGL 実装も存在するため、ハードウェア処理が保証されるわけではありません。これは利用する OSX に依存します。
Apple は多数のフィルタや画像ジェネレータを提供しており、それぞれに多種多様なオプションが用意されています。フィルタは名前とオプションを指定して参照する必要があります。
coreimage フィルタは次のオプションを受け付けます。
list_filters
利用可能なすべてのフィルタとジェネレータを、それぞれのオプション、取り得る最小値・最大値、既定値とともに一覧表示します。
list_filters=true
filter
すべてのフィルタを、それぞれの名前とオプションで指定します。有効なフィルタ名とオプションを確認するには list_filters を使います。数値オプションは float 値で指定し、それぞれの値域へ自動的にクランプされます。ベクトルや色のオプションは、空白で区切った float 値のリストで指定する必要があります。文字のエスケープも行う必要があります。フィルタに既定のオプションを使うための特別なオプション名 default も利用できます。
default か、少なくとも 1 つのフィルタオプションのいずれかを指定する必要があります。省略したオプションはすべて既定値で使われます。フィルタ文字列の構文は次のとおりです。
filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
output_rect
フィルタチェインの出力を入力画像にコピーする矩形を指定します。空白で区切った float 値のリストで与えます。
output_rect=x\ y\ width\ height
指定しない場合、出力矩形は入力画像の寸法と等しくなります。出力矩形は入力画像の境界で自動的にクロップされます。各成分には負の値も指定できます。
output_rect=25\ 25\ 100\ 100
複数のフィルタを連結すれば、GPU-HOST 間の転送なしに連続して処理でき、複雑なフィルタチェインを高速に処理できます。現在のところ、入力画像が 0 個(ジェネレータ)または正確に 1 個(フィルタ)で、出力画像が 1 個のフィルタのみに対応しています。また、トランジションフィルタはまだ意図したとおりには使えません。
一部のフィルタは、それぞれのフィルタカーネルに応じて追加のパディングを伴う出力画像を生成します。パディングは自動的に取り除かれ、フィルタ出力が入力画像と同じサイズになるようにします。
画像ジェネレータの場合、出力画像のサイズはフィルタチェインの直前の出力画像、またはフィルタチェイン全体の入力画像によって決まります。ジェネレータはこの画像のピクセル情報を出力生成に使いません。ただし、生成された出力はこの画像へ合成され、結果として出力画像の一部または全体が覆われます。
coreimagesrc 映像ソースを使えば、フィルタチェインへ直接渡される入力画像を生成できます。これを使えば、別の映像ソースや入力映像によって入力画像を用意する必要はなくなります。
11.44.1 Examples
-
利用可能なフィルタをすべて一覧表示します:
coreimage=list_filters=true -
CIBoxBlur フィルタを既定オプションで使って画像をぼかします:
coreimage=filter=CIBoxBlur@default -
CISepiaTone を既定値で、CIVignetteEffect を中心 100x100・半径 50 ピクセルで組み合わせたフィルタチェインを使います:
coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50 -
nullsrc と CIQRCodeGenerator を使って FFmpeg のホームページ用 QR コードを生成します。Apple 標準の bash シェル向けに完全にエスケープしたコマンドラインを示します:
ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
11.45 corr
2 つの入力映像間の相関を求めます。
このフィルタは 2 つの入力映像を取ります。
このフィルタが正しく動作するには、両方の入力映像が同じ解像度と pixel format を持つ必要があります。また、両方の入力が同じフレーム数を持ち、それらが 1 枚ずつ比較されることを前提としています。
求めた成分ごと・平均・最小・最大の相関は、ロギングシステムを通じて出力されます。
このフィルタは、計算した各フレームの相関をフレームのメタデータに格納します。
このフィルタは framesync オプションにも対応しています。
以下の例では、処理対象の入力ファイル main.mpg を参照ファイル ref.mpg と比較します。
ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -
11.46 cover_rect
矩形のオブジェクトを覆います。
次のオプションを受け付けます:
cover
任意で指定するカバー画像のファイルパス。yuv420 である必要があります。
mode
覆い方のモードを設定します。
次の値を受け付けます:
‘cover’
指定した画像で覆います。
‘blur’
周囲のピクセルを補間して覆います。
既定値は blur です。
11.46.1 Examples
ffmpegを使って、指定した映像内の矩形のオブジェクトを指定画像で覆います:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11.47 crop
入力映像を指定した寸法に切り抜きます。
次のパラメータを受け付けます:
w, out_w
出力映像の幅です。既定値は iw です。この式はフィルタ設定時に一度だけ、または ‘w’ もしくは ‘out_w’ コマンドが送られたときに評価されます。
h, out_h
出力映像の高さです。既定値は ih です。この式はフィルタ設定時に一度だけ、または ‘h’ もしくは ‘out_h’ コマンドが送られたときに評価されます。
x
入力映像における、出力映像の左端の水平位置です。既定値は (in_w-out_w)/2 です。この式はフレームごとに評価されます。
y
入力映像における、出力映像の上端の垂直位置です。既定値は (in_h-out_h)/2 です。この式はフレームごとに評価されます。
keep_aspect
1 に設定すると、出力のサンプルアスペクト比を変更することで、出力の表示アスペクト比を入力と同じになるよう強制します。既定値は 0 です。
exact
正確な切り抜きを有効にします。有効にすると、サブサンプリングされた映像は指定どおりの幅/高さ/x/y で正確に切り抜かれ、最も近い小さい値に丸められなくなります。既定値は 0 です。
out_w, out_h, x, y の各パラメータは、次の定数を含む式です:
x y
計算された x と y の値です。新しいフレームごとに評価されます。
in_w in_h
入力の幅と高さです。
iw ih
in_w と in_h と同じです。
out_w out_h
出力(切り抜き後)の幅と高さです。
ow oh
out_w と out_h と同じです。
a
iw / ih と同じです。
sar
入力のサンプルアスペクト比です。
dar
入力の表示アスペクト比です。(iw / ih) * sar と同じです。
hsub vsub
水平・垂直のクロマサブサンプル値です。例えば pixel format "yuv422p" では hsub が 2、vsub が 1 になります。
n
入力フレームの番号です。0 から始まります。
pos
入力フレームのファイル内での位置です。不明の場合は NAN です。非推奨につき使用しないでください。
t
秒で表したタイムスタンプです。入力のタイムスタンプが不明の場合は NAN です。
out_w の式は out_h の値に依存してもよく、out_h の式は out_w に依存してもよいですが、x と y には依存できません。x と y は out_w と out_h の後に評価されるためです。
x と y のパラメータは、出力(切り抜き前)領域の左上隅の位置を表す式を指定します。これらはフレームごとに評価されます。評価された値が有効でない場合は、最も近い有効な値に近似されます。
x の式は y に依存してもよく、y の式は x に依存してもかまいません。
11.47.1 Examples
- サイズ 100x100 の領域を位置 (12,34) で切り抜きます。
crop=100:100:12:34
名前付きオプションを使うと、上の例は次のようになります:
crop=w=100:h=100:x=12:y=34
-
中央の入力領域をサイズ 100x100 で切り抜きます:
crop=100:100 -
中央の入力領域を、入力映像の 2/3 のサイズで切り抜きます:
crop=2/3*in_w:2/3*in_h -
入力映像の中央正方形を切り抜きます:
crop=out_w=in_h crop=in_h -
左上隅を位置 100:100 に置き、右下隅を入力画像の右下隅に対応させた矩形を範囲指定します。
crop=in_w-100:in_h-100:100:100 -
左右の縁から 10 ピクセル、上下の縁から 20 ピクセルを切り取ります。
crop=in_w-2*10:in_h-2*20 -
入力画像の右下 1/4 だけを残します:
crop=in_w/2:in_h/2:in_w/2:in_h/2 -
ギリシャ的な調和(黄金比)を得るために高さを切り抜きます:
crop=in_w:1/PHI*in_w -
震えるような効果を適用します:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7) -
タイムスタンプに応じて不規則なカメラ効果を適用します:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13) -
y の値に応じて x を設定します:
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
11.47.2 Commands
このフィルタは次のコマンドに対応しています:
w, out_w h, out_h x y
出力映像の幅/高さと、入力映像における水平/垂直位置を設定します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が有効でない場合は、現在の値が維持されます。
11.48 cropdetect
切り抜きサイズを自動検出します。
必要な切り抜きパラメータを計算し、推奨パラメータをロギングシステムを通じて出力します。検出される寸法は、mode に応じて入力映像の非黒部分または映像領域に対応します。
次のパラメータを受け付けます:
mode
mode に応じて、切り抜き検出は周囲ピクセルの単なる黒さ、または動きベクトルとエッジピクセルの組み合わせのいずれかに基づいて行われます。
‘black’
再生中の映像を囲む黒ピクセルを検出します。細かく制御するには limit オプションを使います。
‘mvedges’
映像内部の動きベクトルと、再生中の映像の境界を典型的に形成するエッジピクセルの走査によって、再生中の映像を検出します。
limit
黒値のしきい値を高めに設定します。なし(0)からすべて(8 ビットベースの形式では 255)までを任意に指定できます。設定値より大きい輝度値は非黒とみなされます。既定値は 24 です。0.0 から 1.0 の間の値を指定することもでき、その場合は pixel format のビット深度に応じてスケーリングされます。
round
幅/高さが割り切れるべき値です。既定値は 16 です。オフセットは映像を中央に配置するよう自動調整されます。偶数の寸法のみを得るには 2 を使います(4:2:2 映像に必要)。ほとんどの映像 codec にエンコードする場合は 16 が最適です。
skip
評価を省略する先頭フレーム数を設定します。既定値は 2 です。範囲は 0 から INT_MAX です。
reset_count, reset
何フレームごとに cropdetect が以前に検出した最大の映像領域をリセットし、現在の最適な切り抜き領域を改めて検出し始めるかを決めるカウンタを設定します。既定値は 0 です。
これは、チャンネルロゴが映像領域を歪めるような場合に役立ちます。0 は「決してリセットしない」ことを示し、再生中に遭遇した最大の領域を返します。
mv_threshold
動き検出のしきい値とする動きをピクセル単位で設定します。既定値は 8 です。
low high
Canny のしきい値処理アルゴリズムで使う低・高のしきい値を設定します。
高しきい値は「強い」エッジピクセルを選び、それらは低しきい値で選ばれた「弱い」エッジピクセルと 8 連結を通じてつながれます。
low と high のしきい値は [0,1] の範囲で選ぶ必要があり、low は high 以下でなければなりません。
low の既定値は 5/255、high の既定値は 15/255 です。
11.48.1 Examples
-
黒い縁に囲まれた映像領域を見つけます:
ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null - -
埋め込まれた映像領域を見つけます。あらかじめ動きベクトルを生成します:
ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null - -
埋め込まれた映像領域を見つけます。デコーダからの動きベクトルを使います:
ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
11.48.2 Commands
このフィルタは次のコマンドに対応しています:
limit
コマンドは対応するオプションと同じ構文を受け付けます。指定した式が有効でない場合は、現在の値が維持されます。
11.49 cue
指定した実時間(ウォールクロック)のタイムスタンプまで映像のフィルタ処理を遅延させます。フィルタはまず preroll 分のフレームを通過させ、次に最大で buffer 分のフレームをバッファし、cue を待ちます。cue に到達すると、バッファしたフレームと、その入力に続いて入ってくるフレームを転送します。
このフィルタは、decklink のようなリアルタイム出力デバイス向けに、複数の ffmpeg プロセスの出力を同期させるために使えます。遅延をフィルタチェインに入れてフレームを事前バッファしておくことで、目標の実時間タイムスタンプに到達した直後にほぼ即座にデータを出力へ渡せます。
完全なフレーム精度は保証できませんが、いくつかの用途では十分な結果が得られます。
cue
cue のタイムスタンプです。UNIX タイムスタンプをマイクロ秒で表します。既定値は 0 です。
preroll
preroll として通過させるコンテンツの長さです。秒で表します。既定値は 0 です。
buffer
cue を待つ前にバッファするコンテンツの最大の長さです。秒で表します。既定値は 0 です。
11.50 curves
カーブを使って色を調整します。
このフィルタは Adobe Photoshop や GIMP のカーブツールに似ています。各成分(赤・緑・青)は、滑らかなカーブで互いに結ばれた N 個のキーポイントによって値が定義されます。x 軸は入力フレームのピクセル値を、y 軸は出力フレームに設定される新しいピクセル値を表します。
既定では、成分カーブは 2 点 (0;0) と (1;1) によって定義されます。これは、各元のピクセル値がそれ自身の値に「調整」される直線、つまり画像に変化が生じない状態を作ります。
このフィルタでは、これら 2 点を再定義し、さらに点を追加できます。新しいすべての座標を滑らかに通る新しいカーブが定義されます。新しく定義する点は x 軸方向に厳密に増加していなければならず、x と y の値は [0;1] の区間内になければなりません。カーブは、interp オプション(既定値: natural)に応じて、natural または monotonic な 3 次スプライン補間を用いて形成されます。natural スプラインは一般により滑らかなカーブを生み、monotonic(pchip)スプラインは指定した点同士の遷移が単調になることを保証します。計算されたカーブがベクトル空間の外に出てしまった場合、値はそれに応じてクリップされます。
このフィルタは次のオプションを受け付けます:
preset
利用可能なカラープリセットから 1 つを選びます。このオプションは r, g, b パラメータに加えて使用でき、その場合は後続のオプションがプリセット値より優先されます。利用可能なプリセットは次のとおりです:
‘none’ ‘color_negative’ ‘cross_process’ ‘darker’ ‘increase_contrast’ ‘lighter’ ‘linear_contrast’ ‘medium_contrast’ ‘negative’ ‘strong_contrast’ ‘vintage’
既定値は none です。
master, m
マスターのキーポイントを設定します。これらの点は 2 回目のパスのマッピングを定義します。「輝度(luminance)」や「値(value)」のマッピングと呼ばれることもあります。後処理の LUT のように働くため、r, g, b や all と併用できます。
red, r
赤成分のキーポイントを設定します。
green, g
緑成分のキーポイントを設定します。
blue, b
青成分のキーポイントを設定します。
all
すべての成分のキーポイントを設定します(master は含みません)。他のキーポイント成分オプションに加えて使用できます。この場合、設定されていない成分はこの all の設定にフォールバックします。
psfile
設定を読み込む Photoshop のカーブファイル(.acv)を指定します。
plot
カーブの Gnuplot スクリプトを指定したファイルに保存します。
interp
補間の種類を指定します。利用可能なアルゴリズムは次のとおりです:
‘natural’
2 回連続微分可能な区分的 3 次多項式を用いる自然 3 次スプラインです。
‘pchip’
区分的 3 次エルミート補間多項式(PCHIP)を用いる単調 3 次スプラインです。
filtergraph の構文上の競合を避けるため、各キーポイントのリストは次の構文で定義する必要があります: x0/y0 x1/y1 x2/y2 ...。
11.50.1 Commands
このフィルタはオプションと同じコマンドに対応しています。
11.50.2 Examples
-
青の中間レベルを少し上げます:
curves=blue='0/0 0.5/0.58 1/1' -
ビンテージ効果:
curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
ここでは、各成分について次の座標が得られます:
red
(0;0.11) (0.42;0.51) (1;0.95)
green
(0;0) (0.50;0.48) (1;1)
blue
(0;0.22) (0.49;0.44) (1;0.80)
-
前の例は、対応する組み込みプリセットでも実現できます:
curves=preset=vintage -
あるいは単に:
curves=vintage -
Photoshop のプリセットを使い、緑成分の点を再定義します:
curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1' -
ffmpegとgnuplotを使ってcross_processプロファイルのカーブを確認します:ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null - gnuplot -p /tmp/curves.plt
11.51 datascope
映像データ解析フィルタです。
このフィルタは、映像の一部の 16 進ピクセル値を表示します。
このフィルタは次のオプションを受け付けます:
size, s
出力映像のサイズを設定します。
x
ピクセルを取得する x オフセットを設定します。
y
ピクセルを取得する y オフセットを設定します。
mode
スコープのモードを設定します。次のいずれかを指定できます:
‘mono’
黒背景に白色で 16 進ピクセル値を描画します。
‘color’
黒背景に入力映像のピクセル色で 16 進ピクセル値を描画します。
‘color2’
入力映像から取得した色を背景に 16 進ピクセル値を描画します。テキストの色は常に見えるように選ばれます。
axis
映像の左と上に行番号・列番号を描画します。
opacity
背景の不透明度を設定します。
format
表示する数値の形式を設定します。hex または dec を指定できます。既定値は hex です。
components
表示するピクセル成分を設定します。既定ではすべてのピクセル成分が表示されます。
11.51.1 Commands
このフィルタは、size オプションを除き、オプションと同じコマンドに対応しています。
11.52 dblur
方向性ぼかし(Directional blur)フィルタを適用します。
このフィルタは次のオプションを受け付けます:
angle
方向性ぼかしの角度を設定します。既定値は 45 です。
radius
方向性ぼかしの半径を設定します。既定値は 5 です。
planes
フィルタ処理するプレーンを設定します。既定ではすべてのプレーンがフィルタ処理されます。
11.52.1 Commands
このフィルタはオプションと同じコマンドに対応しています。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が有効でない場合は、現在の値が維持されます。
11.53 dctdnoiz
2D DCT(周波数領域フィルタリング)を使ってフレームのノイズを除去します。
このフィルタはリアルタイム処理向けには設計されていません。
このフィルタは次のオプションを受け付けます:
sigma, s
ノイズの sigma 定数を設定します。
この sigma は 3 * sigma のハードしきい値を定義します。このしきい値を下回る(絶対値の)DCT 係数はすべて切り捨てられます。
より高度なフィルタリングが必要なら、expr を参照してください。
既定値は 0 です。
overlap
各ブロックで重なり合うピクセル数を設定します。このフィルタは遅くなりうるため、フィルタ効果が下がり各種アーティファクトのリスクが生じる代わりに、この値を下げたい場合もあります。
重なりの値が入力の幅または高さ全体を処理できない場合は警告が表示され、該当する縁はノイズ除去されません。
既定値は blocksize-1 で、これが最良の設定です。
expr, e
係数の倍率となる式を設定します。
DCT ブロックの各係数について、この式が係数に対する乗数値として評価されます。
このオプションが設定されている場合、sigma オプションは無視されます。
係数の絶対値は変数 c を通じて参照できます。
n
ビット数を使ってブロックサイズを設定します。1<<n がブロックサイズ、すなわち処理ブロックの幅と高さを定義します。
既定値は 3(8x8)で、ブロックサイズ 16x16 のために 4 まで上げられます。この設定の変更は処理速度に大きな影響を与えることに注意してください。また、ブロックサイズが大きいほど必ずしもノイズ除去が良くなるわけではありません。
11.53.1 Examples
sigma を 4.5 にしてノイズ除去を適用します:
dctdnoiz=4.5
同じ操作は式システムを使っても実現できます:
dctdnoiz=e='gte(c, 4.5*3)'
ブロックサイズ 16x16 を使った強力なノイズ除去:
dctdnoiz=15:n=4
11.54 deband
入力映像からバンディング(階調の段差)アーティファクトを除去します。バンディングしたピクセルを、参照ピクセルの平均値で置き換えることで動作します。
このフィルタは次のオプションを受け付けます:
1thr 2thr 3thr 4thr
各プレーンのバンディング検出しきい値を設定します。既定値は 0.02 です。有効範囲は 0.00003 から 0.5 です。現在のピクセルと参照ピクセルの差がしきい値未満であれば、バンディングしているとみなされます。
range, r
バンディング検出の範囲(ピクセル単位)です。既定値は 16 です。正の場合は 0 から設定値までの範囲の乱数が使われます。負の場合は絶対値そのものが使われます。この範囲は現在のピクセルの周囲 4 ピクセルの正方形を定義します。
direction, d
4 つのピクセルを比較する方向をラジアンで設定します。正の場合は 0 から設定した方向までの乱数方向が選ばれます。負の場合はその絶対値そのものが選ばれます。例えば方向 0、-PI、-2*PI ラジアンは同じ行のピクセルだけを選び、-PI/2 は同じ列のピクセルだけを選びます。
blur, b
有効にすると、現在のピクセルは周囲 4 ピクセルすべての平均値と比較されます。既定では有効です。無効にすると、現在のピクセルは周囲 4 ピクセルそれぞれと比較されます。周囲ピクセルとの 4 つの差がすべてしきい値未満の場合にのみ、そのピクセルはバンディングしているとみなされます。
coupling, c
有効にすると、すべてのピクセル成分がバンディングしている場合、すなわちバンディング検出しきい値がすべての色成分で引っかかった場合にのみ、現在のピクセルが変更されます。既定では無効です。
11.54.1 Commands
このフィルタは上記のすべてのオプションをコマンドとして対応しています。
11.55 deblock
入力映像からブロッキングアーティファクトを除去します。
このフィルタは次のオプションを受け付けます:
filter
フィルタの種類を設定します。weak または strong を指定できます。既定値は strong です。これによってどの種類のデブロックを適用するかが制御されます。
block
ブロックのサイズを設定します。許容範囲は 4 から 512 です。既定値は 8 です。
alpha beta gamma delta
ブロッキング検出のしきい値を設定します。許容範囲は 0 から 1 です。既定値は alpha が 0.098、それ以外が 0.05 です。しきい値を高くするほどデブロックの強度が増します。alpha の設定はブロックの正確な境界でのしきい値検出を制御します。残りのオプションは境界付近でのしきい値検出を制御し、それぞれ下/上または左/右を担当します。これらのいずれかを 0 に設定するとデブロックが無効になります。
planes
フィルタ処理するプレーンを設定します。既定では利用可能なすべてのプレーンをフィルタ処理します。
11.55.1 Examples
-
weak フィルタとブロックサイズ 4 ピクセルでデブロックします。
deblock=filter=weak:block=4 -
strong フィルタ、ブロックサイズ 4 ピクセル、より多くの境界をデブロックするカスタムしきい値でデブロックします。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05 -
上と同様ですが、最初のプレーンのみをフィルタ処理します。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1 -
上と同様ですが、2 番目と 3 番目のプレーンのみをフィルタ処理します。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
11.55.2 Commands
このフィルタは上記のすべてのオプションをコマンドとして対応しています。
11.56 decimate
一定間隔で重複したフレームを破棄します。
このフィルタは次のオプションを受け付けます:
cycle
そのうち 1 枚を破棄するフレーム数を設定します。これを N に設定すると、N フレームごとのまとまりで 1 枚が破棄されます。既定値は 5 です。
dupthresh
重複検出のしきい値を設定します。あるフレームの差分メトリックがこの値以下であれば、重複と判定されます。既定値は 1.1 です。
scthresh
シーンチェンジのしきい値を設定します。既定値は 15 です。
blockx blocky
メトリック計算で使う x 軸・y 軸のブロックサイズを設定します。ブロックが大きいほどノイズ抑制は良くなりますが、小さな動きの検出は悪くなります。2 のべき乗でなければなりません。既定値は 32 です。
ppsrc
メインの入力を前処理済みの入力としてマークし、クリーンなソース入力ストリームを有効にします。これにより、フレーム選択を可逆に保ちつつ、メトリック計算を助けるために各種フィルタで入力を前処理できます。1 に設定すると、1 番目のストリームが前処理済みの入力となり、2 番目のストリームが残すフレームを選ぶためのクリーンなソースとなります。既定値は 0 です。
chroma
メトリック計算でクロマを考慮するかどうかを設定します。既定値は 1 です。
mixed
入力にデシメート対象のコンテンツが部分的にしか含まれていないかどうかを設定します。既定値は false です。有効にすると映像の出力ストリームは可変フレームレートになります。
11.57 deconvolve
2つ目のストリームをインパルスとして用い、周波数領域で映像ストリームの2次元デコンボリューションを行います。
このフィルタは次のオプションを受け付けます。
planes
処理する平面を指定します。
impulse
処理するインパルス映像フレームを指定します。first または all を指定できます。既定値は all です。
noise
除算を行う際のノイズを設定します。既定値は 0.0000001 です。幅と高さが等しくなく2の累乗でもない場合や、コンボリューション前のストリームにノイズが含まれていた場合に有用です。
deconvolve フィルタは framesync オプションにも対応しています。
11.58 dedot
映像からクロスルミナンス(ドットクロール)とクロスカラー(レインボー)を低減します。
次のオプションを受け付けます。
m
動作モードを設定します。クロスルミナンス低減の dotcrawl とクロスカラー低減の rainbows を組み合わせて指定できます。
lt
空間的な輝度のしきい値を設定します。値を小さくするとクロスルミナンスの低減が強まります。
tl
時間的な輝度に対する許容量を設定します。値を大きくするとクロスルミナンスの低減が強まります。
tc
クロマの時間的変動に対する許容量を設定します。値を大きくするとクロスカラーの低減が強まります。
ct
時間的なクロマのしきい値を設定します。値を小さくするとクロスカラーの低減が強まります。
11.59 deflate
映像に deflate(収縮)効果を適用します。
このフィルタは、対象画素より小さい値だけを考慮した局所(3x3)平均で画素を置き換えます。
次のオプションを受け付けます。
threshold0 threshold1 threshold2 threshold3
各平面の最大変化量を制限します。既定値は 65535 です。0 にするとその平面は変更されません。
11.59.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.60 deflicker
フレーム間の時間的な輝度変動を除去します。
次のオプションを受け付けます。
size, s
移動平均フィルタのサイズをフレーム数で設定します。既定値は 5 です。指定可能な範囲は 2〜129 です。
mode, m
時間的な輝度変動を平滑化するための平均化モードを設定します。
指定できる値は次のとおりです。
‘am’
算術平均
‘gm’
幾何平均
‘hm’
調和平均
‘qm’
二乗平均
‘cm’
三乗平均
‘pm’
べき平均
‘median’
中央値
bypass
フレームを実際には変更しません。メタデータだけが必要な場合に有用です。
11.61 deinterlace_d3d12
D3D12 のハードウェアアクセラレーション映像処理を用いて入力映像をデインターレースします。
このフィルタは DirectX 12 Video Processor を用いて GPU 上でデインターレースを行い、単純な bob と、ドライバ定義の高度な(動き適応型)アルゴリズムの両方をサポートします。入力が d3d12 ハードウェア pixel format であることが必要です。
このフィルタは必要に応じて、要求される時間参照フレーム数をハードウェアに自動的に問い合わせ、それらを供給するためのフレームキューを管理します。
次のオプションを受け付けます。
method
デインターレース手法。次の値のいずれかを受け付けます。
‘default’
ハードウェアで利用可能な最良のデインターレース手法を選択します。ドライバが custom をサポートしていればそれを用い、そうでなければ bob にフォールバックします。これが既定値です。
‘bob’
bob デインターレース。各フィールドが独立にフレーム全高へスケーリングされます。単純かつ高速ですが、動きのある映像では bob 由来のアーティファクトが目立つことがあります。
‘custom’
ドライバ定義の高度なデインターレース。具体的なアルゴリズムはハードウェア固有で、通常は時間参照フレームを用いた動き適応型の手法を採用し、より高品質となります。
既定値は default です。
mode
インターレースモードを指定します。次の値のいずれかを受け付けます。
‘frame’
1フレームごとに1フレームを出力します。出力フレームレートは入力フレームレートと等しくなります。これが既定値です。
‘field’
1フィールドごとに1フレームを出力します。出力フレームレートは入力フレームレートの2倍になります。
既定値は frame です。
deint
デインターレースするフレームを指定します。次の値のいずれかを受け付けます。
‘all’
すべてのフレームをデインターレースします。これが既定値です。
‘interlaced’
インターレースとマークされたフレームのみをデインターレースします。プログレッシブフレームはそのまま通過させます。
既定値は all です。
11.61.1 Examples
-
ソフトウェアデコードと、利用可能な最良のハードウェアデインターレース手法でインターレース映像をデインターレースします。
ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \ -vf "format=nv12,hwupload,deinterlace_d3d12=method=default,hwdownload,format=nv12" \ -c:v libx264 -crf 18 output.mp4 -
ハードウェアデコードを用い、bob 手法でフィールドレート(フレームレートの2倍)でデインターレースします(完全な d3d12 パイプライン)。
ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.ts \ -vf "deinterlace_d3d12=method=bob:mode=field" \ -c:v h264_d3d12va output.mp4 -
インターレースフレームのみをデインターレースし、プログレッシブフレームはそのまま通過させます。
ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \ -vf "format=nv12,hwupload,deinterlace_d3d12=deint=interlaced,hwdownload,format=nv12" \ -c:v libx264 -crf 18 output.mp4
11.62 dejudder
部分的にインターレースされたテレシネ素材で生じるジャダーを除去します。
ジャダーは、たとえば pullup フィルタによって生じることがあります。元のソースが部分的にテレシネされた素材だった場合、pullup,dejudder の出力は可変フレームレートになります。コンテナに記録されたフレームレートが変わることがあります。その変更を除けば、このフィルタは固定フレームレートの映像には影響しません。
このフィルタで利用できるオプションは次のとおりです。
cycle
ジャダーが繰り返される周期の長さを指定します。
1より大きい任意の整数を受け付けます。有用な値は次のとおりです。
‘4’
元が 24fps から 30fps へテレシネされていた場合(Film から NTSC)。
‘5’
元が 25fps から 30fps へテレシネされていた場合(PAL から NTSC)。
‘20’
両者が混在している場合。
既定値は ‘4’ です。
11.63 delogo
周囲の画素を単純に補間してテレビ局のロゴを消します。ロゴを覆う矩形を設定するだけで消えてくれます(ときにはもっと醜いものが現れることもあります。結果は環境次第です)。
次のパラメータを受け付けます。
x y
ロゴの左上隅の座標を指定します。必ず指定しなければなりません。
w h
消去するロゴの幅と高さを指定します。必ず指定しなければなりません。
show
1 に設定すると、適切な x, y, w, h パラメータを見つけやすくするために緑色の矩形が画面に描画されます。既定値は 0 です。
矩形は、(部分的に)補間値で置き換えられる最も外側の画素上に描画されます。この矩形のすぐ外側にある各方向の隣接画素の値を用いて、矩形内部の補間画素値を計算します。
11.63.1 Examples
- 左上隅の座標 0,0、サイズ 100x77 の領域を覆う矩形を設定します。
delogo=x=0:y=0:w=100:h=77
11.64 derain
畳み込みニューラルネットワークに基づく derain 手法を適用して、入力画像/映像から雨を除去します。サポートするモデルは次のとおりです。
- Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN)。http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf を参照してください。
学習スクリプトおよびモデル生成スクリプトは、https://github.com/XueweiMeng/derain_filter.git のリポジトリで提供されています。
このフィルタは次のオプションを受け付けます。
filter_type
使用するフィルタを指定します。このオプションは次の値を受け付けます。
‘derain’
derain フィルタ。derain フィルタを実行するには derain モデルを使う必要があります。
‘dehaze’
dehaze フィルタ。dehaze フィルタを実行するには dehaze モデルを使う必要があります。
既定値は ‘derain’ です。
dnn_backend
モデルの読み込みと実行に使う DNN バックエンドを指定します。このオプションは次の値を受け付けます。
‘tensorflow’
TensorFlow バックエンド。このバックエンドを有効にするには、TensorFlow for C ライブラリをインストールし(https://www.tensorflow.org/install/lang_c を参照)、FFmpeg を --enable-libtensorflow で構成する必要があります
model
ネットワークアーキテクチャとそのパラメータを指定するモデルファイルへのパスを設定します。バックエンドによって使用するファイル形式が異なる点に注意してください。TensorFlow は自身の形式のファイルのみ読み込めます。
(非同期実行などの)すべての機能を利用するには、dnn_processing フィルタを使ってください。
11.65 deshake
水平方向・垂直方向の小さなずれの補正を試みます。このフィルタは、カメラの手持ち撮影、三脚への接触、乗り物上での移動などによるカメラの揺れを除去するのに役立ちます。
このフィルタは次のオプションを受け付けます。
x y w h
動きベクトルの探索を制限する矩形領域を指定します。必要であれば、動きベクトルの探索を、左上隅・幅・高さで定義されるフレーム内の矩形領域に限定できます。これらのパラメータは drawbox フィルタと同じ意味を持ち、drawbox を使ってバウンディングボックスの位置を可視化できます。
これは、フレーム内の被写体の同時的な動きが、動きベクトル探索によってカメラの動きと混同されかねない場合に有用です。
x, y, w, h のいずれか、またはすべてを -1 にすると、フレーム全体が使われます。これにより、動きベクトル探索のためのバウンディングボックスを指定せずに、後続のオプションを設定できます。
既定値 - フレーム全体を探索します。
rx ry
x 方向・y 方向の最大移動量を 0〜64 ピクセルの範囲で指定します。既定値は 16 です。
edge
フレーム端の空白を埋める画素の生成方法を指定します。指定できる値は次のとおりです。
‘blank, 0’
空白箇所をゼロで埋めます
‘original, 1’
空白箇所に元の画像を用います
‘clamp, 2’
空白箇所に端の画素値を引き延ばして用います
‘mirror, 3’
空白箇所に端を鏡像反転した画素を用います
既定値は ‘mirror’ です。
blocksize
動き探索に用いるブロックサイズを指定します。範囲は 4〜128 ピクセル、既定値は 8 です。
contrast
ブロックのコントラストしきい値を指定します。指定したコントラスト(最も暗い画素と最も明るい画素の差)を上回るブロックのみが考慮されます。範囲は 1〜255、既定値は 125 です。
search
探索方式を指定します。指定できる値は次のとおりです。
‘exhaustive, 0’
全探索を行います
‘less, 1’
簡略化した探索を行います。
既定値は ‘exhaustive’ です。
filename
設定すると、動き探索の詳細なログが指定したファイルに書き込まれます。
11.66 despill
グリーンスクリーンやブルースクリーンの反射色によって生じる、前景色への不要な混入を除去します。
このフィルタは次のオプションを受け付けます。
type
使用する despill の種類を設定します。
mix
spillmap の生成方法を設定します。
expand
残存するスピルをどの程度除去するかを設定します。
red
スピル領域の赤の量を制御します。
green
スピル領域の緑の量を制御します。グリーンスクリーンでは -1 にするとよいでしょう。
blue
スピル領域の青の量を制御します。ブルースクリーンでは -1 にするとよいでしょう。
brightness
色を保ったまま、スピル領域の明るさを制御します。
alpha
生成された spillmap のアルファを変更します。
11.66.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.67 detelecine
テレシネ操作の厳密な逆変換を適用します。pattern オプションで指定する事前定義のパターンが必要で、これは telecine フィルタに渡したものと同じでなければなりません。
このフィルタは次のオプションを受け付けます。
first_field
‘top, t’
トップフィールドファースト
‘bottom, b’
ボトムフィールドファースト。既定値は top です。
pattern
適用したいプルダウンパターンを表す数字の文字列です。既定値は 23 です。
start_frame
テレシネパターンに対する先頭フレームの位置を表す数値です。ストリームが切り出されている場合に使用します。既定値は 0 です。
11.68 dilation
映像に dilation(膨張)効果を適用します。
このフィルタは画素を局所(3x3)の最大値で置き換えます。
次のオプションを受け付けます。
threshold0 threshold1 threshold2 threshold3
各平面の最大変化量を制限します。既定値は 65535 です。0 にするとその平面は変更されません。
coordinates
参照する画素を指定するフラグ。既定値は 255、すなわち8画素すべてを使用します。
局所 3x3 座標へのフラグの対応は次のとおりです。
1 2 3 4 5 6 7 8
11.68.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.69 displace
2つ目と3つ目の入力ストリームの指示に従って画素を変位させます。
3つの入力ストリームを受け取り、1つのストリームを出力します。1つ目の入力がソース、2つ目と3つ目の入力が変位マップです。
2つ目の入力は x 軸方向に画素をどれだけ変位させるかを、3つ目の入力は y 軸方向に画素をどれだけ変位させるかを指定します。一方の変位マップストリームが終了した場合、その変位マップの最後のフレームが使われます。
なお、いったん生成した変位マップは何度でも再利用できます。
受け付けるオプションの説明を以下に示します。
edge
範囲外の画素に対する displace の挙動を設定します。
指定できる値は次のとおりです。
‘blank’
欠落した画素を黒い画素で置き換えます。
‘smear’
隣接する画素が広がって欠落した画素を埋めます。
‘wrap’
範囲外の画素を反対側の画素を指すように折り返します。
‘mirror’
範囲外の画素を鏡像反転した画素で置き換えます。
既定値は ‘smear’ です。
11.69.1 Examples
-
映像サイズ hd720 の rgb 入力にリップル効果を加えます。
ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT -
映像サイズ hd720 の rgb 入力に波効果を加えます。
ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
11.70 dnn_classify
バウンディングボックスに基づき、ディープニューラルネットワークで分類を行います。
このフィルタは次のオプションを受け付けます。
dnn_backend
モデルの読み込みと実行に使う DNN バックエンドを指定します。このオプションは現状 openvino のみを受け付けます。tensorflow バックエンドは今後追加される予定です。
model
ネットワークアーキテクチャとそのパラメータを指定するモデルファイルへのパスを設定します。バックエンドによって使用するファイル形式が異なる点に注意してください。
input
dnn ネットワークの入力名を設定します。
output
dnn ネットワークの出力名を設定します。
confidence
信頼度のしきい値を設定します(既定値: 0.5)。
labels
ラベル ID と名前の対応を指定するラベルファイルへのパスを設定します。各ラベル名は1行に1つ書かれ、末尾の空白と空行はスキップされます。1行目がラベル ID 0 の名前、2行目がラベル ID 1 の名前、という具合になります。ラベルファイルが指定されない場合、ラベル ID がそのまま名前として扱われます。
backend_configs
バックエンドに渡す設定を指定します
tensorflow バックエンドでは sess_config オプションでその設定を行えます。tools/python/tf_sess_config.py を使って、自分の環境向けの設定を取得してください。
11.71 dnn_detect
ディープニューラルネットワークで物体検出を行います。
このフィルタは次のオプションを受け付けます。
dnn_backend
モデルの読み込みと実行に使う DNN バックエンドを指定します。このオプションは現状 openvino のみを受け付けます。tensorflow バックエンドは今後追加される予定です。
model
ネットワークアーキテクチャとそのパラメータを指定するモデルファイルへのパスを設定します。バックエンドによって使用するファイル形式が異なる点に注意してください。
input
dnn ネットワークの入力名を設定します。
output
dnn ネットワークの出力名を設定します。
confidence
信頼度のしきい値を設定します(既定値: 0.5)。
labels
ラベル ID と名前の対応を指定するラベルファイルへのパスを設定します。各ラベル名は1行に1つ書かれ、末尾の空白と空行はスキップされます。1行目がラベル ID 0 の名前(通常は ’background’)、2行目がラベル ID 1 の名前、という具合になります。ラベルファイルが指定されない場合、ラベル ID がそのまま名前として扱われます。
backend_configs
バックエンドに渡す設定を指定します。非同期実行を使うには async を設定します(既定値: set)。バックエンドが非同期に対応していない場合は同期実行にフォールバックします。
11.72 dnn_processing
ディープニューラルネットワークで画像処理を行います。Frame の pixel format を dnn ネットワークが必要とする形式に変換する別のフィルタと組み合わせて動作します。
このフィルタは次のオプションを受け付けます。
dnn_backend
モデルの読み込みと実行に使う DNN バックエンドを指定します。このオプションは次の値を受け付けます。
‘tensorflow’
TensorFlow バックエンド。このバックエンドを有効にするには、TensorFlow for C ライブラリをインストールし(https://www.tensorflow.org/install/lang_c を参照)、FFmpeg を --enable-libtensorflow で構成する必要があります
‘openvino’
OpenVINO バックエンド。このバックエンドを有効にするには、OpenVINO for C ライブラリをビルドしてインストールし(https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md を参照)、FFmpeg を --enable-libopenvino で構成する必要があります(ヘッダファイルやライブラリがシステムパスにインストールされていない場合は –extra-cflags=-I... –extra-ldflags=-L... が必要になることがあります)
‘torch’
Libtorch バックエンド。このバックエンドを有効にするには、Libtorch for C++ ライブラリをビルドしてインストールする必要があります。cxx11 ABI 版をダウンロードし(https://pytorch.org/get-started/locally を参照)、FFmpeg を --enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/ で構成します
‘onnx’
ONNX Runtime バックエンド。このバックエンドを有効にするには、ONNX Runtime ライブラリをインストールし(https://onnxruntime.ai/ を参照)、FFmpeg を --enable-libonnxruntime で構成する必要があります。
現状の ONNX Runtime バックエンドは、NCHW レイアウトで 32 ビット浮動小数点要素型(ONNX FLOAT)の4次元入出力テンソルを想定しています。整数やその他の要素型(例: UINT8)のモデルはサポートされず、読み込み時に拒否されます。NHWC レイアウトやその他のランクを用いるモデルはまだサポートされていません。サポートされるのは単一入力のモデルのみで、バックエンドはモデル実行時にちょうど1つの入力テンソルをバインドします。
input と output オプションは ONNX Runtime バックエンドでは省略可能で、省略するとバックエンドはセッションからテンソル名を解決します。
ONNX Runtime バックエンドは単一の推論リクエストを用いて同期的に推論を行います。したがって共有の async および nireq オプションは dnn_backend=onnx では効果がなく、その値に関わらず推論は常に同期的に実行されます。
model
ネットワークアーキテクチャとそのパラメータを指定するモデルファイルへのパスを設定します。バックエンドによって使用するファイル形式が異なる点に注意してください。TensorFlow、OpenVINO、Libtorch、ONNX Runtime の各バックエンドは、それぞれの形式のファイルのみ読み込めます。
input
dnn ネットワークの入力名を設定します。TensorFlow バックエンドでは必須、ONNX Runtime バックエンドでは省略可能です。
output
dnn ネットワークの出力名を設定します。TensorFlow バックエンドでは必須、ONNX Runtime バックエンドでは省略可能です。
backend_configs
バックエンドに渡す設定を指定します。非同期実行を使うには async を設定します(既定値: set)。バックエンドが非同期に対応していない場合は同期実行にフォールバックします。
tensorflow バックエンドでは sess_config オプションでその設定を行えます。tools/python/tf_sess_config.py を使って、自分の環境向けの TensorFlow バックエンドの設定を取得してください。
device
モデルを実行するデバイスを設定します。ONNX Runtime バックエンドでは、これにより実行プロバイダを選択します。cpu(既定値)、cuda(NVIDIA GPU)、dml(DirectML、Windows のみ)、vitisai(AMD Ryzen AI NPU)。
device_id
ONNX Runtime バックエンドで GPU 実行プロバイダ(例: cuda や dml)が使用するデバイスインデックスを設定します。既定値は 0 です。
threads_per_operation
ONNX Runtime バックエンド専用です。device=cpu で実行する際、ONNX Runtime の演算子ごとに使用する CPU スレッド数を設定します。既定値は 0(ONNX Runtime に自動選択させる)です。GPU/NPU プロバイダでは効果がありません。
11.72.1 Examples
-
can.pb で rgb24 フレームの雨を除去します(derain フィルタを参照)。
./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg -
yuv420p のフレームに対して srcnn.pb で Y チャンネルを処理します(sr フィルタを参照。プレーナ YUV 形式をサポート)。
./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg -
フレームサイズを変更する espcn.pb で、yuv420p 形式に対して Y チャンネルを処理します(sr フィルタを参照。プレーナ YUV 形式をサポート)。tools/python/tf_sess_config.py を使って、自分の環境向けの TensorFlow バックエンドの設定を取得してください。
./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
11.73 drawbox
入力画像に色付きの矩形を描画します。
次のパラメータを受け付けます。
x y
矩形の左上隅の座標を指定する式。既定値は 0 です。
width, w height, h
矩形の幅と高さを指定する式。0 の場合は入力の幅と高さとして解釈されます。既定値は 0 です。
color, c
描画する矩形の色を指定します。このオプションの一般的な構文については、ffmpeg-utils マニュアルの「Color」セクションを参照してください。特殊な値 invert を用いると、矩形の枠の色が映像の輝度を反転した色になります。
thickness, t
矩形の枠の太さを設定する式。値 fill を指定すると塗りつぶされた矩形になります。既定値は 3 です。
受け付ける定数の一覧については後述します。
replace
入力にアルファがある場合に適用されます。値 1 では、描画される矩形の画素が映像の色とアルファの画素を上書きします。既定値は 0 で、この場合は矩形を入力に合成し、映像のアルファはそのまま残します。
x, y, w, h, t のパラメータは、次の定数を含む式です。
dar
入力の表示アスペクト比。(w / h) * sar と同じです。
hsub vsub
水平・垂直のクロマサブサンプル値。たとえば pixel format "yuv422p" では hsub が 2、vsub が 1 です。
in_h, ih in_w, iw
入力の幅と高さ。
sar
入力のサンプルアスペクト比。
x y
矩形を描画する x, y のオフセット座標。
w h
描画される矩形の幅と高さ。
box_source
side data の検出バウンディングボックスのボックスデータを使いたい場合、box source に side_data_detection_bboxes を設定できます。
box_source を設定すると、x, y, width, height は無視され、side data の検出バウンディングボックスのボックスデータが使われます。そのため、box source が確かでない場合はこのパラメータを使わないでください。
t
描画される矩形の太さ。
これらの定数により、x, y, w, h, t の各式が互いを参照できます。たとえば y=x/dar や h=w/dar のように指定できます。
11.73.1 Examples
-
入力画像の縁に沿って黒い枠を描きます:
drawbox -
赤色、不透明度50%の枠を描きます:
drawbox=10:20:200:60:red@0.5
上記の例は次のように指定することもできます:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
-
枠の内側をピンク色で塗りつぶします:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill -
2ピクセルの赤い2.40:1のマスクを描きます:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
11.73.2 Commands
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が有効でない場合、その値は現在の値のまま保持されます。
11.74 drawgraph
入力映像のメタデータを使ってグラフを描きます。
次のパラメータを受け付けます:
m1
グラフ描画に使うメタデータ値を取得する、1つ目のフレームメタデータキーを設定します。
fg1
1つ目の前景色の式を設定します。
m2
グラフ描画に使うメタデータ値を取得する、2つ目のフレームメタデータキーを設定します。
fg2
2つ目の前景色の式を設定します。
m3
グラフ描画に使うメタデータ値を取得する、3つ目のフレームメタデータキーを設定します。
fg3
3つ目の前景色の式を設定します。
m4
グラフ描画に使うメタデータ値を取得する、4つ目のフレームメタデータキーを設定します。
fg4
4つ目の前景色の式を設定します。
min
メタデータ値の最小値を設定します。
max
メタデータ値の最大値を設定します。
bg
グラフの背景色を設定します。既定値は白です。
mode
グラフのモードを設定します。
mode に指定できる値:
‘bar’ ‘dot’ ‘line’
既定値は line です。
slide
スライドモードを設定します。
slide に指定できる値:
‘frame’
右端に達したときに新しいフレームを描きます。
‘replace’
古い列を新しい列で置き換えます。
‘scroll’
右から左へスクロールします。
‘rscroll’
左から右へスクロールします。
‘picture’
単一の画像を描きます。
既定値は frame です。
size
グラフ映像のサイズを設定します。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Video size」セクションを参照してください。既定値は 900x256 です。
rate, r
出力フレームレートを設定します。既定値は 25 です。
前景色の式では次の変数を使用できます:
MIN
メタデータ値の最小値。
MAX
メタデータ値の最大値。
VAL
現在のメタデータキーの値。
色は 0xAABBGGRR として定義されます。
signalstats フィルタのメタデータを使う例:
signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
ebur128 フィルタのメタデータを使う例:
ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
11.75 drawgrid
入力画像にグリッドを描きます。
次のパラメータを受け付けます:
x y
グリッドの交点のある一点の座標を指定する式(オフセットの設定用)。どちらも既定値は0です。
width, w height, h
グリッドのセルの幅と高さを指定する式。0の場合はそれぞれ入力の幅と高さから thickness を引いた値として解釈され、画像が枠で囲まれます。既定値は0です。
color, c
グリッドの色を指定します。このオプションの一般的な構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。特別な値 invert を使うと、グリッドの色は映像の輝度を反転した色になります。
thickness, t
グリッド線の太さを設定する式。既定値は 1 です。
受け付ける定数の一覧は後述します。
replace
入力にアルファがある場合に適用されます。1 にすると、描かれたグリッドのピクセルが映像の色とアルファのピクセルを上書きします。既定値は 0 で、この場合グリッドは入力に合成され、映像のアルファはそのまま保たれます。
x、y、w、h、t のパラメータは次の定数を含む式です:
dar
入力の表示アスペクト比。(w / h) * sar と同じです。
hsub vsub
水平・垂直方向のクロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は2、vsub は1です。
in_h, ih in_w, iw
入力のグリッドセルの幅と高さ。
sar
入力のサンプルアスペクト比。
x y
グリッドの交点のある一点の x 座標と y 座標(オフセットの設定用)。
w h
描かれるセルの幅と高さ。
t
描かれるセルの太さ。
これらの定数により、x、y、w、h、t の式は互いを参照できます。例えば y=x/dar や h=w/dar のように指定できます。
11.75.1 Examples
-
セル100x100ピクセル、太さ2ピクセル、赤色、不透明度50%のグリッドを描きます:
drawgrid=width=100:height=100:thickness=2:color=red@0.5 -
不透明度50%の白い3x3グリッドを描きます:
drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
11.75.2 Commands
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が有効でない場合、その値は現在の値のまま保持されます。
11.76 drawtext
libfreetype ライブラリを使って、テキスト文字列または指定したファイルのテキストを映像の上に描きます。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libfreetype と --enable-libharfbuzz を付けて configure する必要があります。既定のフォントフォールバックと font オプションを有効にするには、--enable-libfontconfig を付けて configure する必要があります。text_shaping オプションを有効にするには、--enable-libfribidi を付けて configure する必要があります。
11.76.1 Syntax
次のパラメータを受け付けます:
box
背景色を使ってテキストの周囲に枠を描くために使います。値は1(有効)または0(無効)でなければなりません。box の既定値は0です。
boxborderw
boxcolor を使って枠の周囲に描く境界線の幅を設定します。値は次のいずれかの形式で指定する必要があります:
boxborderw=10すべての境界線の幅を10に設定しますboxborderw=10|20上下の境界線の幅を10、左右の境界線の幅を20に設定しますboxborderw=10|20|30上の境界線の幅を10、下の境界線の幅を30、左右の境界線の幅を20に設定しますboxborderw=10|20|30|40境界線の幅を10(上)、20(右)、30(下)、40(左)に設定します
boxborderw の既定値は "0" です。
boxcolor
テキストの周囲に枠を描くために使う色。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。
boxcolor の既定値は "white" です。
line_spacing
行間をピクセル単位で設定します。line_spacing の既定値は0です。
text_align
枠の境界に対するテキストの垂直・水平方向の配置を設定します。値はフラグの組み合わせで、垂直方向の配置を表すもの(T=上、M=中央、B=下)と、水平方向の配置を表すもの(L=左、C=中央、R=右)から成ります。タブ文字は左揃えの水平配置でのみサポートされる点に注意してください。
y_align
y 値が何を基準にするかを指定します。指定できる値は次のとおりです:
text最初のテキスト行の最も高いグリフの上端が y に配置されますbaseline最初のテキスト行のベースラインが y に配置されますfont最初のテキスト行のベースラインが、y にフォントメトリクスで定義されたアセント(ピクセル単位)を加えた位置に配置されます
y_align の既定値は、後方互換性のため "text" です。
borderw
bordercolor を使ってテキストの周囲に描く境界線の幅を設定します。borderw の既定値は0です。
bordercolor
テキストの周囲に境界線を描くために使う色を設定します。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。
bordercolor の既定値は "black" です。
expansion
テキストの展開方法を選びます。none、strftime(非推奨)、normal(既定)のいずれかです。詳細は後述の「Text expansion」セクションを参照してください。
basetime
カウントの開始時刻を設定します。値はマイクロ秒単位です。非推奨の strftime 展開モードでのみ適用されます。normal 展開モードで同じ動作を再現するには、pts 関数を使い、開始時刻(秒単位)を2番目の引数として与えます。
fix_bounds
真の場合、クリッピングを避けるためにテキスト座標をチェックして修正します。
fontcolor
フォントを描くために使う色。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。
fontcolor の既定値は "black" です。
fontcolor_expr
text と同じ方法で展開され、動的な fontcolor の値を得るための文字列。既定ではこのオプションは空の値で、処理されません。このオプションが設定されると、fontcolor オプションより優先されます。
font
テキストを描くために使うフォントファミリ。既定では Sans です。
fontfile
テキストを描くために使うフォントファイル。パスを含める必要があります。fontconfig のサポートが無効な場合、このパラメータは必須です。
alpha
アルファブレンディングを適用してテキストを描きます。値は0.0から1.0の間の数値です。式では x、y と同じ変数も受け付けます。既定値は1です。fontcolor_expr も参照してください。
fontsize
テキストを描くために使うフォントサイズ。fontsize の既定値は16です。
text_shaping
1に設定すると、描画前にテキストのシェーピング(例えば右から左に書く言語のテキスト順序を反転させたり、アラビア文字を結合したり)を試みます。それ以外の場合は、与えられたとおりにテキストを描きます。既定では1(サポートされている場合)です。
ft_load_flags
フォントの読み込みに使うフラグ。
これらのフラグは libfreetype がサポートする対応するフラグに対応し、次の値の組み合わせです:
default no_scale no_hinting render no_bitmap vertical_layout force_autohint crop_bitmap pedantic ignore_global_advance_width no_recurse ignore_transform monochrome linear_design no_autohint
既定値は "default" です。
詳しくは libfreetype の FT_LOAD_* フラグのドキュメントを参照してください。
shadowcolor
描かれたテキストの背後に影を描くために使う色。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。
shadowcolor の既定値は "black" です。
boxw
テキストの周囲に描く枠の幅を設定します。boxw の既定値はテキストの幅に合わせて自動的に計算されます。
boxh
テキストの周囲に描く枠の高さを設定します。boxh の既定値はテキストの高さに合わせて自動的に計算されます。
shadowx shadowy
テキストの位置に対するテキストの影の位置の x、y オフセット。正の値も負の値も指定できます。どちらも既定値は "0" です。
start_number
n/frame_num 変数の開始フレーム番号。既定値は "0" です。
tabsize
タブを描画するために使うスペースの数で表したサイズ。既定値は4です。
timecode
初期タイムコードの表現を "hh:mm:ss[:;.]ff" 形式で設定します。text パラメータと併用してもしなくても使えます。timecode_rate オプションを指定する必要があります。
timecode_rate, rate, r
タイムコードのフレームレートを設定します(timecode のみ)。値は最も近い整数に丸められます。最小値は "1" です。ドロップフレームタイムコードはフレームレート30と60でサポートされます。
tc24hmax
1に設定すると、timecode オプションの出力は24時間で折り返します。既定値は0(無効)です。
text
描くテキスト文字列。テキストは UTF-8 でエンコードされた文字の並びでなければなりません。textfile パラメータでファイルを指定しない場合、このパラメータは必須です。
textfile
描くテキストを含むテキストファイル。テキストは UTF-8 でエンコードされた文字の並びでなければなりません。
text パラメータでテキスト文字列を指定しない場合、このパラメータは必須です。
text と textfile の両方を指定するとエラーになります。
text_source
side data の detection bboxes 内のテキストデータを使いたい場合、テキストソースを side_data_detection_bboxes に設定します。
テキストソースが設定されると、text と textfile は無視され、side data の detection bboxes 内のテキストデータが使われます。そのため、テキストソースが確実でない場合はこのパラメータを使わないでください。
reload
textfile を指定したフレーム間隔で再読み込みします。textfile はアトミックに更新してください。さもなければ部分的に読み込まれたり、読み込みに失敗したりするおそれがあります。範囲は0からINT_MAXです。既定値は0です。
x y
映像フレーム内でテキストを描くオフセットを指定する式。出力画像の左上の境界を基準とします。
x と y の既定値は "0" です。
受け付ける定数と関数の一覧は後述します。
x と y のパラメータは次の定数と関数を含む式です:
dar
入力の表示アスペクト比。(w / h) * sar と同じです。
hsub vsub
水平・垂直方向のクロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は2、vsub は1です。
line_h, lh
各テキスト行の高さ。
main_h, h, H
入力の高さ。
main_w, w, W
入力の幅。
max_glyph_a, ascent
レンダリングされたすべてのグリフについて、グリフのアウトラインの点を配置するために使われる、ベースラインから最も高い・上のグリッド座標までの最大距離。グリッドの向きが Y 軸を上向きとするため、正の値になります。
max_glyph_d, descent
レンダリングされたすべてのグリフについて、グリフのアウトラインの点を配置するために使われる、ベースラインから最も低いグリッド座標までの最大距離。グリッドの向きが Y 軸を上向きとするため、負の値になります。
max_glyph_h
最大グリフ高さ。すなわちレンダリングされたテキストに含まれるすべてのグリフの最大の高さで、ascent - descent に等しくなります。
max_glyph_w
最大グリフ幅。すなわちレンダリングされたテキストに含まれるすべてのグリフの最大の幅。
font_a
フォントメトリクスで定義されたアセントのサイズ。
font_d
フォントメトリクスで定義されたディセントのサイズ。
top_a
最初のテキスト行のグリフの最大アセンダー。
bottom_d
最後のテキスト行のグリフの最大ディセンダー。
n
入力フレームの番号。0から始まります。
rand(min, max)
min と max の間の乱数を返します。
sar
入力のサンプルアスペクト比。
t
秒で表したタイムスタンプ。入力のタイムスタンプが不明な場合は NAN です。
text_h, th
レンダリングされたテキストの高さ。
text_w, tw
レンダリングされたテキストの幅。
x y
テキストが描かれる x、y のオフセット座標。
これらのパラメータにより、x と y の式は互いを参照できます。例えば y=x/dar のように指定できます。
pict_type
現在のフレームのピクチャタイプを表す1文字の記述。
pkt_pos
入力ファイルまたはストリームにおける現在のパケットの位置(入力の先頭からのバイト数)。値が-1の場合、この情報は利用できません。
duration
現在のパケットの長さ(秒単位)。
pkt_size
現在のパケットのサイズ(バイト単位)。
11.76.2 Text expansion
expansion が strftime に設定されている場合、フィルタは与えられたテキスト内の C 言語の strftime 関数が受け付けるシーケンスを認識し、それに従って展開します。strftime のドキュメントを参照してください。この機能は非推奨であり、gmtime または localtime の展開関数を使った normal 展開が推奨されます。
expansion が none に設定されている場合、テキストはそのまま出力されます。
expansion が normal(既定)に設定されている場合、次の展開機構が使われます。
バックスラッシュ文字 ‘\’ に任意の文字が続くと、常に2番目の文字に展開されます。
%{...} の形式のシーケンスが展開されます。波括弧の間のテキストは関数名で、その後ろに ’:’ で区切られた引数が続くことがあります。引数に特殊文字や区切り文字(’:’ や ’}’)が含まれる場合はエスケープする必要があります。
なお、これらはフィルタ引数文字列における text オプションの値としても、filtergraph 記述におけるフィルタ引数としても、そしておそらくシェルにおいてもエスケープする必要があるでしょう。これで最大4段階のエスケープになります。textfile オプションでテキストファイルを使えば、これらの問題を避けられます。
次の関数が利用できます:
expr, e
式の評価結果。
評価する式を指定する引数を1つ取ります。この式は x と y の値と同じ定数・関数を受け付けます。すべての定数が使えるわけではない点に注意してください。例えば式の評価時にはテキストサイズが分からないため、定数 text_w と text_h は未定義の値になります。
expr_int_format, eif
式の値を評価し、整数として整形して出力します。
最初の引数は評価する式で、expr 関数と同じです。2番目の引数は出力の形式を指定します。指定できる値は ‘x’、‘X’、‘d’、‘u’ です。これらは printf 関数とまったく同じように扱われます。3番目のパラメータは省略可能で、出力が占める桁数を設定します。左側からゼロでパディングを追加するために使えます。
gmtime
フィルタが動作している時刻を UTC で表したもの。引数として C 言語の strftime 関数の形式文字列を1つ受け付けられます。この形式文字列は、秒の小数部を桁数を任意に指定して出力する変数 %[1-6]N をサポートするように拡張されています。
localtime
フィルタが動作している時刻をローカルタイムゾーンで表したもの。引数として C 言語の strftime 関数の形式文字列を1つ受け付けられます。この形式文字列は、秒の小数部を桁数を任意に指定して出力する変数 %[1-6]N をサポートするように拡張されています。
metadata
フレームのメタデータ。1つまたは2つの引数を取ります。
最初の引数は必須で、メタデータキーを指定します。
2番目の引数は省略可能で、メタデータキーが見つからないか空の場合に使われる既定値を指定します。
利用できるメタデータは、ffprobe -show_frames を実行して各フレームセクションに出力される、TAG で始まるエントリを調べることで特定できます。
drawtext フィルタに至るフィルタで生成された文字列メタデータも利用できます。
n, frame_num
フレーム番号。0から始まります。
pict_type
現在のピクチャタイプを表す1文字の記述。
pts
現在のフレームのタイムスタンプ。最大3つの引数を取れます。
最初の引数はタイムスタンプの形式です。既定では flt で、マイクロ秒精度の10進数による秒を表します。hms は [-]HH:MM:SS.mmm 形式でミリ秒精度に整形されたタイムスタンプを表します。gmtime はフレームのタイムスタンプを UTC 時刻として整形したもの、localtime はフレームのタイムスタンプをローカルタイムゾーンの時刻として整形したものを表します。
2番目の引数はタイムスタンプに加えるオフセット。
形式が hms に設定されている場合、3番目の引数 24HH を与えて、整形されたタイムスタンプの時の部分を24時間形式(00-23)で表現できます。
形式が localtime または gmtime に設定されている場合、3番目の引数として C 言語の strftime 関数の形式文字列を与えられます。既定では YYYY-MM-DD HH:MM:SS 形式が使われます。
11.76.3 Commands
このフィルタはコマンドによるパラメータの変更をサポートします:
reinit
既存のフィルタパラメータを変更します。
引数の構文はフィルタ呼び出しと同じです。例えば:
fontsize=56:fontcolor=green:text='Hello World'
sendcmd を使った完全なフィルタ呼び出しは次のようになります:
sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
引数全体を有効な値として解析・適用できない場合、フィルタは既存のパラメータのまま動作を続けます。
次のオプションもコマンドとしてサポートされます:
- x
- y
- alpha
- fontsize
- fontcolor
- boxcolor
- bordercolor
- shadowcolor
- box
- boxw
- boxh
- boxborderw
- line_spacing
- text_align
- shadowx
- shadowy
- borderw
11.76.4 Examples
-
省略可能なパラメータには既定値を使い、フォント FreeSerif で "Test Text" を描きます。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'" -
サイズ24のフォント FreeSerif で、位置 x=100、y=50(画面の左上隅から数える)に ’Test Text’ を描きます。テキストは黄色で、周囲を赤い枠で囲みます。テキストと枠はどちらも不透明度20%です。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\ x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
パラメータリスト内でスペースを使わなければ、二重引用符は不要である点に注意してください。
-
映像フレームの中央にテキストを表示します:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2" -
ランダムな位置にテキストを表示し、30秒ごとに新しい位置へ切り替えます:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)" -
映像フレームの最終行で、右から左へスライドするテキスト行を表示します。ファイル LONG_LINE は改行を含まない1行だけを含むものとします。
drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t" -
ファイル CREDITS の内容をフレームの下端から表示し、上へスクロールさせます。
drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t" -
入力映像の中央に、緑色の文字 "g" を1つ描きます。グリフのベースラインは画面の高さの半分に配置されます。
drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent" -
3秒ごとに1秒間テキストを表示します:
drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'" -
fontconfig を使ってフォントを設定します。コロンをエスケープする必要がある点に注意してください。
drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg' -
映像の高さに応じたフォントサイズで "Test Text" を描きます。
drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)" -
リアルタイムエンコードの日付を表示します(C 言語の
strftime関数のドキュメントを参照):drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}' -
フェードインとフェードアウトする(現れたり消えたりする)テキストを表示します:
#!/bin/sh DS=1.0 # display start DE=10.0 # display end FID=1.5 # fade in duration FOD=5 # fade out duration ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }" -
複数の別々のテキストを水平方向に揃えます。max_glyph_a と fontsize の値が y オフセットに含まれている点に注意してください。
drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a, drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a -
各フレームに、特別な lavf.image2dec.source_basename メタデータが存在すればそれを描画します。存在しなければ文字列 "NA" を描画します。特別なメタデータフィールドをフィルタで利用できるようにするには、image2 demuxer にオプション -export_path_metadata 1 を指定する必要がある点に注意してください。
drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
libfreetype の詳細については http://www.freetype.org/ を参照してください。
fontconfig の詳細については http://freedesktop.org/software/fontconfig/fontconfig-user.html を参照してください。
libfribidi の詳細については http://fribidi.org/ を参照してください。
libharfbuzz の詳細については https://github.com/harfbuzz/harfbuzz を参照してください。
11.77 drawvg
VGS(Vector Graphics Script)と呼ばれる独自言語で書いたスクリプトを実行し、映像フレームの上にベクターグラフィックスを描画します。
この言語のドキュメントは (drawvg-reference)drawvg - Language Reference を参照してください。レンダリング済みの例つきのリファレンスは 作者のサイト で閲覧できます。
グラフィックスは cario 2D graphics library を使ってレンダリングされます。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-cairo を付けて configure する必要があります。
11.77.1 Parameters
script か file のどちらかを必ず設定します。
s, script
グラフィックスを描画するためのスクリプトのソース。
file
スクリプトのソースを読み込むファイルのパス。
11.77.2 Pixel Formats
Cairo は RGB 画像しかサポートしないため、入力映像がそれ以外(YUV 4:2:0 など)の場合は、スクリプトを実行する前に映像を Cairo と互換のある形式へ変換します。その後、format フィルタか -pix_fmt オプションを使って、出力で目的の形式へ変換する必要があります。
11.77.3 Examples
-
楕円の輪郭を描きます。
ffmpeg -i input.webm \ -vf 'drawvg=ellipse (w/2) (h/2) (w/3) (h/3) stroke' \ -pix_fmt yuv420p \ output.webm -
フレームの中央で回転する正方形を描きます。
drawvg 用のスクリプトはファイル draw.vgs に入っています。
translate (w/2) (h/2)
rotate t
rect -100 -100 200 200
setcolor red@0.5
fill
そして次のようにします。
ffmpeg -i input.webm -vf 'drawvg=file=draw.vgs,format=yuv420p' output.webm
11.78 edgedetect
エッジを検出して描画します。このフィルタは Canny エッジ検出アルゴリズムを使います。
このフィルタは次のオプションを受け付けます。
low high
Canny の閾値処理アルゴリズムで使う、低閾値と高閾値の値を設定します。
高閾値は「強い」エッジ画素を選び、それらが低閾値で選ばれた「弱い」エッジ画素と 8 連結を通じて接続されます。
low と high の閾値は [0,1] の範囲で選ばなければならず、low は high 以下である必要があります。
low の既定値は 20/255、high の既定値は 50/255 です。
mode
描画モードを定義します。
‘wires’
黒い背景に白/灰色の線を描きます。
‘colormix’
色を混ぜて絵画/漫画風の効果を作ります。
‘canny’
選択したすべてのプレーンに Canny エッジ検出を適用します。
既定値は wires です。
planes
フィルタリングするプレーンを選択します。既定ではすべての利用可能なプレーンがフィルタリングされます。
11.78.1 Examples
-
ヒステリシス閾値処理の値をカスタム指定した標準的なエッジ検出:
edgedetect=low=0.1:high=0.4 -
閾値処理なしの絵画風効果:
edgedetect=mode=colormix:high=0
11.79 elbg
ELBG(Enhanced LBG)アルゴリズムを使ってポスタリゼーション効果を適用します。
各入力画像について、フィルタはコードブック長(出力色の異なる数)を与えたときの、入力から出力への最適なマッピングを計算します。
このフィルタは次のオプションを受け付けます。
codebook_length, l
コードブック長を設定します。値は正の整数でなければならず、異なる出力色の数を表します。既定値は 256。
nb_steps, n
最適なマッピングを計算するために適用する最大反復回数を設定します。値が大きいほど結果は良くなるが、計算時間も長くなります。既定値は 1。
seed, s
乱数シードを設定します。0 から UINT32_MAX までの整数でなければなりません。指定しない場合、または明示的に -1 を設定した場合、フィルタはベストエフォートで良い乱数シードを使おうとします。
pal8
pal8 出力ピクセル形式を設定します。このオプションはコードブック長が 256 より大きい場合は機能しません。既定では無効。
use_alpha
量子化の計算にアルファ値を含めます。複数のアルファをなめらかにブレンドしたパレット化出力画像(PNG8 など)を作成できます。
11.80 entropy
映像フレームのカラーチャンネルのヒストグラムにおけるグレーレベルのエントロピーを測定します。
次のパラメータを受け付けます。
mode
normal か diff のいずれか。既定は normal。
diff モードはヒストグラムの差分値、つまり隣り合うヒストグラム値どうしの絶対差のエントロピーを測定します。
11.81 epx
ピクセルアート向けに設計された EPX 拡大フィルタを適用します。
次のオプションを受け付けます。
n
拡大の倍率を設定します。2xEPX なら 2、3xEPX なら 3。既定は 3。
11.82 eq
明るさ、コントラスト、彩度、およびおおよそのガンマ調整を設定します。
このフィルタは次のオプションを受け付けます。
contrast
コントラストの式を設定します。値は -1000.0 から 1000.0 の範囲の浮動小数点値でなければなりません。既定値は "1"。
brightness
明るさの式を設定します。値は -1.0 から 1.0 の範囲の浮動小数点値でなければなりません。既定値は "0"。
saturation
彩度の式を設定します。値は 0.0 から 3.0 の範囲の浮動小数点でなければなりません。既定値は "1"。
gamma
ガンマの式を設定します。値は 0.1 から 10.0 の範囲の浮動小数点でなければなりません。既定値は "1"。
gamma_r
赤のガンマの式を設定します。値は 0.1 から 10.0 の範囲の浮動小数点でなければなりません。既定値は "1"。
gamma_g
緑のガンマの式を設定します。値は 0.1 から 10.0 の範囲の浮動小数点でなければなりません。既定値は "1"。
gamma_b
青のガンマの式を設定します。値は 0.1 から 10.0 の範囲の浮動小数点でなければなりません。既定値は "1"。
gamma_weight
ガンマの重みの式を設定します。高いガンマ値が明るい画像領域に及ぼす効果を弱めるために使えます。たとえば過度に増幅されてただ真っ白になってしまうのを防ぎます。値は 0.0 から 1.0 の範囲の浮動小数点でなければなりません。0.0 はガンマ補正を完全に切り、1.0 は補正を最大の強さのままにします。既定は "1"。
eval
明るさ、コントラスト、彩度、ガンマの式をいつ評価するかを設定します。
次の値を受け付けます。
‘init’
フィルタの初期化時、またはコマンドが処理されたときに一度だけ式を評価します。
‘frame’
入ってくるフレームごとに式を評価します。
既定値は ‘init’。
式は次のパラメータを受け付けます。
n
0 から始まる入力フレームのフレーム番号
pos
入力ファイル内の対応するパケットのバイト位置。不明な場合は NAN。非推奨につき使用しないでください。
r
入力映像のフレームレート。入力フレームレートが不明な場合は NAN
t
秒で表したタイムスタンプ。入力タイムスタンプが不明な場合は NAN
11.82.1 Commands
このフィルタは次のコマンドをサポートします。
contrast
コントラストの式を設定します。
brightness
明るさの式を設定します。
saturation
彩度の式を設定します。
gamma
ガンマの式を設定します。
gamma_r
gamma_r の式を設定します。
gamma_g
gamma_g の式を設定します。
gamma_b
gamma_b の式を設定します。
gamma_weight
gamma_weight の式を設定します。
コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.83 erosion
映像に収縮(erosion)効果を適用します。
このフィルタは画素を局所(3x3)の最小値で置き換えます。
次のオプションを受け付けます。
threshold0 threshold1 threshold2 threshold3
各プレーンの最大変化量を制限します。既定は 65535。0 にするとプレーンは変化しません。
coordinates
参照する画素を指定するフラグ。既定は 255、すなわち 8 つの画素すべてを使います。
フラグと局所 3x3 座標の対応は次のとおりです。
1 2 3 4 5 6 7 8
11.83.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.84 estdif
入力映像をデインターレースします("estdif" は "Edge Slope Tracing Deinterlacing Filter" の略)。
エッジ傾斜追跡アルゴリズムを使って欠けた行を補間する空間専用のフィルタです。次のパラメータを受け付けます。
mode
採用するインターレースモード。次の値のいずれかを受け付けます。
frame
各フレームにつき 1 フレームを出力します。
field
各フィールドにつき 1 フレームを出力します。
既定値は field。
parity
入力インターレース映像で想定する画像フィールドのパリティ。次の値のいずれかを受け付けます。
tff
トップフィールドが先と仮定します。
bff
ボトムフィールドが先と仮定します。
auto
フィールドパリティの自動検出を有効にします。
既定値は auto。インターレースが不明な場合、またはデコーダがこの情報をエクスポートしない場合は、トップフィールドが先と仮定します。
deint
どのフレームをデインターレースするかを指定します。次の値のいずれかを受け付けます。
all
すべてのフレームをデインターレースします。
interlaced
インターレースとマークされたフレームのみをデインターレースします。
既定値は all。
rslope
エッジ傾斜追跡の探索半径を指定します。既定値は 1。許容範囲は 1 から 15。
redge
最良エッジマッチングの探索半径を指定します。既定値は 2。許容範囲は 0 から 15。
ecost
エッジマッチングのエッジコストを指定します。既定値は 2。許容範囲は 0 から 50。
mcost
エッジマッチングの中間コストを指定します。既定値は 1。許容範囲は 0 から 50。
dcost
エッジマッチングの距離コストを指定します。既定値は 1。許容範囲は 0 から 50。
interp
使用する補間を指定します。既定は 4 点補間。次の値のいずれかを受け付けます。
2p
2 点補間。
4p
4 点補間。
6p
6 点補間。
11.84.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.85 exposure
映像ストリームの露出を調整します。
このフィルタは次のオプションを受け付けます。
exposure
露出補正を EV で設定します。許容範囲は -3.0 から 3.0 EV。既定値は 0 EV。
black
黒レベル補正を設定します。許容範囲は -1.0 から 1.0。既定値は 0。
11.85.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.86 extractplanes
入力映像ストリームからカラーチャンネル成分を抽出し、別々のグレースケール映像ストリームにします。
このフィルタは次のオプションを受け付けます。
planes
抽出するプレーンを設定します。
planes に指定できる値は次のとおりです。
‘y’ ‘u’ ‘v’ ‘a’ ‘r’ ‘g’ ‘b’
入力に存在しないプレーンを選ぶとエラーになります。つまり、r, g, b プレーンと y, u, v プレーンを同時に選択することはできません。
11.86.1 Examples
- 入力映像フレームから輝度、u、v のカラーチャンネル成分を抽出し、3 つのグレースケール出力にします:
ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
11.87 fade
入力映像にフェードイン/フェードアウト効果を適用します。
次のパラメータを受け付けます。
type, t
効果の種類は、フェードインなら "in"、フェードアウトなら "out" のいずれか。既定は in。
start_frame, s
フェード効果を適用し始めるフレームの番号を指定します。既定は 0。
nb_frames, n
フェード効果が続くフレーム数。フェードイン効果の終わりでは、出力映像は入力映像と同じ強度になります。フェードアウトの遷移の終わりでは、出力映像は選択した色で塗りつぶされます。既定は 25。
alpha
1 に設定すると、入力にアルファチャンネルが存在する場合、そのアルファチャンネルのみをフェードします。既定値は 0。
start_time, st
フェード効果を適用し始めるフレームのタイムスタンプ(秒)を指定します。start_frame と start_time の両方を指定した場合、フェードはどちらか遅い方で始まります。既定は 0。
duration, d
フェード効果が続く秒数。フェードイン効果の終わりでは出力映像は入力映像と同じ強度になり、フェードアウトの遷移の終わりでは出力映像は選択した色で塗りつぶされます。duration と nb_frames の両方を指定した場合は duration が使われる。既定は 0(既定では nb_frames が使われる)。
color, c
フェードの色を指定します。既定は "black"。
11.87.1 Examples
- 映像の最初の 30 フレームをフェードインします:
fade=in:0:30
上のコマンドは次と等価です:
fade=t=in:s=0:n=30
-
200 フレームの映像の最後の 45 フレームをフェードアウトします:
fade=out:155:45 fade=type=out:start_frame=155:nb_frames=45 -
1000 フレームの映像の最初の 25 フレームをフェードインし、最後の 25 フレームをフェードアウトします:
fade=in:0:25, fade=out:975:25 -
最初の 5 フレームを黄色にし、その後フレーム 5〜24 でフェードインします:
fade=in:5:20:color=yellow -
映像の最初の 25 フレームでアルファをフェードインします:
fade=in:0:25:alpha=1 -
最初の 5.5 秒を黒にし、その後 0.5 秒かけてフェードインします:
fade=t=in:st=5.5:d=0.5
11.88 feedback
フィードバック映像フィルタを適用します。
このフィルタは切り出した入力フレームを 2 番目の出力へ渡します。そこから他の映像フィルタでフィルタリングできます。フィルタが 2 番目の入力からフレームを受け取ると、そのフレームは 1 番目の入力からの元フレームの上に合成され、1 番目の出力へ渡されます。
典型的な使い方は、フレームの一部だけをフィルタリングすることです。
このフィルタは次のオプションを受け付けます。
x y
切り出しの左上位置を設定します。
w h
切り出しのサイズを設定します。
11.88.1 Examples
-
映像フレームの左上のサイズ 100x100 の矩形部分だけを gblur フィルタでぼかします。
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin] -
映像フレームの左上のサイズ 100x100 の部分に drawbox フィルタで黒い箱を描きます。
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin] -
映像フレームのサイズ 100x100 の矩形部分を pixelize フィルタでモザイク化します。
[in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
11.89 fftdnoiz
3D FFT(周波数領域でのフィルタリング)を使ってフレームのノイズを除去します。
このフィルタは次のオプションを受け付けます。
sigma
ノイズのシグマ定数を設定します。これでノイズ除去の強さが決まります。既定値は 1。許容範囲は 0 から 30。非常に高いシグマを低いオーバーラップで使うとブロックノイズが出ることがあります。
amount
ノイズ除去の量を設定します。既定では検出されたノイズをすべて低減します。既定値は 1。許容範囲は 0 から 1。
block
ブロックのサイズをピクセルで設定します。既定は 32、8 から 256 まで指定可能。
overlap
ブロックのオーバーラップを設定します。既定は 0.5。許容範囲は 0.2 から 0.8。
method
ノイズ除去の手法を設定します。既定は wiener、hard も指定できます。
prev
ノイズ除去に使う前方のフレーム数を設定します。既定では 0 に設定されます。
next
ノイズ除去に使う後方のフレーム数を設定します。既定では 0 に設定されます。
planes
フィルタリングするプレーンを設定します。既定ではアルファを除く利用可能なすべてがフィルタリングされます。
11.90 fftfilt
周波数領域のサンプルに任意の式を適用します。
dc_Y
画像の輝度プレーンの dc 値(ゲイン)を調整します。フィルタは 0 から 1000 の範囲の整数値を受け付けます。既定値は 0 に設定されます。
dc_U
画像の 1 番目のクロマプレーンの dc 値(ゲイン)を調整します。フィルタは 0 から 1000 の範囲の整数値を受け付けます。既定値は 0 に設定されます。
dc_V
画像の 2 番目のクロマプレーンの dc 値(ゲイン)を調整します。フィルタは 0 から 1000 の範囲の整数値を受け付けます。既定値は 0 に設定されます。
weight_Y
輝度プレーンの周波数領域の重みの式を設定します。
weight_U
1 番目のクロマプレーンの周波数領域の重みの式を設定します。
weight_V
2 番目のクロマプレーンの周波数領域の重みの式を設定します。
eval
式をいつ評価するかを設定します。
次の値を受け付けます。
‘init’
フィルタの初期化時に一度だけ式を評価します。
‘frame’
入ってくるフレームごとに式を評価します。
既定値は ‘init’。
このフィルタは次の変数を受け付けます。
X Y
現在のサンプルの座標。
W H
画像の幅と高さ。
N
入力フレームの番号。0 から始まります。
WS HS
水平方向と垂直方向の処理に使う FFT 配列のサイズ。
11.90.1 Examples
-
ハイパス:
fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)' -
ローパス:
fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)' -
シャープ化:
fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)' -
ぼかし:
fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11.91 field
ストライド演算を使ってインターレース画像から単一のフィールドを抽出し、CPU 時間の無駄を避けます。出力フレームは非インターレースとしてマークされます。
このフィルタは次のオプションを受け付けます。
type
トップフィールド(値が 0 または top)とボトムフィールド(値が 1 または bottom)のどちらを抽出するかを指定します。
11.92 fieldhint
ヒントファイルで番号として与えられた前後のフレームから、トップフィールドとボトムフィールドをコピーして新しいフレームを作成します。
hint
ヒントを含むファイルを設定します。絶対/相対のフレーム番号。
クリップ内の各フレームにつき 1 行が必要です。各行にはカンマで区切られた 2 つの数値が含まれ、任意で - または + を後ろに付けられます。各行に与える数値は、absolute モードでは [N-1,N+1](N は現在のフレーム番号)の範囲外、relative モードでは [-1, 1] の範囲外にできません。1 つ目の数値はどのフレームからトップフィールドを取るか、2 つ目の数値はどのフレームからボトムフィールドを取るかを表します。
任意で + を後ろに付けると出力フレームはインターレースとしてマークされ、- を付けるとプログレッシブとしてマークされ、どちらも付けないと入力フレームと同じようにマークされます。任意で t を後ろに付けると出力フレームはトップフィールドのみを使い、b の場合はボトムフィールドのみを使います。行が # または ; で始まる場合、その行はスキップされます。
mode
absolute、relative、pattern のいずれか。既定は absolute。pattern モードは relative モードと同じだが、ファイルの最後のエントリで、まだ処理すべきフレームが hint ファイルより多い場合は先頭に巻き戻します。
relative モードの hint ファイルの最初の数行の例:
0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
11.93 fieldmatch
逆テレシネのためのフィールドマッチングフィルタ。テレシネされたストリームからプログレッシブフレームを復元することを目的とします。このフィルタは重複フレームを削除しないため、完全な逆テレシネを実現するには、filtergraph 内で fieldmatch の後に decimate のような間引きフィルタを続ける必要があります。
フィールドマッチングと間引きを分離している主な理由は、両者の間にデインターレースフィルタをフォールバックとして挿入できるようにするためです。ソースにテレシネ部分と本物のインターレース部分が混在している場合、fieldmatch はインターレース部分のフィールドをマッチングできません。しかし残ったコーミングのあるフレームはインターレースとしてマークされるため、間引きの前に yadif などの後続フィルタでデインターレースできます。
各種設定オプションに加えて、fieldmatch は ppsrc オプションを通じてオプションの第2ストリームを受け取れます。有効にすると、フレームの復元はこの第2ストリームのフィールドとフレームに基づいて行われます。これにより、出力を可逆に保ったまま(フィールドが適切にマッチングされていることが前提)、フィルタの各種アルゴリズムを助けるために第1入力を前処理できます。一般には、フィールドを意識したデノイザや、明るさ/コントラストの調整が役立ちます。
このフィルタは TIVTC/TFM(AviSynth プロジェクト)および VIVTC/VFM(VapourSynth プロジェクト)と同じアルゴリズムを使用している点に注意してください。後者は TFM の軽量なクローンで、fieldmatch はそれをベースにしています。意味づけや使い方は非常に近いですが、一部の挙動やオプション名は異なることがあります。
decimate フィルタは現状、固定フレームレートの入力でのみ動作します。入力にテレシネ部分(30fps)と、24fps のような低いフレームレートのプログレッシブ部分が混在している場合は、次のフィルタチェインで必要な cfr ストリームを生成します: dejudder,fps=30000/1001,fieldmatch,decimate。
このフィルタは以下のオプションを受け付けます:
order
入力ストリームに想定するフィールド順序を指定します。指定できる値は次のとおりです:
‘auto’
パリティを自動検出します(FFmpeg の内部パリティ値を使用)。
‘bff’
ボトムフィールドが先と想定します。
‘tff’
トップフィールドが先と想定します。
ストリームが申告するパリティを信用しないほうがよい場合もある点に注意してください。
既定値は auto です。
mode
使用するマッチングモード(戦略)を設定します。pc モードは最も安全で、可能な場合は重複フレームによるカクつき(jerkiness)を生むリスクを冒しませんが、悪い編集点やブレンドされたフィールドがあると、本来よい一致が存在する場合でもコーミングのあるフレームを出力してしまうことがあります。一方、pcn_ub モードはカクつきを生むリスクが最も高いものの、よいフレームが存在すればほぼ必ず見つけ出します。その他の値はいずれも、カクつきや重複フレームを生むリスクと、悪い編集点・孤立フィールド・ブレンドフィールドなどがある区間でよい一致を見つける能力との点で、pc と pcn_ub の中間に位置します。
p/c/n/u/b の詳細は p/c/n/u/b meaning の節を参照してください。
指定できる値は次のとおりです:
‘pc’
2方向マッチング(p/c)
‘pc_n’
2方向マッチングを行い、まだコーミングがあれば3番目の一致を試す(p/c + n)
‘pc_u’
2方向マッチングを行い、まだコーミングがあれば(同じ順序で)3番目の一致を試す(p/c + u)
‘pc_n_ub’
2方向マッチングを行い、まだコーミングがあれば3番目の一致を試し、それでもまだコーミングがあれば4番目/5番目の一致を試す(p/c + n + u/b)
‘pcn’
3方向マッチング(p/c/n)
‘pcn_ub’
3方向マッチングを行い、元の3つの一致がすべてコーミングと判定された場合に4番目/5番目の一致を試す(p/c/n + u/b)
末尾の括弧は、order=tff(かつ field が auto または top)と想定したときに、そのモードで使用される一致を示します。
速度の点では、pc モードが圧倒的に最速で、pcn_ub が最も遅くなります。
既定値は pc_n です。
ppsrc
主入力ストリームを前処理済み入力としてマークし、フィールドを取り出すクリーンなソースとして第2入力ストリームを有効化します。詳細はフィルタ冒頭の説明を参照してください。VFM/TFM の clip2 機能に相当します。
既定値は 0(無効)です。
field
マッチング元とするフィールドを設定します。この設定でマッチングに失敗する経験がない限り、order と同じ値に設定することが推奨されます。状況によっては、マッチング元に使うフィールドを変えるとマッチング性能に大きく影響することがあります。指定できる値は次のとおりです:
‘auto’
自動(order と同じ値)。
‘bottom’
ボトムフィールドからマッチングします。
‘top’
トップフィールドからマッチングします。
既定値は auto です。
mchroma
マッチング比較時にクロマを含めるかどうかを設定します。ほとんどの場合は有効のままにしておくことが推奨されます。激しいレインボーなどのクロマの問題がクリップにある場合にのみ、これを 0 に設定すべきです。0 に設定すると、精度をいくらか犠牲にして処理を高速化するためにも使えます。
既定値は 1 です。
y0 y1
これらは、フィールドマッチングの判定から y0 と y1 の間の行を除外する除外帯を定義します。除外帯は、字幕やロゴ、その他マッチングを妨げる可能性があるものを無視するために使えます。y0 が開始走査線を、y1 が終了走査線を設定し、y0 と y1 の間(y0 と y1 を含む)のすべての行が無視されます。y0 と y1 を同じ値に設定するとこの機能は無効になります。y0 と y1 の既定値は 0 です。
scthresh
シーンチェンジ検出のしきい値を、輝度プレーン上の最大変化量に対する割合(パーセント)として設定します。良い値は [8.0, 14.0] の範囲です。シーンチェンジ検出が意味を持つのは combmatch=sc の場合のみです。scthresh の範囲は [0.0, 100.0] です。
既定値は 12.0 です。
combmatch
combatch が none 以外のとき、fieldmatch は最終的にどの一致を採用するか決める際に、各一致のコーミングスコアを考慮します。指定できる値は次のとおりです:
‘none’
コーミングスコアに基づく最終マッチングを行いません。
‘sc’
シーンチェンジが検出されたときのみコーミングスコアを使用します。
‘full’
常にコーミングスコアを使用します。
既定値は sc です。
combdbg
fieldmatch に、特定の一致についてコーミングのメトリクスを計算させて出力させます。この設定は TFM/VFM の用語では micout として知られています。指定できる値は次のとおりです:
‘none’
強制計算を行いません。
‘pcn’
p/c/n の計算を強制します。
‘pcnub’
p/c/n/u/b の計算を強制します。
既定値は none です。
cthresh
コーミングのあるフレームを検出するために使う、コーミングの面積しきい値です。本質的には、検出されるためにコーミングがどれだけ「強い」または「目立つ」必要があるかを制御します。値が大きいほどコーミングがより目立つ必要があり、値が小さいほどコーミングが目立たなく弱くても検出されえます。有効な設定は -1(すべてのピクセルがコーミングと検出される)から 255(どのピクセルもコーミングと検出されない)までです。これは基本的にピクセル差分値です。良い範囲は [8, 12] です。
既定値は 9 です。
chroma
コーミングのあるフレームの判定でクロマを考慮するかどうかを設定します。クロマを有効にするとコーミングのあるフレームの検出に支障が出るようなクロマの問題(レインボーなど)がソースにある場合にのみ、これを無効にしてください。実のところ、ソースにクロマのみのコーミングがある場合を除けば、chroma=0 を使うほうが通常は信頼性が高いです。
既定値は 0 です。
blockx blocky
コーミングのあるフレーム検出時に使うウィンドウの、それぞれ x 軸方向と y 軸方向のサイズを設定します。これは、フレームをコーミングありと判定するために combpel ピクセルがコーミングと検出される必要がある領域のサイズに関係します。詳細は combpel パラメータの説明を参照してください。指定できる値は、4 から 512 までの 2 の累乗の任意の数です。
既定値は 16 です。
combpel
フレームをコーミングありと検出するために、フレーム上の blocky×blockx サイズのいずれかのブロック内に存在する必要があるコーミングピクセルの数です。cthresh がコーミングがどれだけ「目立つ」必要があるかを制御するのに対し、この設定は、フレーム上の局所領域(blockx と blocky の設定で定義されるウィンドウ)にコーミングが「どれだけの量」存在する必要があるかを制御します。最小値は 0、最大値は blocky x blockx(この値ではフレームが決してコーミングありと検出されなくなる)です。この設定は TFM/VFM の用語では MI として知られています。
既定値は 80 です。
11.93.1 p/c/n/u/b meaning
11.93.1.1 p/c/n
次のテレシネされたストリームを想定する:
Top fields: 1 2 2 3 4
Bottom fields: 1 2 3 4 4
数字は、各フィールドが対応するプログレッシブフレームを表します。ここでは、最初の2フレームがプログレッシブ、3番目と4番目がコーミングあり、以下同様です。
fieldmatch がボトムからマッチング(field=bottom)するよう設定されている場合、この入力ストリームは次のように変換されます:
Input stream:
T 1 2 2 3 4
B 1 2 3 4 4 <-- matching reference
Matches: c c n n c
Output stream:
T 1 2 3 4 4
B 1 2 3 4 4
フィールドマッチングの結果として、一部のフレームが重複していることがわかります。完全な逆テレシネを行うには、この操作の後で間引きフィルタに頼る必要があります。例として decimate フィルタを参照してください。
同じ操作を、今度はトップフィールドからマッチング(field=top)すると次のようになります:
Input stream:
T 1 2 2 3 4 <-- matching reference
B 1 2 3 4 4
Matches: c c p p c
Output stream:
T 1 2 2 3 4
B 1 2 2 3 4
これらの例から、p、c、n の意味がわかります。基本的にこれらは、反対のパリティのフレームとフィールドを指します:
- p は前のフレームにおける反対パリティのフィールドにマッチします
- c は現在のフレームにおける反対パリティのフィールドにマッチします
- n は次のフレームにおける反対パリティのフィールドにマッチします
11.93.1.2 u/b
u と b のマッチングは、反対パリティのフラグからマッチングするという点で少し特殊です。以下の例では、2番目のフレーム(Top:2、bottom:2)を現在マッチングしていると想定します。一致に応じて、マッチした各フィールドの上下に「x」を配置します。
ボトムマッチング(field=bottom)の場合:
Match: c p n b u
x x x x x
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
x x x x x
Output frames:
2 1 2 2 2
2 2 2 1 3
トップマッチング(field=top)の場合:
Match: c p n b u
x x x x x
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
x x x x x
Output frames:
2 2 2 1 2
2 1 3 2 2
11.93.2 Examples
トップフィールドが先のテレシネされたストリームの単純な IVTC:
fieldmatch=order=tff:combmatch=none, decimate
コーミングがまだ残るフレームには yadif をフォールバックとして使う高度な IVTC:
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11.94 fieldorder
入力映像のフィールド順序を変換します。
以下のパラメータを受け付けます:
order
出力のフィールド順序です。有効な値は、トップフィールドが先を表す tff、またはボトムフィールドが先を表す bff です。
既定値は ‘tff’ です。
変換は、絵柄の内容を1行分だけ上または下にずらし、残った行を適切な絵柄の内容で埋めることで行われます。この方式は、ほとんどの放送用フィールド順序変換器と整合します。
入力映像がインターレースとしてフラグ付けされていない場合、またはすでに要求された出力フィールド順序としてフラグ付けされている場合、このフィルタは入ってくる映像を変更しません。
ボトムフィールドが先である PAL DV 素材との相互変換の際に非常に役立ちます。
例:
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11.95 fillborders
映像ストリームの寸法を変えずに、入力映像の縁を埋めます。映像の四辺にゴミが入っていることがあり、サイズをある数の倍数に保つために映像入力をクロップしたくない場合に使えます。
このフィルタは以下のオプションを受け付けます:
left
左の縁から埋めるピクセル数です。
right
右の縁から埋めるピクセル数です。
top
上の縁から埋めるピクセル数です。
bottom
下の縁から埋めるピクセル数です。
mode
埋めモードを設定します。
以下の値を受け付けます:
‘smear’
最も外側のピクセルを使ってピクセルを埋めます
‘mirror’
ミラーリング(half sample symmetric)を使ってピクセルを埋めます
‘fixed’
定数値でピクセルを埋めます
‘reflect’
反射(whole sample symmetric)を使ってピクセルを埋めます
‘wrap’
ラップを使ってピクセルを埋めます
‘fade’
ピクセルを定数値へフェードします
‘margins’
上下を、縁付近のピクセルの加重平均で埋めます
既定値は smear です。
color
fixed または fade モードでのピクセルの色を設定します。既定値は黒です。
11.95.1 Commands
このフィルタは、オプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.96 find_rect
入力映像内の矩形オブジェクトを探します。
探すオブジェクトは、object オプションで指定する gray8 画像として指定する必要があります。
一致しうるごとにスコアが計算されます。スコアが指定したしきい値に達すると、オブジェクトが見つかったとみなされます。
入力映像にオブジェクトのインスタンスが複数含まれる場合、フィルタはそのうちの1つしか見つけません。
オブジェクトが見つかると、一致したフレームに次のメタデータエントリが設定されます:
lavfi.rect.w
オブジェクトの幅
lavfi.rect.h
オブジェクトの高さ
lavfi.rect.x
オブジェクトの x 位置
lavfi.rect.y
オブジェクトの y 位置
lavfi.rect.score
見つかったオブジェクトの一致スコア
以下のオプションを受け付けます:
object
オブジェクト画像のファイルパスです。gray8 である必要があります。
threshold
検出しきい値です。0〜1 の範囲の小数で表します。
しきい値 0.01 は完全一致のみを意味し、しきい値 0.99 はほぼすべてが一致することを意味します。
既定値は 0.5 です。
mipmaps
ミップマップの数です。既定値は 3 です。
xmin, ymin, xmax, ymax
探索する矩形範囲を指定します。
discard
オブジェクトが検出されなかったフレームを破棄します。既定値は無効です。
11.96.1 Examples
-
ffmpegを使って、ある映像内の矩形オブジェクトを指定した画像で覆う:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv -
ffprobeを使って各フレーム内のオブジェクトの位置を求め、それをログファイルに書き出す:ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \ -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \ -of csv -o find_rect.csv
11.97 floodfill
同じピクセル成分の値を持つ領域を、別の値で塗りつぶします。
以下のオプションを受け付けます:
x
ピクセルの x 座標を設定します。
y
ピクセルの y 座標を設定します。
s0
ソース #0 成分の値を設定します。
s1
ソース #1 成分の値を設定します。
s2
ソース #2 成分の値を設定します。
s3
ソース #3 成分の値を設定します。
d0
出力先 #0 成分の値を設定します。
d1
出力先 #1 成分の値を設定します。
d2
出力先 #2 成分の値を設定します。
d3
出力先 #3 成分の値を設定します。
11.98 format
入力映像を、指定したいずれかの pixel format に変換します。Libavfilter は、次のフィルタへの入力として適したものを選ぼうとします。
以下のパラメータを受け付けます:
pix_fmts
「pix_fmts=yuv420p|monow|rgb24」のような、’|’ 区切りの pixel format 名のリストです。
color_spaces
「color_spaces=bt709|bt470bg|bt2020nc」のような、’|’ 区切りの色空間名のリストです。
color_ranges
「color_ranges=tv|pc」のような、’|’ 区切りのカラーレンジ名のリストです。
alpha_modes
「alpha_modes=straight|premultiplied」のような、’|’ 区切りのカラーレンジ名のリストです。
11.98.1 Examples
- 入力映像を yuv420p 形式に変換する
format=pix_fmts=yuv420p
リスト内のいずれかの形式に入力映像を変換する
format=pix_fmts=yuv420p|yuv444p|yuv410p
11.99 fps
必要に応じてフレームを複製または削除することで、映像を指定した固定フレームレートに変換します。
以下のパラメータを受け付けます:
fps
希望する出力フレームレートです。以下の定数を含む式を受け付けます:
‘source_fps’
入力のフレームレート
‘ntsc’
30000/1001 の NTSC フレームレート
‘pal’
25.0 の PAL フレームレート
‘film’
24.0 のフィルムフレームレート
‘ntsc_film’
24000/1001 の NTSC フィルムフレームレート
既定値は 25 です。
start_time
最初の PTS が指定した値(秒単位)であると想定します。これにより、ストリームの先頭でのパディング/トリミングが可能になります。既定では最初のフレームの想定 PTS について何も仮定しないため、パディングもトリミングも行われません。例えば、映像ストリームが音声ストリームより後に始まる場合に先頭を最初のフレームの複製で埋めるためや、PTS が負のフレームをトリミングするために、これを 0 に設定できます。
round
タイムスタンプ(PTS)の丸め方法です。
指定できる値は次のとおりです:
zero
0 に向かって丸めます
inf
0 から離れる向きに丸めます
down
-無限大に向かって丸めます
up
+無限大に向かって丸めます
near
最も近い値に丸めます
既定値は near です。
eof_action
最後のフレームを読み込む際に行う動作です。
指定できる値は次のとおりです:
round
他のフレームと同じタイムスタンプ丸め方法を使います。
pass
入力の長さにまだ達していない場合、最後のフレームをそのまま通します。
既定値は round です。
あるいは、オプションをフラットな文字列として指定することもできます: fps[:start_time[:round]]。
setpts フィルタも参照してください。
11.99.1 Examples
-
fps を 25 に設定する典型的な使い方:
fps=fps=25 -
略語を使い、丸め方法を最も近い値に丸めるよう設定して fps を 24 にする:
fps=fps=film:round=near
11.100 framepack
2つの異なる映像ストリームを立体視映像にパックし、対応コーデックに適切なメタデータを設定します。2つのビューは同じサイズとフレームレートである必要があり、短いほうの映像が終わった時点で処理が停止します。ビューのプロパティは scale や fps フィルタで手軽に調整できる点に注意してください。
以下のパラメータを受け付けます:
format
希望するパッキング形式です。サポートされる値は次のとおりです:
sbs
ビューを左右に並べます(既定値)。
tab
ビューを上下に並べます。
lines
ビューを行単位でパックします。
columns
ビューを列単位でパックします。
frameseq
ビューを時間方向にインターリーブします。
いくつかの例:
# 左右のビューをフレームシーケンシャル映像に変換する
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
# 入力と同じ出力解像度で、ビューをサイドバイサイド映像に変換する
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
11.101 framerate
ソースフレームから新たな出力フレームを補間して生成することで、フレームレートを変更します。
このフィルタはインターレース素材で正しく機能するようには設計されていません。インターレース素材のフレームレートを変更したい場合は、このフィルタの前でデインターレースし、後で再インターレースする必要があります。
受け付けるオプションの説明は次のとおりです。
fps
出力フレームレート(毎秒フレーム数)を指定します。このオプションは値単独でも指定できます。既定値は 50 です。
interp_start
出力フレームが2フレームの線形補間として生成される範囲の開始を指定します。範囲は [0-255]、既定値は 15 です。
interp_end
出力フレームが2フレームの線形補間として生成される範囲の終了を指定します。範囲は [0-255]、既定値は 240 です。
scene
新しいシーンと判断するシーンチェンジの検出レベルを、0 から 100 の値で指定します。低い値は現在のフレームが新しいシーンを導入する確率が低いことを表し、高い値は現在のフレームが新しいシーンである可能性が高いことを意味します。既定値は 8.2 です。
flags
フィルタ処理に影響するフラグを指定します。
flags に指定できる値は次のとおりです:
scene_change_detect, scd
scene オプションの値を使ってシーンチェンジ検出を有効にします。このフラグは既定で有効です。
11.102 frc_amf
ハードウェアアクセラレーションのために AMD Advanced Media Framework ライブラリが提供する Frame Rate Converter(FRC)を使って、フレームレートを2倍にします。
このフィルタは以下のオプションを受け付けます:
engine_type
シェーダーの実行に使うエンジンを指定します。
‘dx11’
DirectX 11。
‘dx12’
DirectX 12(既定値)。
enable
ブール値: FRC を有効/無効にします。動的な値で、フィルタを再初期化せずに実行時に変更できます。(既定値: 有効)。
fallback_mode
補間の信頼度が低い場合のフォールバック動作です。
‘duplicate’
フレームを複製します。
‘blend’
2つのフレームをブレンドします(既定値)。
indicator
ブール値: 映像の左上隅に FRC インジケータの四角を表示します(既定値: 無効)。
profile
階層的動き探索のレベルです。
‘low’
階層的動き探索のレベルが少なくなります。極端に低い解像度でのみ推奨です。
‘high’
1440p までの任意の解像度で推奨です。(既定値)
‘super’
階層的動き探索のレベルが多くなります。1440p 以上の解像度で推奨です。
mv_search_mode
動き探索のパフォーマンスモードです。
‘native’
ソース画像のフル解像度で動き探索を行います。
‘performance’
縮小したソース画像で動き探索を行います。よりよいパフォーマンスのために、APU やローエンド GPU で推奨です。
use_future_frame
ブール値: 将来のフレームへの依存を有効にします。レイテンシと引き換えに品質が向上します(既定値: 有効)。
11.103 framestep
N フレームごとに 1 フレームを選択します。
このフィルタは次のオプションを受け付けます。
step
step フレームごとにフレームを選択します。指定できるのは 0 より大きい正の整数です。既定値は 1。
11.104 freezedetect
静止した映像を検出します。
このフィルタは、入力映像の内容が指定した時間にわたってほとんど変化しないことを検出すると、メッセージをログに記録し、フレームのメタデータを設定します。映像の静止検出は、映像フレームの全コンポーネントの平均絶対差を算出し、それをノイズフロアと比較して判定します。
出力される時刻と継続時間は秒単位で表されます。lavfi.freezedetect.freeze_start メタデータキーは、タイムスタンプが検出継続時間に達するか超えた最初のフレームに設定され、静止が始まった最初のフレームのタイムスタンプを保持します。lavfi.freezedetect.freeze_duration と lavfi.freezedetect.freeze_end メタデータキーは、静止が終わった直後の最初のフレームに設定されます。
このフィルタは次のオプションを受け付けます。
noise, n
ノイズの許容量を設定します。dB 単位(指定値に "dB" を付加した場合)でも、0 から 1 の差分比率でも指定できます。既定値は -60dB、すなわち 0.001 です。
duration, d
通知するまでの静止継続時間を設定します(既定値は 2 秒)。
11.105 freezeframes
映像のフレームを静止させます。
このフィルタは、2 番目の入力のフレームを使って映像フレームを静止させます。
このフィルタは次のオプションを受け付けます。
first
静止を開始する先頭フレームの番号を設定します。
last
静止を終了する末尾フレームの番号を設定します。
replace
置き換えられるフレームの代わりに使う、2 番目の入力のフレーム番号を設定します。
11.106 frei0r
入力映像に frei0r エフェクトを適用します。
このフィルタのコンパイルを有効にするには、frei0r のヘッダをインストールし、FFmpeg を --enable-frei0r 付きで configure する必要があります。
このフィルタは次のパラメータを受け付けます。
filter_name
読み込む frei0r エフェクトの名前です。環境変数 FREI0R_PATH が定義されている場合、frei0r エフェクトは FREI0R_PATH にコロン区切りで列挙された各ディレクトリから検索されます。定義されていない場合は、標準の frei0r パスが次の順に検索されます。HOME/.frei0r-1/lib/、/usr/local/lib/frei0r-1/、/usr/lib/frei0r-1/。
filter_params
frei0r エフェクトに渡すパラメータの ’|’ 区切りリストです。
frei0r エフェクトのパラメータには、ブール値(値は "y" または "n")、double 値、色(R/G/B として指定。R、G、B は 0.0 以上 1.0 以下の浮動小数点数)、または ffmpeg-utils マニュアルの「Color」セクション で規定される色記述、位置(X/Y として指定。X と Y は浮動小数点数)、文字列のいずれかを指定できます。
パラメータの個数と型は読み込むエフェクトに依存します。エフェクトのパラメータを指定しなかった場合は既定値が設定されます。
11.106.1 例
-
distort0r エフェクトを適用し、最初の 2 つの double パラメータを設定します。
frei0r=filter_name=distort0r:filter_params=0.5|0.01 -
colordistance エフェクトを適用し、最初のパラメータとして色を渡します。
frei0r=colordistance:0.2/0.3/0.4 frei0r=colordistance:violet frei0r=colordistance:0x112233 -
perspective エフェクトを適用し、画像の左上と右上の位置を指定します。
frei0r=perspective:0.2/0.2|0.8/0.2
詳しくは http://frei0r.dyne.org を参照してください。
11.106.2 コマンド
このフィルタは filter_params オプションをコマンドとしてサポートします。
11.107 fspp
高速かつ簡易な後処理を適用します。spp の高速版です。
このフィルタは (I)DCT を水平方向と垂直方向のパスに分割します。簡易な後処理フィルタとは異なり、そのうちの一方はピクセルごとではなくブロックごとに 1 回だけ実行されます。これにより大幅な高速化が可能になります。
このフィルタは次のオプションを受け付けます。
quality
品質を設定します。このオプションは平均化のレベル数を定義します。4〜5 の範囲の整数を受け付けます。既定値は 4。
qp
量子化パラメータを一定値に固定します。0〜63 の範囲の整数を受け付けます。設定しない場合、フィルタは映像ストリームの QP を使用します(利用可能な場合)。
strength
フィルタの強度を設定します。-15〜32 の範囲の整数を受け付けます。値が小さいほどディテールは残りますがアーティファクトも増え、値が大きいほど画像は滑らかになりますがぼやけます。既定値は 0(PSNR 最適)。
use_bframe_qp
1 に設定すると B フレームの QP を使用します。このオプションを使うと、B フレームは QP が大きいことが多いためフリッカーが生じることがあります。既定値は 0(無効)。
11.108 fsync
ファイルから読み込んだ外部マッピングに従って映像フレームを同期します。
マップファイルで指定された各入力 PTS に対して、マップファイルで指定された出力フレーム列を再現するのに必要なだけフレームをドロップまたは生成します。
このフィルタは、fps フィルタによるフレームレート変換の出力フレームを再現し、それを ffmpeg のオプション -stats_mux_pre でマップファイルに記録しておき、対応するフレームに対してさらに処理(たとえば品質比較)を行いたい場合に便利です。
マップファイルの各行には、入力フレームごとに 3 つの項目を含める必要があります。入力 PTS(10 進数)、出力 PTS(10 進数)、出力 TIMEBASE(10 進数/10 進数)で、スペース区切りとします。このファイル形式は -stats_mux_pre_fmt="{ptsi} {pts} {tb}" の出力に対応します。
このフィルタは、マップファイルが入力 PTS の昇順にソートされていることを前提とします。
このフィルタは次のオプションを受け付けます。
file, f
使用するマップファイルのファイル名です。
例:
# 映像を 25 fps に変換し、このフィルタの既定形式で MAP_FILE ファイルを記録する
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT
# MAP_FILE を入力 PTS の昇順にソートする
sort -n MAP_FILE
# 上記の INPUT、OUTPUT、MAP_FILE を使い、INPUT と OUTPUT の対応するフレームを SSIM で比較する
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -
11.109 gblur
ガウシアンブラーフィルタを適用します。
このフィルタは次のオプションを受け付けます。
sigma
水平方向の sigma、すなわちガウシアンブラーの標準偏差を設定します。既定値は 0.5。
steps
ガウシアン近似のステップ数を設定します。既定値は 1。
planes
フィルタ処理するプレーンを設定します。既定ではすべてのプレーンが処理されます。
sigmaV
垂直方向の sigma を設定します。負の値の場合は sigma と同じになります。既定値は -1。
11.109.1 コマンド
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.110 geq
各ピクセルに汎用的な式を適用します。
このフィルタは次のオプションを受け付けます。
lum_expr, lum
輝度(luma)の式を設定します。
cb_expr, cb
青色差(chrominance blue)の式を設定します。
cr_expr, cr
赤色差(chrominance red)の式を設定します。
alpha_expr, a
アルファの式を設定します。
red_expr, r
赤の式を設定します。
green_expr, g
緑の式を設定します。
blue_expr, b
青の式を設定します。
色空間は指定したオプションに応じて選択されます。lum_expr、cb_expr、cr_expr のいずれかが指定された場合、フィルタは自動的に YCbCr 色空間を選択します。red_expr、green_expr、blue_expr のいずれかが指定された場合は RGB 色空間を選択します。
色差の式の一方が定義されていない場合は、もう一方にフォールバックします。アルファの式が指定されていない場合は不透明値に評価されます。色差の式がどちらも指定されていない場合は、輝度の式に評価されます。
式では次の変数と関数を使用できます。
N
フィルタ処理されたフレームの連番です。0 から始まります。
X Y
現在のサンプルの座標です。
W H
画像の幅と高さです。
SW SH
現在フィルタ処理しているプレーンに応じた幅と高さのスケールです。対応する輝度プレーンのピクセル数と現在のプレーンのピクセル数の比です。たとえば YUV4:2:0 では、輝度プレーンでは 1,1、クロマプレーンでは 0.5,0.5 となります。
T
現在のフレームの時刻(秒単位)です。
p(x, y)
現在のプレーンの位置 (x,y) にあるピクセルの値を返します。
lum(x, y)
輝度プレーンの位置 (x,y) にあるピクセルの値を返します。
cb(x, y)
青色差クロマプレーンの位置 (x,y) にあるピクセルの値を返します。そのプレーンが存在しない場合は 0 を返します。
cr(x, y)
赤色差クロマプレーンの位置 (x,y) にあるピクセルの値を返します。そのプレーンが存在しない場合は 0 を返します。
r(x, y) g(x, y) b(x, y)
赤/緑/青コンポーネントの位置 (x,y) にあるピクセルの値を返します。そのコンポーネントが存在しない場合は 0 を返します。
alpha(x, y)
アルファプレーンの位置 (x,y) にあるピクセルの値を返します。そのプレーンが存在しない場合は 0 を返します。
psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
(0,0) から (x,y) までの矩形内のサンプル値の合計です。これにより矩形内のサンプルの合計を求められます。sum を付けない関数を参照してください。
interpolation
補間方法を次から 1 つ設定します。
nearest, n bilinear, b
既定値は bilinear です。
関数において、x と y が領域外の場合、値は自動的に最も近い端にクリップされます。
このフィルタは複数のスレッドを使用できる点に注意してください。その場合、各スライスは独自の式の状態を持ちます。式が以前の状態に依存するため単一の式状態だけを使いたい場合は、フィルタのスレッド数を 1 に制限してください。
11.110.1 例
-
画像を水平方向に反転します。
geq=p(W-X\,Y) -
角度
PI/3、波長 100 ピクセルの 2 次元サイン波を生成します。geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128 -
凝った謎めいた動く光を生成します。
nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128 -
手早くエンボス効果を生成します。
format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2' -
ピクセル位置に応じて RGB コンポーネントを変更します。
geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)' -
入力と同じサイズの放射状グラデーションを作成します(vignette フィルタも参照)。
geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11.111 gradfun
8 ビットの色深度への切り捨てによって、ほぼ平坦な領域に時折生じるバンディングアーティファクトを補正します。バンドがあるべき位置のグラデーションを補間し、ディザリングを施します。
これは再生専用に設計されています。非可逆圧縮の前には使わないでください。圧縮はディザを失わせてバンドを復活させる傾向があるためです。
このフィルタは次のパラメータを受け付けます。
strength
フィルタが 1 つのピクセルを変更する最大量です。これはほぼ平坦な領域を検出するしきい値でもあります。指定できる値は .51〜64 で、既定値は 1.2 です。範囲外の値は有効範囲にクリップされます。
radius
グラデーションをフィットさせる近傍領域です。radius を大きくするとグラデーションは滑らかになりますが、ディテールのある領域付近のピクセルがフィルタで変更されにくくなります。指定できる値は 8〜32 で、既定値は 16 です。範囲外の値は有効範囲にクリップされます。
あるいは、オプションをフラットな文字列 strength[:radius] として指定することもできます。
11.111.1 例
-
strength を
3.5、radius を8にしてフィルタを適用します。gradfun=3.5:8 -
radius を指定し、strength を省略します(既定値にフォールバックします)。
gradfun=radius=8
11.112 graphmonitor
filtergraph のさまざまな統計を表示します。
このフィルタを使うと、filtergraph 全体をデバッグできます。特に、リンクがキュー済みフレームで満杯になる問題の調査に役立ちます。
このフィルタは次のオプションを受け付けます。
size, s
映像の出力サイズを設定します。既定値は hd720 です。
opacity, o
映像の不透明度を設定します。既定値は 0.9 です。指定できる範囲は 0 から 1 です。
mode, m
出力モードのフラグを設定します。
フラグに指定できる値は次のとおりです。
‘full’
何もフィルタリングしません。既定値です。
‘compact’
キュー済みフレームを持つフィルタのみを表示します。
‘nozero’
統計が 0 でないフィルタのみを表示します。
‘noeof’
EOF でない統計を持つフィルタのみを表示します。
‘nodisabled’
タイムライン上で有効になっているフィルタのみを表示します。
flags, f
映像にどの統計を表示するかを有効化するフラグを設定します。
フラグに指定できる値は次のとおりです。
‘none’
すべてのフラグをオフにします。
‘all’
すべてのフラグをオンにします。
‘queue’
各リンクでキュー済みのフレーム数を表示します。
‘frame_count_in’
フィルタから取り込まれたフレーム数を表示します。
‘frame_count_out’
フィルタから出力されたフレーム数を表示します。
‘frame_count_delta’
上記 2 つの値の差分(デルタ)のフレーム数を表示します。
‘pts’
現在フィルタ処理しているフレームの pts を表示します。
‘pts_delta’
現在のフレームと前のフレームの間の pts の差分を表示します。
‘time’
現在フィルタ処理しているフレームの時刻を表示します。
‘time_delta’
現在のフレームと前のフレームの間の時刻の差分を表示します。
‘timebase’
フィルタリンクのタイムベースを表示します。
‘format’
フィルタリンクで使用されている format を表示します。
‘size’
映像のサイズを表示します。フィルタリンクで音声が使われている場合は音声のチャンネル数を表示します。
‘rate’
映像のフレームレートを表示します。フィルタリンクで音声が使われている場合はサンプリングレートを表示します。
‘eof’
リンクの出力ステータスを表示します。
‘sample_count_in’
フィルタから取り込まれたサンプル数を表示します。
‘sample_count_out’
フィルタから出力されたサンプル数を表示します。
‘sample_count_delta’
上記 2 つの値の差分(デルタ)のサンプル数を表示します。
‘disabled’
タイムラインフィルタのステータスを表示します。
rate, r
出力ストリームの映像レートの上限を設定します。既定値は 25 です。これにより、出力映像のフレームレートがこの値を超えないことが保証されます。
11.113 grayworld
グレーワールド仮定に基づいて色補正を行う色恒常性フィルタです。
このアルゴリズムはリニアライト(線形光)を使うため、入力データは事前に線形化しておく必要があります(可能であれば正しくタグ付けしておきます)。
ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT
11.114 greyedge
グレーエッジアルゴリズムによってシーンの照明を推定し、それに応じてシーンの色を補正する色恒常性の変種フィルタです。
参照: https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf
このフィルタは次のオプションを受け付けます。
difford
シーンに適用する微分の階数です。[0,2] の範囲から選ぶ必要があり、既定値は 1 です。
minknorm
ミンコフスキー距離の計算に用いるミンコフスキーパラメータです。[0,20] の範囲から選ぶ必要があり、既定値は 1 です。0 に設定すると、ミンコフスキー距離を計算する代わりに最大値を取得します。
sigma
シーンに適用するガウシアンブラーの標準偏差です。[0,1024.0] の範囲から選ぶ必要があり、既定値は 1 です。difford が 0 より大きい場合、floor( sigma * break_off_sigma(3) ) は 0 になってはなりません。
11.114.1 例
-
グレーエッジ:
greyedge=difford=1:minknorm=5:sigma=2 -
マックスエッジ:
greyedge=difford=1:minknorm=0:sigma=2
11.115 guided
エッジを保持した平滑化や霞(ヘイズ)除去などのためにガイデッドフィルタを適用します。
このフィルタは次のオプションを受け付けます。
radius
ボックスの半径をピクセル単位で設定します。指定できる範囲は 1〜20 です。既定値は 3 です。
eps
正則化パラメータ(2 乗で扱う)を設定します。指定できる範囲は 0〜1 です。既定値は 0.01 です。
mode
フィルタのモードを設定します。basic または fast を指定できます。既定値は basic。
sub
fast モードでのサブサンプリング比を設定します。範囲は 2〜64 です。既定値は 4 です。basic モードではサブサンプリングは行われません。
guidance
ガイダンスモードを設定します。off または on を指定できます。既定値は off。off の場合は入力が 1 つ必要です。on の場合は同じ解像度・ピクセルフォーマットの入力が 2 つ必要で、2 番目の入力がガイダンスとして使われます。
planes
フィルタ処理するプレーンを設定します。既定では最初のプレーンのみです。
11.115.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.115.2 例
-
ガイデッドフィルタによるエッジ保持平滑化:
ffmpeg -i in.png -vf guided out.png -
ガイデッドフィルタによる霞除去、構造転写フィルタリング、ディテール強調です。ガイダンス画像の生成については論文 "Guided Image Filtering" を参照してください。参照: http://kaiminghe.com/publications/pami12guidedfilter.pdf。
ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
11.116 haldclut
映像ストリームに Hald CLUT を適用します。
1 番目の入力は処理対象の映像ストリームで、2 番目は Hald CLUT です。Hald CLUT の入力は単純な画像でも、完全な映像ストリームでもかまいません。
このフィルタは次のオプションを受け付けます。
clut
2 番目の入力ストリームのどの CLUT 映像フレームを処理するかを設定します。first または all を指定できます。既定値は all です。
shortest
最も短い入力が終了した時点で処理を強制終了します。既定値は 0。
repeatlast
ストリームの終了後も最後の CLUT を適用し続けます。0 を指定すると、CLUT の最後のフレームに達した後でフィルタが無効になります。既定値は 1。
haldclut には lut3d と同じ補間オプションもあります(両フィルタは内部実装を共有しています)。
このフィルタは framesync オプションもサポートします。
Hald CLUT の詳細は、Eskil Steenberg(Hald CLUT の考案者)のウェブサイト http://www.quelsolaar.com/technology/clut.html で確認できます。
11.116.1 コマンド
このフィルタは interp オプションをコマンドとしてサポートします。
11.116.2 ワークフロー例
11.116.2.1 Hald CLUT の映像ストリーム
恒等(identity)の Hald CLUT ストリームを生成し、さまざまなエフェクトで変化させます。
ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
注意: 可逆コーデックを必ず使ってください。
次に、これを haldclut で適当なストリームに適用します。
ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
Hald CLUT は最初の 10 秒(clut.nut の長さ)に適用され、その後は CLUT ストリームの最後の画像が mandelbrot ストリームの残りのフレームに適用されます。
11.116.2.2 プレビュー付き Hald CLUT
Hald CLUT は Level*Level*Level × Level*Level*Level ピクセルの正方形画像であることが想定されています。所与の Hald CLUT について、FFmpeg は画像の左上を起点とする最大の正方形を選択します。残りのパディングピクセル(下側または右側)は無視されます。この領域は Hald CLUT のプレビューを追加するのに使えます。
通常、次のように生成された Hald CLUT は haldclut フィルタでサポートされます。
ffmpeg -f lavfi -i haldclutsrc=8 -vf "
pad=iw+320 [padded_clut];
smptebars=s=320x256, split [a][b];
[padded_clut][a] overlay=W-320:h, curves=color_negative [main];
[main][b] overlay=W-320" -frames:v 1 clut.png
これには元画像と CLUT 効果のプレビューが含まれます。SMPTE カラーバーが右上に表示され、その下に同じカラーバーを色変更で処理したものが表示されます。
そして、この Hald CLUT の効果は次のように可視化できます。
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11.117 hflip
入力映像を水平方向に反転します。
たとえば、ffmpeg で入力映像を水平方向に反転するには次のようにします。
ffmpeg -i in.avi -vf "hflip" out.avi
11.118 histeq
このフィルタは、フレームごとにグローバルなカラーヒストグラム平坦化を適用します。
ピクセル強度の範囲が圧縮された映像を補正するのに使えます。このフィルタはピクセル強度を再分配し、強度範囲全体にわたって分布を均一化します。「自動調整するコントラストフィルタ」とみなすこともできます。このフィルタが有効なのは、劣化したソース映像や撮影状態の悪いソース映像を補正する場合のみです。
このフィルタは次のオプションを受け付けます。
strength
適用する平坦化の量を決めます。strength を小さくするほど、ピクセル強度の分布は入力フレームの分布に近づいていきます。値は [0,1] の範囲の浮動小数点数でなければならず、既定値は 0.200 です。
intensity
生成できる最大強度を設定し、出力値を適切にスケーリングします。strength は望みどおりに設定したうえで、白飛びを避けるために必要なら intensity を制限するとよいでしょう。値は [0,1] の範囲の浮動小数点数でなければならず、既定値は 0.210 です。
antibanding
アンチバンディングのレベルを設定します。有効にすると、フィルタはヒストグラムのバンディングを避けるため、出力ピクセルの輝度をわずかにランダムに変動させます。指定できる値は none、weak、strong です。既定値は none。
11.119 histogram
入力映像のカラー分布ヒストグラムを計算して描画します。
計算されるヒストグラムは、画像内のカラーコンポーネントの分布を表したものです。
標準のヒストグラムは画像内のカラーコンポーネントの分布を表示します。各カラーコンポーネントのカラーグラフを表示します。入力フォーマットに応じて、現在のフレームにおける Y、U、V、A または R、G、B コンポーネントの分布を示します。各グラフの下にはカラーコンポーネントのスケールメーターが表示されます。
このフィルタは次のオプションを受け付けます。
level_height
レベルの高さを設定します。既定値は 200。指定できる範囲は [50, 2048] です。
scale_height
カラースケールの高さを設定します。既定値は 12。指定できる範囲は [0, 40] です。
display_mode
表示モードを設定します。次の値を受け付けます。
‘stack’
各カラーコンポーネントのグラフを上下に並べて配置します。
‘parade’
各カラーコンポーネントのグラフを横に並べて配置します。
‘overlay’
parade と同じ情報を表示しますが、各カラーコンポーネントを表すグラフを直接重ね合わせて表示します。
既定値は stack。
levels_mode
モードを設定します。linear または logarithmic を指定できます。既定値は linear。
components
表示するカラーコンポーネントを設定します。既定値は 7。
fgopacity
前景の不透明度を設定します。既定値は 0.7。
bgopacity
背景の不透明度を設定します。既定値は 0.5。
colors_mode
カラーモードを設定します。次の値を受け付けます。
‘whiteonblack’ ‘blackonwhite’ ‘whiteongray’ ‘blackongray’ ‘coloronblack’ ‘coloronwhite’ ‘colorongray’ ‘blackoncolor’ ‘whiteoncolor’ ‘grayoncolor’
既定値は whiteonblack。
11.119.1 例
- ヒストグラムを計算して描画する:
ffplay -i input -vf histogram
11.120 hqdn3d
高精度・高品質な3次元ノイズ除去フィルタです。画像のノイズを減らして滑らかな画像を作り、静止画を本当に静止させることを狙いとしています。圧縮率の向上も期待できます。
以下の任意パラメータを受け付けます:
luma_spatial
空間方向の輝度強度を指定する、非負の浮動小数点数です。既定値は 4.0 です。
chroma_spatial
空間方向のクロマ強度を指定する、非負の浮動小数点数です。既定値は 3.0*luma_spatial/4.0 です。
luma_tmp
時間方向の輝度強度を指定する浮動小数点数です。既定値は 6.0*luma_spatial/4.0 です。
chroma_tmp
時間方向のクロマ強度を指定する浮動小数点数です。既定値は luma_tmp*chroma_spatial/luma_spatial です。
11.120.1 コマンド
このフィルタはオプションと同じものをコマンドとしてサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、現在の値が維持されます。
11.121 hwdownload
ハードウェアフレームをシステムメモリへダウンロードします。
入力はハードウェアフレームでなければならず、出力は非ハードウェア形式となります。出力ですべての形式がサポートされるとは限らないため、対応形式で出力するには、グラフ内の直後に format フィルタを追加で挿入する必要がある場合があります。
11.122 hwmap
ハードウェアフレームをシステムメモリまたは別のデバイスへマッピングします。
このフィルタには複数の動作モードがあり、どれが使われるかは入力と出力の形式によって決まります:
- ハードウェアフレーム入力、通常フレーム出力
入力フレームをシステムメモリへマッピングして出力へ渡します。後で元のハードウェアフレームが必要になった場合(たとえば、その一部に何か別のものをオーバーレイした後など)、hwmap フィルタを次のモードで再度使うことで取り戻せます。
- 通常フレーム入力、ハードウェアフレーム出力
入力が実際にはソフトウェアにマッピングされたハードウェアフレームであれば、それをアンマップします。つまり、元のハードウェアフレームを返します。
そうでない場合は、デバイスを指定する必要があります。そのデバイス上に出力用の新しいハードウェアサーフェスを作成し、それらを入力のソフトウェア形式へマッピングし直して、先行するフィルタにそのフレームを渡します。これは hwupload フィルタと同じように動作しますが、入力がすでに互換性のある形式である場合は余分なコピーを回避できることがあります。
- ハードウェアフレームの入力と出力
出力にはデバイスを指定する必要があり、直接指定するか derive_device オプションで指定します。入力と出力のデバイスは異なる種類で、かつ互換性がなければなりません。これが具体的に何を意味するかはシステム依存ですが、典型的には両者が同じ基盤となるハードウェアコンテキスト(たとえば同じグラフィックスカード)を指している必要がある、ということです。
入力フレームがもともと出力デバイス上で作成されたものであれば、アンマップして元のフレームを取り戻します。
そうでない場合は、フレームを出力デバイスへマッピングします。入力のフレームに対応する新しいハードウェアフレームを出力側に作成します。
以下の追加パラメータを受け付けます:
mode
フレームのマッピングモードを設定します。次の組み合わせのいずれかです:
read
マッピングされたフレームは読み取り可能であるべきです。
write
マッピングされたフレームは書き込み可能であるべきです。
overwrite
マッピングは常にフレーム全体を上書きします。
フレームの元の内容を読み込む必要がなくなるため、場合によっては性能が向上することがあります。
direct
マッピングはコピーを一切伴ってはなりません。
直接マッピングが不可能な場合や、それが予期しない特性を持つ場合には、フレームのコピーへの間接的なマッピングが作成されることがあります。このフラグを設定すると、マッピングが直接的であることが保証され、それが不可能な場合は失敗します。
指定しない場合の既定値は read+write です。
derive_device type
初期化時に指定されたデバイスを使うのではなく、入力フレームが存在するデバイスから type 型の新しいデバイスを導出します。
reverse
ハードウェアからハードウェアへのマッピングにおいて、逆方向にマッピングします。つまり、シンク側にフレームを作成し、それをソース側へマッピングし直します。一方向のマッピングが必要なのに、使用しているデバイスが反対方向しかサポートしていない場合に、これが必要になることがあります。
このオプションは危険です。先行するフィルタの出力に追加の制約がある場合、そのフィルタを未定義の方法で破壊する可能性があります。使用による影響を完全に理解せずに使ってはいけません。
11.123 hwupload
システムメモリのフレームをハードウェアサーフェスへアップロードします。
アップロード先のデバイスは、フィルタの初期化時に指定する必要があります。ffmpeg を使う場合は、-filter_hw_device オプションまたは derive_device オプションで適切なデバイスを選択します。入力と出力のデバイスは異なる種類で、かつ互換性がなければなりません。これが具体的に何を意味するかはシステム依存ですが、典型的には両者が同じ基盤となるハードウェアコンテキスト(たとえば同じグラフィックスカード)を指している必要がある、ということです。
以下の追加パラメータを受け付けます:
derive_device type
初期化時に指定されたデバイスを使うのではなく、入力フレームが存在するデバイスから type 型の新しいデバイスを導出します。
11.124 hwupload_cuda
システムメモリのフレームを CUDA デバイスへアップロードします。
以下の任意パラメータを受け付けます:
device
使用する CUDA デバイスの番号
11.125 hqx
ピクセルアート向けに設計された高品質な拡大フィルタを適用します。このフィルタはもともと Maxim Stepin によって作られました。
以下のオプションを受け付けます:
n
拡大率を設定します。hq2x には 2、hq3x には 3、hq4x には 4 を指定します。既定値は 3 です。
11.126 hstack
入力された複数の映像を水平方向に並べて重ねます。
すべてのストリームは同じ pixel format で、同じ高さでなければなりません。
このフィルタは、同じ出力を作るのに overlay と pad フィルタを使うよりも高速である点に注意してください。
このフィルタは以下のオプションを受け付けます:
inputs
入力ストリームの数を設定します。既定値は 2 です。
shortest
1 に設定すると、最も短い入力が終了した時点で出力を強制的に終了させます。既定値は 0 です。
11.127 hsvhold
特定の HSV 範囲をグレー値に変換します。
このフィルタは、オプションで設定した HSV 色と、映像ストリームで測定された色との色差を測定します。オプションに応じて、出力色をグレーにするかどうかを変更できます。
このフィルタは以下のオプションを受け付けます:
hue
色差の計算に使う色相(hue)の値を設定します。許容範囲は -360 から 360 です。既定値は 0 です。
sat
色差の計算に使う彩度(saturation)の値を設定します。許容範囲は -1 から 1 です。既定値は 0 です。
val
色差の計算に使う明度(value)の値を設定します。許容範囲は -1 から 1 です。既定値は 0 です。
similarity
キー色との類似度をパーセンテージで設定します。許容範囲は 0 から 1 です。既定値は 0.01 です。
0.00001 はキー色と完全に一致するものだけにマッチし、1.0 はすべてにマッチします。
blend
ブレンドのパーセンテージです。許容範囲は 0 から 1 です。既定値は 0 です。
0.0 では、ピクセルは完全にグレーになるか、まったくグレーにならないかのどちらかになります。
値を大きくするとグレーのピクセルが増え、ピクセルの色がキー色に似ているほどグレー度が高くなります。
11.128 hsvkey
特定の HSV 範囲を透明に変換します。
このフィルタは、オプションで設定した HSV 色と、映像ストリームで測定された色との色差を測定します。オプションに応じて、アルファチャンネルを追加することで出力色を透明に変更できます。
このフィルタは以下のオプションを受け付けます:
hue
色差の計算に使う色相(hue)の値を設定します。許容範囲は -360 から 360 です。既定値は 0 です。
sat
色差の計算に使う彩度(saturation)の値を設定します。許容範囲は -1 から 1 です。既定値は 0 です。
val
色差の計算に使う明度(value)の値を設定します。許容範囲は -1 から 1 です。既定値は 0 です。
similarity
キー色との類似度をパーセンテージで設定します。許容範囲は 0 から 1 です。既定値は 0.01 です。
0.00001 はキー色と完全に一致するものだけにマッチし、1.0 はすべてにマッチします。
blend
ブレンドのパーセンテージです。許容範囲は 0 から 1 です。既定値は 0 です。
0.0 では、ピクセルは完全に透明になるか、まったく透明にならないかのどちらかになります。
値を大きくすると半透明のピクセルが増え、ピクセルの色がキー色に似ているほど透明度が高くなります。
11.129 hue
入力の色相や彩度を変更します。
以下のパラメータを受け付けます:
h
色相の角度を度数で指定します。式を受け付け、既定値は "0" です。
s
彩度を [-10,10] の範囲で指定します。式を受け付け、既定値は "1" です。
H
色相の角度をラジアンで指定します。式を受け付け、既定値は "0" です。
b
明るさを [-10,10] の範囲で指定します。式を受け付け、既定値は "0" です。
h と H は排他的であり、同時に指定できません。
b、h、H、s の各オプションの値は、以下の定数を含む式です:
n
0 から始まる入力フレームのフレーム番号
pts
タイムベース単位で表した入力フレームの presentation timestamp
r
入力映像のフレームレート。入力のフレームレートが不明な場合は NAN
t
秒単位で表したタイムスタンプ。入力のタイムスタンプが不明な場合は NAN
tb
入力映像のタイムベース
11.129.1 例
-
色相を 90 度、彩度を 1.0 に設定する:
hue=h=90:s=1 -
同じ指定だが色相をラジアンで表現する:
hue=H=PI/2:s=1 -
色相を回転させ、彩度を 1 秒周期で 0 から 2 の間で振動させる:
hue="H=2*PI*t: s=sin(2*PI*t)+1" -
0 秒から始まる 3 秒間の彩度フェードイン効果を適用する:
hue="s=min(t/3\,1)"
フェードインの一般的な式は次のように書けます:
hue="s=min(0\, max((t-START)/DURATION\, 1))"
- 5 秒から始まる 3 秒間の彩度フェードアウト効果を適用する:
hue="s=max(0\, min(1\, (8-t)/3))"
フェードアウトの一般的な式は次のように書けます:
hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11.129.2 コマンド
このフィルタは以下のコマンドをサポートします:
b s h H
入力映像の色相や彩度、明るさを変更します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、現在の値が維持されます。
11.130 huesaturation
入力映像ストリームに色相・彩度・強度の調整を適用します。
このフィルタは RGB 色空間で動作します。
このフィルタは以下のオプションを受け付けます:
hue
適用する色相のシフト量を度数で設定します。既定値は 0 です。許容範囲は -180 から 180 です。
saturation
彩度のシフト量を設定します。既定値は 0 です。許容範囲は -1 から 1 です。
intensity
強度のシフト量を設定します。既定値は 0 です。許容範囲は -1 から 1 です。
colors
どの原色および補色を調整するかを設定します。このオプションは1つまたは複数の値を指定して設定します。一度に複数の色を選択できます。既定ではすべての色が選択されます。
‘r’
赤を調整します。
‘y’
黄を調整します。
‘g’
緑を調整します。
‘c’
シアンを調整します。
‘b’
青を調整します。
‘m’
マゼンタを調整します。
‘a’
すべての色を調整します。
strength
フィルタリングの強度を設定します。許容範囲は 0 から 100 です。既定値は 1 です。
rw, gw, bw
各 RGB 成分の重みを設定します。許容範囲は 0 から 1 です。既定値は 0.333、0.334、0.333 です。これらのオプションは彩度と明度の処理で使われます。
lightness
明度の保持を設定します。既定では無効です。色相を調整すると元の RGB 三つ組から明度が変わることがありますが、このオプションを有効にすると明度が同じ値に保たれます。
11.131 hysteresis
成分を接続することで、1つ目のストリームを2つ目のストリームへと成長させます。これにより、より堅牢なエッジマスクを構築できます。
このフィルタは以下のオプションを受け付けます:
planes
どのプレーンをビットマップとして処理するかを設定します。処理されないプレーンは1つ目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
threshold
フィルタリングに使うしきい値を設定します。ピクセル成分の値がこの値より高い場合、成分を接続するためのフィルタアルゴリズムが起動します。既定値は 0 です。
hysteresis フィルタは framesync オプションもサポートします。
11.132 iccdetect
埋め込まれた ICC プロファイル(存在する場合)から色空間を検出し、それに応じてフレームのタグを更新します。
このフィルタは以下のオプションを受け付けます:
force
true の場合、フレームの既存の色空間タグは ICC プロファイルから検出された値で常に上書きされます。そうでない場合、タグが unknown を含む場合にのみ値が割り当てられます。既定で有効です。
11.133 iccgen
ICC プロファイルを生成してフレームに添付します。
このフィルタは以下のオプションを受け付けます:
color_primaries color_trc
ICC プロファイルを生成する対象の色空間を設定します。既定値 auto は入力フレームのメタデータから値を推測し、適切な場合は BT.709/sRGB を既定とします。
指定可能な値の一覧については setparams フィルタを参照してください。ただし unknown はこのフィルタでは有効な値ではない点に注意してください。
force
true の場合、既存の ICC プロファイルを上書きすることになる場合でも ICC プロファイルが生成されます。既定で無効です。
11.134 identity
2つの入力映像間の同一性スコア(identity score)を求めます。
このフィルタは2つの入力映像を取ります。
このフィルタが正しく動作するには、両方の入力映像が同じ解像度と pixel format でなければなりません。また、両方の入力が同じフレーム数を持つことを前提とし、フレームは1つずつ比較されます。
得られた成分ごと、平均、最小、最大の同一性スコアはロギングシステムを通じて出力されます。
このフィルタは、計算した各フレームの同一性スコアをフレームのメタデータに格納します。
このフィルタは framesync オプションもサポートします。
下記の例では、処理対象の入力ファイル main.mpg が参照ファイル ref.mpg と比較されます。
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
11.135 idet
映像のインターレース方式を検出します。
このフィルタは、入力フレームがインターレースか、プログレッシブか、トップフィールドファーストか、ボトムフィールドファーストかを検出しようとします。また、隣接するフレーム間で繰り返されるフィールド(テレシネの兆候)の検出も試みます。
単一フレーム検出では、各フレームを分類する際に直前後のフレームのみを考慮します。複数フレーム検出では、それまでのフレームの分類履歴を取り込みます。
このフィルタは以下のメタデータ値をログに記録します:
single.current_frame
単一フレーム検出を用いて検出された現在のフレームの種類です。次のいずれか: “tff”(トップフィールドファースト)、“bff”(ボトムフィールドファースト)、“progressive”、“undetermined”
single.tff
単一フレーム検出を用いてトップフィールドファーストと検出されたフレームの累積数です。
multiple.tff
複数フレーム検出を用いてトップフィールドファーストと検出されたフレームの累積数です。
single.bff
単一フレーム検出を用いてボトムフィールドファーストと検出されたフレームの累積数です。
multiple.current_frame
複数フレーム検出を用いて検出された現在のフレームの種類です。次のいずれか: “tff”(トップフィールドファースト)、“bff”(ボトムフィールドファースト)、“progressive”、“undetermined”
multiple.bff
複数フレーム検出を用いてボトムフィールドファーストと検出されたフレームの累積数です。
single.progressive
単一フレーム検出を用いてプログレッシブと検出されたフレームの累積数です。
multiple.progressive
複数フレーム検出を用いてプログレッシブと検出されたフレームの累積数です。
single.undetermined
単一フレーム検出を用いて分類できなかったフレームの累積数です。
multiple.undetermined
複数フレーム検出を用いて分類できなかったフレームの累積数です。
repeated.current_frame
現在のフレームで前のフレームから繰り返されているフィールドです。次のいずれか: “neither”、“top”、“bottom”。
repeated.neither
フィールドの繰り返しがないフレームの累積数です。
repeated.top
前のフレームのトップフィールドからトップフィールドが繰り返されているフレームの累積数です。
repeated.bottom
前のフレームのボトムフィールドからボトムフィールドが繰り返されているフレームの累積数です。
このフィルタは以下のオプションを受け付けます:
intl_thres
インターレースのしきい値を設定します。
prog_thres
プログレッシブのしきい値を設定します。
rep_thres
繰り返しフィールド検出のしきい値です。
half_life
あるフレームの統計への寄与が半減するまでのフレーム数です(つまり、その分類に対して 0.5 しか寄与しなくなります)。既定値の 0 は、見たすべてのフレームに永久に 1.0 の重みを与えることを意味します。
analyze_interlaced_flag
これが 0 でない場合、idet は指定された数のフレームを用いてインターレースフラグが正確かどうかを判定します。その際、undetermined のフレームはカウントしません。フラグが正確だと判明した場合、それ以上の計算なしにそのフラグが使われます。不正確だと判明した場合、それ以上の計算なしにフラグがクリアされます。これにより、idet フィルタをインターレースフラグを整える低計算量な手段として挿入できます。
11.135.1 例
映像の最初の360フレームのフィールド順を、詳細に検査する:
ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -
idet フィルタは各フレームに解析メタデータを追加し、その後それは破棄されます。最後に、フィルタは統計を含む最終レポートも出力します。
11.136 il
フィールドのデインターリーブまたはインターリーブを行います。
このフィルタを使うと、インターレース画像のフィールドをデインターレースせずに処理できます。デインターリーブは入力フレームを2つのフィールド(いわゆるハーフピクチャ)に分割します。奇数行は出力画像の上半分へ、偶数行は下半分へ移されます。それらを独立に処理(フィルタリング)したうえで、再びインターリーブできます。
このフィルタは以下のオプションを受け付けます:
luma_mode, l chroma_mode, c alpha_mode, a
luma_mode、chroma_mode、alpha_mode で指定できる値は次のとおりです:
‘none’
何もしません。
‘deinterleave, d’
フィールドをデインターリーブし、一方を他方の上に配置します。
‘interleave, i’
フィールドをインターリーブします。デインターリーブの効果を元に戻します。
既定値は none です。
luma_swap, ls chroma_swap, cs alpha_swap, as
輝度/クロマ/アルファのフィールドを入れ替えます。偶数行と奇数行を交換します。既定値は 0 です。
11.136.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.137 inflate
映像に inflate(膨張)効果を適用します。
このフィルタは、ピクセルよりも高い値のみを考慮して、局所(3x3)の平均でピクセルを置き換えます。
以下のオプションを受け付けます:
threshold0 threshold1 threshold2 threshold3
各プレーンの最大変化量を制限します。既定値は 65535 です。0 にすると、そのプレーンは変更されません。
11.137.1 コマンド
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.138 interlace, interlace_vulkan
プログレッシブ素材から作るシンプルなインターレースフィルタです。奇数フレームの上側(または下側)の行と、偶数フレームの下側(または上側)の行をインターリーブし、フレームレートを半分にしつつ画像の高さを保ちます。
Original Original New Frame
Frame 'j' Frame 'j+1' (tff)
========== =========== ==================
Line 0 --------------------> Frame 'j' Line 0
Line 1 Line 1 ----> Frame 'j+1' Line 1
Line 2 ---------------------> Frame 'j' Line 2
Line 3 Line 3 ----> Frame 'j+1' Line 3
... ... ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
以下の任意パラメータを受け付けます:
scan
インターレースフレームを、プログレッシブフレームの偶数行(tff - 既定)と奇数行(bff)のどちらから取るかを決めます。
lowpass
ツイッタリングするインターレースを避け、モアレを減らすための垂直ローパスフィルタです。
‘0, off’
垂直ローパスフィルタを無効にします
‘1, linear’
線形フィルタを有効にします(既定)
‘2, complex’
複合フィルタを有効にします。ツイッタリングやモアレの低減はわずかに弱まりますが、ディテールと主観的な鮮鋭感をより良く保ちます。
11.139 kerndeint
Donald Graft の適応的カーネルデインターレースを適用して入力映像をデインターレースします。映像のインターレース部分に作用してプログレッシブフレームを生成します。
受け付けるパラメータの説明は次のとおりです。
thresh
ピクセル行を処理すべきかどうかを判定する際の、フィルタの許容度に影響するしきい値を設定します。[0,255] の範囲の整数でなければならず、既定値は 10 です。値が 0 だと、すべてのピクセルに処理が適用されます。
map
1 に設定すると、しきい値を超えるピクセルを白で塗ります。既定値は 0 です。
order
フィールドの順序を設定します。1 に設定するとフィールドを入れ替え、0 だとフィールドをそのままにします。既定値は 0 です。
sharp
1 に設定すると追加のシャープニングを有効にします。既定値は 0 です。
twoway
1 に設定すると双方向シャープニングを有効にします。既定値は 0 です。
11.139.1 例
-
既定値を適用する:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0 -
追加のシャープニングを有効にする:
kerndeint=sharp=1 -
処理したピクセルを白で塗る:
kerndeint=map=1
11.140 kirsch
入力映像ストリームに kirsch 演算子を適用します。
このフィルタは以下のオプションを受け付けます:
planes
どのプレーンを処理するかを設定します。処理されないプレーンはコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。
delta
フィルタ結果に加算する値を設定します。
11.140.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.141 lagfun
暗いピクセルをゆっくり更新します。
このフィルタは、短い閃光をより長く見せます。次のオプションを受け付けます。
decay
減衰の係数を設定します。既定値は .95 です。指定できる範囲は 0 から 1 です。
planes
フィルタ対象のプレーンを設定します。既定値は all です。指定できる範囲は 0 から 15 です。
11.141.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.142 lenscorrection
放射状のレンズ歪みを補正します。
このフィルタは、広角レンズの使用によって生じるような放射状の歪みを補正し、画像を再び正しい形状に戻すために使えます。適切なパラメータを見つけるには、たとえば opencv に含まれるようなツールを使うか、単純に試行錯誤するとよいでしょう。opencv を使う場合は、opencv のソースに含まれるキャリブレーションのサンプル(samples/cpp 配下)を使い、得られた行列から k1 と k2 の係数を取り出します。
実質的に同じフィルタが、KDE プロジェクトのオープンソースツールである Krita と Digikam でも利用できる点に留意してください。
レンズの誤差を補償するために使える vignette フィルタとは対照的に、このフィルタは画像の歪みを補正するのに対し、vignette は明るさの分布を補正します。そのため、場合によっては両方のフィルタを併用したくなることがありますが、その際は順序、すなわち vignette をレンズ補正の前に適用するか後に適用するかに注意する必要があります。
11.142.1 Options
このフィルタは次のオプションを受け付けます。
cx
画像の焦点(すなわち歪みの中心)の相対 x 座標です。この値の範囲は [0,1] で、画像幅に対する割合として表されます。既定値は 0.5 です。
cy
画像の焦点(すなわち歪みの中心)の相対 y 座標です。この値の範囲は [0,1] で、画像高さに対する割合として表されます。既定値は 0.5 です。
k1
2 次の補正項の係数です。この値の範囲は [-1,1] です。0 は補正なしを意味します。既定値は 0 です。
k2
4 次(2 次の二重)の補正項の係数です。この値の範囲は [-1,1] です。0 は補正なしを意味します。既定値は 0 です。
i
補間の種類を設定します。nearest または bilinear を指定できます。既定値は nearest です。
fc
マッピングされなかったピクセルの色を指定します。このオプションの構文については、ffmpeg-utils マニュアルの「Color」の節を参照してください。既定の色は black@0 です。
補正を生成する式は次のとおりです。
r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)
ここで r_0 は画像の対角線の半分、r_src と r_tgt はそれぞれソース画像とターゲット画像における焦点からの距離です。
11.142.2 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.143 lensfun
lensfun ライブラリ(http://lensfun.sourceforge.net/)を介してレンズ補正を適用します。
lensfun フィルタは、レンズ補正を適用するためにカメラのメーカー、カメラのモデル、レンズのモデルを必要とします。フィルタは lensfun データベースを読み込んでクエリし、データベース内の該当するカメラとレンズのエントリを探します。指定したオプションでこれらのエントリが見つかる限り、フィルタはフレームに補正を施せます。なお、不完全な文字列を与えた場合、フィルタは指定されたオプションで最も一致するものを選び、選ばれたカメラとレンズのモデルを出力します(ログレベル "info" で記録)。メーカー、カメラのモデル、レンズのモデルは必須なので、必ず指定してください。
利用可能なメーカーとモデルの一覧を取得するには、make と model のオプションの一方または両方を省略します。フィルタは完全な一覧をログレベル INFO で出力します。1 列目がメーカー、2 列目がモデルです。利用可能なレンズの一覧を取得するには、make と model に任意の値を設定し、lens_model オプションを省略します。フィルタはレンズの完全な一覧をログレベル INFO で出力します。一覧が出力されると ffmpeg ツールは終了します。
このフィルタは次のオプションを受け付けます。
make
カメラのメーカー(たとえば "Canon")です。このオプションは必須です。
model
カメラのモデル(たとえば "Canon EOS 100D")です。このオプションは必須です。
lens_model
レンズのモデル(たとえば "Canon EF-S 18-55mm f/3.5-5.6 IS STM")です。このオプションは必須です。
db_path
レンズデータベースフォルダへのフルパスです。設定しない場合、フィルタはライブラリのビルド時のインストールパスからデータベースを読み込もうとします。既定値は未設定です。
mode
適用する補正の種類です。次の値が有効なオプションです。
‘vignetting’
レンズの周辺光量落ち(ビネット)の補正を有効にします。
‘geometry’
レンズの幾何学的補正を有効にします。これが既定値です。
‘subpixel’
色収差の補正を有効にします。
‘vig_geo’
レンズの周辺光量落ちと幾何学的補正を有効にします。
‘vig_subpixel’
レンズの周辺光量落ちと色収差の補正を有効にします。
‘distortion’
レンズの幾何学的補正と色収差の補正の両方を有効にします。
‘all’
可能なすべての補正を有効にします。
focal_length
画像/映像の焦点距離(ズーム。映像では一定であることが期待されます)です。たとえば 18–55mm のレンズは焦点距離の範囲が [18–55] なので、そのレンズを使う場合はその範囲内の値を選ぶべきです。既定値は 18 です。
aperture
画像/映像の絞り値(映像では一定であることが期待されます)です。絞り値は周辺光量落ちの補正にのみ使われる点に留意してください。既定値は 3.5 です。
focus_distance
画像/映像の焦点距離(被写体までの距離。映像では一定であることが期待されます)です。これは周辺光量落ちにのみ使われ、補正処理にわずかに影響するだけである点に留意してください。不明な場合は既定値(1000)のままにしておきます。
scale
変換後に適用される拡大縮小係数です。補正後の映像は必ずしも矩形でなくなります。このパラメータは、得られた画像のうちどれだけを表示するかを制御します。値 0 は、出力画像にマッピングされない領域がほとんど、または全くなくなるように値が自動的に選ばれることを意味します。1.0 は追加の拡大縮小を行わないことを意味します。値を小さくすると補正後の画像がより多く見えるようになり、大きくすると出力中のマッピングされない領域を避けられます。
target_geometry
出力画像/映像のターゲットジオメトリです。次の値が有効なオプションです。
‘rectilinear (default)’ ‘fisheye’ ‘panoramic’ ‘equirectangular’ ‘fisheye_orthographic’ ‘fisheye_stereographic’ ‘fisheye_equisolid’ ‘fisheye_thoby’ reverse
画像補正の逆を適用します(歪みを補正するのではなく、歪みを加えます)。
interpolation
歪み補正時に使う補間の種類です。次の値が有効なオプションです。
‘nearest’ ‘linear (default)’ ‘lanczos’
11.143.1 Examples
-
メーカー "Canon"、カメラのモデル "Canon EOS 100D"、レンズのモデル "Canon EF-S 18-55mm f/3.5-5.6 IS STM" で、焦点距離 "18"、絞り値 "8.0" としてレンズ補正を適用します。
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov -
上と同じ補正を、映像の最初の 5 秒間だけに適用します。
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
11.144 lcevc
liblcevc_dec(https://github.com/v-novaltd/LCEVCdec)に基づく低複雑度エンハンスメント映像コーデック(Low Complexity Enhancement Video Codec)フィルタです。
11.145 libplacebo
libplacebo(https://code.videolan.org/videolan/libplacebo)に基づく、柔軟な GPU アクセラレーション処理フィルタです。
11.145.1 Options
このフィルタのオプションは次の節に分けられます。
11.145.1.1 Output mode
これらのオプションは全体的な出力モードを制御します。既定では、libplacebo はソースの測色(カラリメトリ)とサイズを可能な限り保持しようとしますが、ソースフレームに含まれる埋め込みフィルムグレイン、Dolby Vision メタデータ、アナモルフィックな SAR は適用します。
inputs
入力の数を設定します。idx 変数とともに使うことで、複数の入力を出力フレーム内に配置/合成できます。これにより、実質的に hstack や overlay などと同様の機能が有効になります。
w h
出力映像の寸法を表す式を設定します。既定値は iw と ih です。
scale フィルタと同じ式を使えます。
crop_x crop_y
入力のクロップ x/y を表す式を設定します。既定値は (iw-cw)/2 と (ih-ch)/2 です。
crop_w crop_h
入力のクロップ幅/高さを表す式を設定します。既定値は iw と ih です。
pos_x pos_y
出力の配置 x/y を表す式を設定します。既定値は (ow-pw)/2 と (oh-ph)/2 です。
pos_w pos_h
出力の配置幅/高さを表す式を設定します。既定値は ow と oh です。
rotate
入力フレームを指定した角度だけ時計回りに回転させます。
‘0, 360’ ‘90’ ‘180’ ‘270’ fps
出力フレームレートを設定します。60000/1001 のように有理数も指定できます。特別な文字列 none(既定値)を設定すると、入力のタイムスタンプがそのまま出力に渡されます。それ以外の場合は、frame_mixer オプションで定まる方法に従い、指定したターゲットフレームレートに合わせて入力映像のフレームが必要に応じて補間されます。
format
出力フォーマットの上書きを設定します。設定しない場合(既定値)、フレームはそれぞれの入力フレームと同じフォーマットで出力されます。それ以外の場合はフォーマット変換が行われます。
force_original_aspect_ratio force_divisible_by
同名の scale フィルタのオプションと同じように動作します。なお、force_divisible_by は fit_sense=constraint でも機能します。
reset_sar
有効にすると、出力フレームのピクセルアスペクト比は常に 1:1 になります。無効の場合(既定値)、アナモルフィック映像ソースなどによるものを含め、アスペクト比の不一致は出力のピクセルアスペクト比へそのまま引き継がれます。
normalize_sar
reset_sar と似ていますが、映像コンテンツを引き伸ばして新しい出力アスペクト比を埋めるのではなく、必要に応じてコンテンツをパディングまたはクロップします。fit_mode とは排他的です。既定では無効です。
pad_crop_ratio
入力のアスペクト比が出力のアスペクト比と一致せず、normalize_sar が有効な場合の、パディングとクロップの比率(0.0 から 1.0)を指定します。既定値の 0.0 は常にコンテンツを黒い縁でパディングし、1.0 は常にコンテンツの一部をクロップで切り落とします。中間の値も指定でき、その場合は両方の手法を混ぜたものになります。
fit_mode
定義済みのモードの一覧に従い、コンテンツのフィット方法を指定します。入力画像を(pos_x/y と pos_w/h で定義される)出力先のクロップ矩形内にどう配置するかを決めます。名称とその実装は CSS の ’object-fit’ プロパティに由来します。なお、このオプションは normalize_sar とは排他的です。既定値は fill です。有効な値は次のとおりです。
‘fill’
入力を出力矩形に引き伸ばし、アスペクト比の不一致は無視します。reset_sar も有効にしない限り、出力には正しいピクセルアスペクト比がタグ付けされたままになる点に留意してください。
‘contain’
アスペクト比を保ったまま、パディングして入力が出力内に収まるよう拡大縮小します。pad_crop_ratio を 0.0 に設定した normalize_sar と同等です。
‘cover’
アスペクト比を保ったまま、クロップして入力が出力を満たすよう拡大縮小します。pad_crop_ratio を 1.0 に設定した normalize_sar と同等です。
‘none, place’
入力を拡大縮小しません。入力は本来のサイズで出力矩形内に配置され、その結果としてパディングやクロップが追加で生じることがあります。
‘scale_down’
入力が出力内に収まるよう、必要なだけ縮小します。入力が出力より大きいかどうかに応じて、contain または none のいずれかと同等になります。
fit_sense
fit_mode を使っている場合、このオプションは指定した出力解像度に対してフィット方法をどう適用するかを制御します。force_original_aspect_ratio とは排他的です。有効な値は次のとおりです。
‘target’
計算された出力解像度を出力フレームの正確なサイズとして扱います。これが既定の動作です。
‘constraint’
計算された出力解像度はフィットモードを適用する際の基準サイズとして扱われ、コンテンツに合わせて必要に応じて実際のフレームサイズを拡大または縮小します。
fillcolor
normalize_sar の結果などで、出力画像に覆われない出力領域を塗りつぶす色を設定します。このオプションの一般的な構文については、ffmpeg-utils マニュアルの「Color」の節を参照してください。既定値は black@0 です。
corner_rounding
角を丸めてフレームを描画します。値は 0.0 から 1.0 の浮動小数で与え、完全な四角形から完全な円形までの丸めの相対的な度合いを示します。言い換えると、半径を短いほうの辺の長さの半分で割った値です。既定値は 0.0 です。
lut
色変換の一部として色に適用するカスタム LUT(Adobe .cube 形式)を指定します。正確な解釈は lut_type の値によって変わります。
lut_type
lut で指定した LUT に入出力される色値の解釈を制御します。有効な値は次のとおりです。
‘auto’
タグ付けされたメタデータから LUT の解釈を自動的に選び、それ以外の場合は ‘native’ にフォールバックします。(既定値)
‘native’
出力色空間への変換前に、ネイティブの RGB 色空間(非線形光)のままの生の画像内容に適用します。
‘normalized’
出力色空間への変換前に、正規化された RGB 画像内容に、線形光で適用します。
‘conversion’
画像の色空間から出力色空間への変換を完全に置き換えます。このような LUT が存在する場合は最も優先度が高く、ICC プロファイルや、トーンマッピング・出力測色に関するオプション(color_primaries、color_trc)を上書きします。
extra_opts
libplacebo の内部設定オプションを追加で渡します。これらは ’:’ で区切った key=value のペアのリストとして指定できます。次の例は、カスタムフィルタカーネル("EWA LanczosSharp")を設定し、それを使って入力画像の解像度を 2 倍にする方法を示しています。
-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
shader_cache
libplacebo がキャッシュしたシェーダオブジェクトの保存・読み込みに使うキャッシュディレクトリのファイルパスです。このキャッシュは自動的にはクリーンアップされません。パスがディレクトリ区切り文字で終わっていない場合、生成されるファイル名は実質的にパスの最後の構成要素を接頭辞として持ちます。すべてのディレクトリは事前に存在している必要があります。
-vf "libplacebo=shader_cache=/tmp/pl-shader-"
colorspace color_primaries color_trc range chroma_location
出力フレームを配信する際の色空間を設定します。既定値の auto は入力フレームと同じフォーマットでフレームを出力し、変更を行いません。それ以外の値では変換が行われます。
指定できる値の一覧については setparams フィルタを参照してください。
alpha_mode
出力フォーマットがアルファチャンネルを持つ場合に、望ましい出力アルファモードを選びます。指定できる値の一覧については setparams フィルタを参照してください。
apply_filmgrain
ソースフレームにフィルムグレイン(AV1 や H.274 など)が含まれていれば適用し、出力からは取り除きます。既定で有効です。
apply_dolbyvision
ソースフレームに Dolby Vision RPU メタデータが含まれていれば適用し、出力からは取り除きます。既定で有効です。なお、Dolby Vision は通常の入力フレームメタデータを上書きして、常に BT.2020+PQ で出力します。これらの値は、対応する各フレーム出力オプションの auto の値としても採用されます。
scale フィルタについて記載されている式の定数に加えて、crop_w、crop_h、crop_x、crop_y、pos_w、pos_h、pos_x、pos_y の各オプションでは次の定数も使えます。
in_idx, idx
現在アクティブな入力ストリームの(0 始まりの)数値インデックスです。
crop_w, cw crop_h, ch
crop_w と crop_h の計算後の値です。
pos_w, pw pos_h, ph
pos_w と pos_h の計算後の値です。
in_t, t
入力フレームのタイムスタンプ(秒)です。入力タイムスタンプが不明な場合は NAN です。
out_t, ot
入力フレームのタイムスタンプ(秒)です。入力タイムスタンプが不明な場合は NAN です。
n
入力フレーム番号で、0 から始まります。
11.145.1.2 Scaling
この節のオプションは、libplacebo がアップスケーリングと(必要なら)ダウンスケーリングをどう行うかを制御します。libplacebo は内部的に常に 4:4:4 のコンテンツを扱うため、yuv420p のようにサブサンプリングされたクロマフォーマットは、レンダリング処理の一環として必ずアップサンプリングおよびダウンサンプリングされる点に留意してください。つまり、ソースと出力先の解像度が同じであっても、拡大縮小が行われることがあります。
upscaler downscaler
アップスケーリングとダウンスケーリングに使うフィルタカーネルを設定します。それぞれの既定値は spline36 と mitchell です。指定できる値の完全な一覧を見るには、これらのオプションに help を渡します。主な値は次のとおりです。
‘none’
GPU 組み込みのテクスチャサンプリング(通常はバイリニア)を強制的に使います。非常に高速ですが品質は低く、特にダウンスケーリングで顕著です。
‘bilinear’
バイリニア補間です。GPU では一般にコストなしで行えますが、エイリアシングを招くような場合は例外です。高速ですが低品質です。
‘nearest’
最近傍補間です。シャープですが非常にエイリアシングが目立ちます。
‘oversample’
見た目は最近傍補間に近いものの、ピクセルアスペクト比を保とうとするアルゴリズムです。芸術的な見た目の歪みが最小限になるため、ピクセルアートに適しています。
‘lanczos’
標準的な sinc-sinc 補間カーネルです。
‘spline36’
lanczos の 3 次スプライン近似です。性能に差はありませんが、リンギングがごくわずかに少なくなります。
‘ewa_lanczos’
jinc-jinc カーネルに基づく、楕円加重平均(EWA)版の lanczos です。単に "Jinc scaling" とも広く呼ばれます。低速ですが非常に高品質です。
‘gaussian’
ガウスカーネルです。数学的に理想的な性質を持ちますが、主観的には非常にぼやけて見えます。
‘mitchell’
Mitchell と Netravali が推奨するパラメータを用いた 3 次 BC スプラインです。リンギングがごくわずかです。
frame_mixer
フレームを時間方向に混ぜる際に使うカーネルを制御します。既定値は none で、フレーム混合を無効にします。指定できる値の完全な一覧を見るには、このオプションに help を渡します。主な値は次のとおりです。
‘none’
フレーム混合を無効にし、「最近傍」のセマンティクスと同等の結果を与えます。
‘oversample’
入力映像をオーバーサンプリングして「スムーズモーション」型の効果を作ります。出力フレームがちょうど 2 つの映像フレームの境目に当たる場合、相対的な重なりに応じて混合されます。元の主観的な見た目を保ちたい場合に推奨されるオプションです。
‘mitchell_clamp’
複数のフレームを滑らかに補間する大きめのフィルタカーネルで、リンギングなどのアーティファクトを可能な限り排除するよう設計されています。視覚的な滑らかさを最大化したい場合に推奨されるオプションです。
‘linear’
フレーム間の線形ブレンド/フェードです。特にスライドショーなどを構成する際に役立ちます。
antiringing
アンチリンギング(EWA でないフィルタ向け)を有効にします。値(0.0 から 1.0)はアンチリンギングアルゴリズムの強さを設定します。高く設定しすぎるとエイリアシングが増えることがあります。既定では無効です。
sigmoid
アップスケーリング中のシグモイド圧縮を有効にします。リンギングをわずかに軽減します。既定で有効です。
11.145.1.3 Deinterlacing
フレームがインターレースとしてタグ付けされている場合はデインターレースが自動的にサポートされますが、デインターレースアルゴリズムを選ばない限りフレームはデインターレースされません。
deinterlace
使うデインターレースアルゴリズムです。
‘weave’
デインターレースを行わず、フィールドを織り合わせて 1 つのフレームにまとめます。これが既定値です。
‘bob’
単純な bob デインターレースで、各フィールドの行を単に 2 回繰り返します。
‘yadif’
Yet another deinterlacing filter です。詳細は yadif フィルタを参照してください。
‘bwdif’
Bob weaver デインターレースフィルタです。詳細は bwdif フィルタを参照してください。
skip_spatial_check
yadif デインターレースを使う際に、空間的なデインターレースのチェックをスキップします。
send_fields
フレームごとではなく、フィールドごとに 1 フレームを出力します。なお、これは入力にインターレースフレームが含まれていなくても、タグ付けされる出力フレームレートを常に 2 倍にします。既定では無効です。
11.145.1.4 Debanding
libplacebo には、バンディングやブロッキングの多くの一般的な原因に対抗するのが得意な、組み込みのデバンディングフィルタが付属しています。品質を求める場合は、これを有効にすることを強く推奨します。
deband
(高速な)デバンディングアルゴリズムを有効にします。既定では無効です。
deband_iterations
デバンディングアルゴリズムのデバンド反復回数です。各反復は半径を段階的に大きく(しきい値を小さく)して行われます。推奨値は 1 から 4 の範囲です。既定値は 1 です。
deband_threshold
デバンディングフィルタの強さです。数値が大きいほどデバンディングが積極的になります。既定値は 4.0 です。
deband_radius
デバンディングフィルタの半径です。半径が大きいほどゆるやかなグラデーションに適し、小さいほど急なグラデーションに適します。既定値は 16.0 です。
deband_grain
追加で加える出力グレインの量です。不完全さを隠すのに役立ちます。既定値は 6.0 です。
11.145.1.5 Color adjustment
主観的な色調整のコントロール群です。あまり厳密ではないため、正確な効果は入力の原色と色空間に応じて多少変わります。
brightness
明るさのブースト(-1.0 から 1.0)です。既定値は 0.0 です。
contrast
コントラストのゲイン(0.0 から 16.0)です。既定値は 1.0 です。
saturation
彩度のゲイン(0.0 から 16.0)です。既定値は 1.0 です。
hue
ラジアン単位の色相シフト(-3.14 から 3.14)です。既定値は 0.0 です。これは UV の部分ベクトルを回転させ、RGB 入力には既定で BT.709 の係数を使います。
gamma
ガンマ調整(0.0 から 16.0)です。既定値は 1.0 です。
temperature
色温度の調整です。値を下げると出力が暖色寄り/赤寄りになり、下限は 1667 です。値を上げると出力が寒色寄り/青寄りになり、上限は 25000 です。既定値は 6500(ニュートラルな白)です。
cones
色覚異常のシミュレーションに使う錐体モデルです。l、m、s の任意の組み合わせを受け付けます。いくつか例を挙げます。
‘m’
第二色弱/第二色盲(人口の 3%〜4% が該当)
‘l’
第一色弱/第一色盲(人口の 1%〜2% が該当)
‘l+m’
全色盲(非常にまれ)
‘l+m+s’
杆体一色覚(昼間視の完全な喪失。極めてまれ)
cone-strength
cones で指定した錐体に対するゲイン係数(0.0 から 10.0)です。値 1.0 は色覚に変化を与えません。値 0.0(既定値)は、それらの錐体の完全な喪失をシミュレートします。1.0 を超える値は錐体間の差を誇張し、低下した色覚を補うのに役立つ場合があります。
11.145.1.6 Peak detection
静的な HDR10 メタデータしか持たない(あるいは一切タグ付けされていない)ソースに対処するため、libplacebo は独自の内部フレーム解析用コンピュートシェーダを使ってソースフレームを解析し、トーンマッピング関数をリアルタイムに適応させます。これが遅すぎる場合や、フレーム単位で完全に再現可能な結果が必要な場合は、この機能をオフにすることを推奨します。
peak_detect
HDR ピーク検出を有効にします。静的な MaxCLL/MaxFALL 値を無視し、入力からの動的検出を優先します。なお、検出された値は出力フレームに書き戻されず、内部のトーンマッピング処理を導くためだけに使われます。既定で有効です。
smoothing_period
ピーク検出の平滑化期間(0.0 から 1000.0)です。値が大きいほど、ピーク検出が入力の変化に対して鈍くなります。既定値は 20.0 です。
scene_threshold_low scene_threshold_high
シーンチェンジ検出の下限と上限のしきい値です。0.0 から 100.0 の対数スケールで表されます。既定値はそれぞれ 1.0 と 3.0 です。どちらかを負の値にすると、この機能は無効になります。
percentile
トーンマッピングのソースピークとして、フレーム輝度ヒストグラムのどのパーセンタイルを使うかを指定します。既定値は 99.995 というかなり保守的な値です。これを 100.0 に設定するとフレームヒストグラムの計測が無効になり、代わりにトーンマッピングに真のピーク輝度を使います。
11.145.1.7 Tone mapping
この節のオプションは、広色域や HDR コンテンツとの不一致を扱う際に libplacebo がトーンマッピングと色域マッピングをどう行うかを制御します。一般に libplacebo は、最良の結果を出すために、正確なソースのタグ付けとマスタリングディスプレイの色域情報に依存します。
gamut_mode
測色的な色域マッピングの結果として生じる、色域外の色をどう扱うかを設定します。
‘clip’
何もせず、範囲外の色を単に RGB の体積へクリップします。低品質ですが非常に高速です。
‘perceptual’
色を知覚的に色域の体積へソフトクリップします。これが既定値です。
‘relative’
相対測色のハードクリップです。perceptual と似ていますが、ソフトな膝(ニー)がありません。
‘saturation’
彩度マッピングで、原色を RGB 空間内の原色へ直接マッピングします。明るく彩度の高い表示が望まれる人工的なコンピュータグラフィックス以外には推奨されません。
‘absolute’
絶対測色のハードクリップです。白色点の調整を行いません。
‘desaturate’
色域外の色を、輝度を保ちつつ白へ向けてハードに脱色します。明るいオブジェクトの見た目を歪めがちです。
‘darken’
コンテンツの明るさを線形に下げて彩度の高いディテールを保ち、その後で残った色域外の色をクリップします。
‘warn’
色域外のピクセルを(反転/マーキングして)強調表示します。
‘linear’
画像全体の彩度を線形に下げ、ターゲットの色の体積内に収まるようにします。適切なマスタリングメタデータのない BT.2020 ソースにこれを使うと過度な脱色を招くため、注意してください。
tonemapping
使うトーンマッピングアルゴリズムです。利用可能な値は次のとおりです。
‘auto’
内部のヒューリスティックに基づく自動選択です。これが既定値です。
‘clip’
トーンマッピングを行わず、範囲外の色を単にクリップします。範囲内の色には完璧な色精度を保ちますが、範囲外の情報は完全に失われます。黒点適応は一切行いません。設定はできません。
‘st2094-40’
SMPTE ST 2094-40 Annex B の EETF で、HDR10+ の動的メタデータのベジェ曲線を適用してトーンマッピングを行います。使われる OOTF は、目標とするディスプレイのピーク輝度と実際のピーク輝度の比に基づいて調整されます。
‘st2094-10’
SMPTE ST 2094-10 Annex B.2 の EETF で、最大/最小に加えて入力信号の平均輝度を考慮します。設定可能な contrast パラメータは線形出力区間の傾きに影響し、コントラストを増減させない 1.0 が既定値です。なお、これには現在のところ Annex B.3 で定義されている主観的なゲイン/オフセット/ガンマのコントロールは含まれていません。
‘bt.2390’
ITU-R Report BT.2390 の EETF で、線形区間を持つエルミートスプラインのロールオフです。膝(ニー)点のオフセットを設定できます。なお、このパラメータの既定値は、ITU-R 仕様の値 0.5 ではなく 1.0 です。
‘bt.2446a’
ITU-R Report BT.2446 の方式 A の EETF です。よくマスタリングされた HDR ソース向けに設計されています。順方向と逆方向の両方のトーンマッピングに使えます。設定はできません。
‘spline’
単一のピボット点で接続された 2 つの多項式から成る単純なスプラインです。パラメータは(PQ 空間での)ピボット点を与え、既定値は 0.30 です。順方向と逆方向の両方のトーンマッピングに使えます。
‘reinhard’
単純な非線形のグローバルトーンマッピングアルゴリズムです。パラメータはディスプレイピークにおける局所コントラスト係数を指定します。本質的には、パラメータ 0.5 は、リファレンス白がクリップ時の約半分の明るさになることを意味します。既定値は 0.5 で、この関数の最も単純な定式化になります。
‘mobius’
reinhard トーンマッピングアルゴリズムを一般化し、黒近傍に追加の線形傾斜を持たせたものです。トーンマッピングのパラメータは、線形区間と非線形区間の間のトレードオフを示します。本質的には、あるパラメータ x に対し、x 未満のすべての色値は線形にマッピングされ、それより大きい値は非線形にトーンマッピングされます。1.0 に近い値ではこの曲線が clip のように振る舞い、0.0 に近い値では reinhard のように振る舞います。既定値は 0.3 で、測色精度と色域外ディテールの保持のバランスが良好です。
‘hable’
John Hable が Uncharted 2 のために開発した、区分的でフィルミックなトーンマッピングアルゴリズムで、Kodak が使っていた類似のトーンマッピングアルゴリズムに着想を得ています。HDR レンダリングを伴うゲームでの使用により広まりました。暗部と明部のディテールを非常によく保ちますが、平均的な明るさをかなり大きく変えてしまうという欠点があります。これはパラメータ 0.24 の reinhard にいくぶん似ています。
‘gamma’
ソースとターゲットの色空間の間を変換するためにガンマ(べき乗)関数を当てはめ、実質的に 2 つのほぼ線形な区間を結ぶ知覚的なハードニーを生み出します。あらゆるスケールのディテールをかなり正確に保ちますが、画像が彩度の低い、くすんだ見た目になることがあります。パラメータはカットオフ点として使われ、既定値は 0.5 です。
‘linear’
入力範囲を出力範囲へ、PQ 空間で線形に引き伸ばします。すべてのディテールを正確に保ちますが、平均的な明るさが大きく変わります。通常のトーンマッピングに加えて、逆トーンマッピングにも使えます。パラメータは追加の線形ゲイン係数として使えます(既定値は 1.0)。
tonemapping_param
調整可能なトーンマッピング関数において、このパラメータで曲線の挙動を微調整できます。tonemapping のドキュメントを参照してください。既定値の 0.0 は、曲線が推奨する既定設定に置き換えられます。
inverse_tonemapping
有効にすると、このフィルタは SDR 信号を引き伸ばして HDR 出力の色の体積を埋めようともします。既定では無効です。
tonemapping_lut_size
トーンマッピング LUT のサイズ(2 から 1024)です。既定値は 256 です。なお、この数値は peak_detect と組み合わせると 2 乗されます。
contrast_recovery
コントラスト回復の強さです。0.0 を超える値に設定すると、ソース画像が高周波成分と低周波成分に分割され、高周波画像の一部がトーンマッピング後の出力に加え戻されます。一部の HDR ソースでは過度なリンギングアーティファクトを生じることがありますが、トーンマッピング後の画像に残る主観的なシャープさやディテールを改善できます。既定値は 0.30 です。
contrast_smoothness
コントラスト回復のローパスカーネルサイズです。既定値は 3.5 です。これを増減させると見た目が大きく変わります。contrast_recovery が無効な場合は効果がありません。
11.145.1.8 Dithering
既定では、libplacebo は必要に応じて常にディザリングを行います。これには 16 ビット未満の精度の整数フォーマットへの描画も含まれます。これは常に有効にしておくことを推奨します。無効にすると、debanding フィルタを有効にしていても、出力に目に見えるバンディングが生じるおそれがあるためです。最大限の性能が必要な場合は、ディザリングを無効にする代わりに ordered_fixed を使ってください。
dithering
使用するディザリング方式。次の値を受け付けます。
‘none’
ディザリングを完全に無効にします。目に見えるバンディングが生じることがあります。
‘blue’
擬似的なブルーノイズでディザリングします。これが既定値です。
‘ordered’
調整可能な順序付きディザパターン。
‘ordered_fixed’
固定サイズ 6 の、より高速な順序付きディザ。テクスチャ不要。
‘white’
ホワイトノイズでディザリングします。テクスチャ不要。
dither_lut_size
ディザ LUT のサイズ。1 から 8 までの 2 を底とする対数で指定します。既定値は 6 で、LUT サイズ 64x64 に相当します。
dither_temporal
時間方向のディザリングを有効にします。既定では無効です。
11.145.1.9 Custom shaders
libplacebo は、mpv の .hook GLSL 構文に基づくカスタムシェーダを多数サポートしています。そうしたシェーダ集はこちらにあります: https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders
mpv のシェーダフォーマットの完全な説明は本節の範囲を超えますが、概要はこちらで参照できます: https://mpv.io/manual/master/#options-glsl-shader
custom_shader_path
実行時に読み込むカスタムシェーダファイルへのパスを指定します。
custom_shader_bin
カスタムシェーダ全体を生の文字列として指定します。
11.145.1.10 Debugging / performance
本節のオプションはすべて既定で無効です。品質を犠牲にして性能を限界まで引き出そうとする際に役立つことがあります。
skip_aa
ダウンスケール時のアンチエイリアスを無効にします。
disable_linear
リニアライト方式のスケーリングを無効にします。
disable_builtin
組み込みの GPU サンプリングを無効にします(LUT を強制します)。
disable_fbos
FBO を強制的に無効にします。ほぼすべての機能が失われる代わりに、可能な限り最大の速度が得られます。
11.145.2 Commands
このフィルタは、上記のほぼすべてのオプションをコマンドとしてサポートします。
11.145.3 Examples
-
入力をトーンマップして標準ガマットの BT.709 出力にします:
libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv -
高品質なスケーリングで、入力を標準的な 1080p に収まるようにリスケールします:
libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos -
低 FPS / VFR の入力を補間して、滑らかな一定 60 fps 出力にします:
libplacebo=fps=60:frame_mixer=mitchell_clamp -
入力を標準的な sRGB JPEG に変換します:
libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc -
より高品質なデバンディング設定を使います:
libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6 -
Mesa がインストールされたシステムで、このフィルタを CPU 上で実行します(最もコストの高いオプションは無効にした状態で):
ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false -
デコーダ側での CPU ベースの AV1/H.274 フィルムグレイン適用を抑制し、代わりにこのフィルタで処理します。これが有利になるのは、フレームがすでに GPU 上にある場合か、libplacebo を他の目的でも使っている場合に限られることに注意してください。そうでなければ、VRAM への往復が期待される高速化分を上回ってしまうためです。
ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true -
VAAPI の hwdec と相互運用し、RAM への往復を避けます:
ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
11.146 libvmaf
リファレンス/劣化の入力映像ペアについて VMAF(Video Multi-Method Assessment Fusion)スコアを計算します。
1 番目の入力が劣化映像、2 番目の入力がリファレンス映像です。
得られた VMAF スコアはロギングシステムを通じて出力されます。
前提条件として Netflix の vmaf ライブラリ(libvmaf)が必要です。ライブラリをインストールしたあと、./configure --enable-libvmaf で有効化できます。
このフィルタには次のオプションがあります。
model
‘|‘ 区切りの vmaf モデルのリスト。各モデルは多数のパラメータで設定できます。既定値: "version=vmaf_v0.6.1"
feature
‘|‘ 区切りの feature のリスト。各 feature は多数のパラメータで設定できます。
log_path
ログファイルの保存に使用するファイルパスを設定します。
log_fmt
ログファイルのフォーマット(xml、json、csv、または sub)を設定します。
pool
vmaf の計算に使用するプール方式を設定します。指定できるのは min、harmonic_mean、mean(既定値)です。
n_threads
libvmaf の初期化時に使用するスレッド数を設定します。既定値: 0、スレッドなし。
n_subsample
使用するフレームのサブサンプリング間隔を設定します。
このフィルタは framesync オプションもサポートします。
11.146.1 Examples
- 以下の例では、劣化映像 distorted.mpg をリファレンスファイル reference.mpg と比較します。
-
基本的な使い方:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null - -
複数モデルを使う例:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null - -
複数の追加 feature を使う例:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null - -
オプション指定と異なるコンテナを使う例:
ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
11.147 libvmaf_cuda
libvmaf フィルタの CUDA 版です。CUDA フレームのみを受け付けます。
前提条件として Netflix の vmaf ライブラリ(libvmaf)が必要です。ライブラリをインストールしたあと、./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf で有効化できます。
11.147.1 Examples
- CUVID によるハードウェアデコードと、scale_cuda による CUDA スケーリングを示した基本的な使い方:
ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \ -filter_complex " [0:v]scale_cuda=format=yuv420p[dis]; \ [1:v]scale_cuda=format=yuv420p[ref]; \ [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json " \ -f null -
11.148 limitdiff
2 番目、および任意で 3 番目の映像ストリームを使って、限定的な差分フィルタを適用します。
このフィルタは次のオプションを受け付けます。
threshold
映像ストリーム間の一定の差分を許容する際に使うしきい値を設定します。このしきい値以下(または同値)の絶対差分値については、1 番目の映像ストリームからピクセル成分を採用します。
elasticity
映像ストリームを処理する際のソフトしきい値処理の弾力性を設定します。この値を 1 番目の値に乗じたものが 2 番目のしきい値になります。2 番目のしきい値以上(または同値)の絶対差分値については、2 番目の映像ストリームからピクセル成分を採用します。2 つのしきい値の間の値については、1 番目と 2 番目の映像ストリームの線形補間が使われます。
reference
リファレンス(3 番目)映像ストリームの処理を有効にします。既定では無効です。設定すると、この映像ストリームが 1 番目の映像ストリームとの絶対差分の計算に使われます。
planes
処理するプレーンを指定します。既定では利用可能なすべてです。
11.148.1 Commands
このフィルタは、‘reference’ オプションを除く上記すべてのオプションをコマンドとしてサポートします。
11.149 limiter
ピクセル成分の値を指定範囲 [min, max] に制限します。
このフィルタは次のオプションを受け付けます。
min
下限。既定では入力で許容される最小値です。
max
上限。既定では入力で許容される最大値です。
planes
処理するプレーンを指定します。既定では利用可能なすべてです。
11.149.1 Commands
このフィルタは、上記すべてのオプションをコマンドとしてサポートします。
11.150 loop
映像フレームをループします。
このフィルタは次のオプションを受け付けます。
loop
ループ回数を設定します。この値を -1 にすると無限ループになります。既定は 0 です。
size
最大サイズをフレーム数で設定します。既定は 0 です。
start
ループの先頭フレームを設定します。既定は 0 です。
time
ループ開始の時刻を秒で設定します。start オプションが -1 に設定されている場合にのみ使われます。
11.150.1 Examples
-
先頭の 1 フレームを無限にループします:
loop=loop=-1:size=1:start=0 -
先頭の 1 フレームを 10 回ループします:
loop=loop=10:size=1:start=0 -
先頭の 10 フレームを 5 回ループします:
loop=loop=5:size=10:start=0
11.151 lut1d
入力映像に 1D LUT を適用します。
このフィルタは次のオプションを受け付けます。
file
1D LUT ファイル名を設定します。
現在サポートしているフォーマット:
‘cube’
Iridas
‘csp’
cineSpace
interp
補間モードを選択します。
指定できる値:
‘nearest’
最も近い定義済みの点の値を使います。
‘linear’
線形補間で値を補間します。
‘cosine’
コサイン補間で値を補間します。
‘cubic’
3 次補間で値を補間します。
‘spline’
スプライン補間で値を補間します。
11.151.1 Commands
このフィルタは、上記すべてのオプションをコマンドとしてサポートします。
11.152 lut3d
入力映像に 3D LUT を適用します。
このフィルタは次のオプションを受け付けます。
file
3D LUT ファイル名を設定します。
現在サポートしているフォーマット:
‘3dl’
AfterEffects
‘cube’
Iridas
‘dat’
DaVinci
‘m3d’
Pandora
‘csp’
cineSpace
interp
補間モードを選択します。
指定できる値:
‘nearest’
最も近い定義済みの点の値を使います。
‘trilinear’
立方体を定義する 8 点を使って値を補間します。
‘tetrahedral’
四面体を使って値を補間します。
‘pyramid’
四角錐を使って値を補間します。
‘prism’
三角柱を使って値を補間します。
11.152.1 Commands
このフィルタは、interp オプションをコマンドとしてサポートします。
11.153 lumakey
特定の luma 値を透明にします。
このフィルタは次のオプションを受け付けます。
threshold
透明化の基準として使う luma を設定します。既定値は 0 です。
tolerance
キーアウトする luma 値の範囲を設定します。既定値は 0.01 です。
softness
ソフトネスの範囲を設定します。既定値は 0 です。ゼロから完全な透明までの段階的な遷移を制御するのに使います。
11.153.1 Commands
このフィルタは、オプションと同じものをコマンドとしてサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定された式が無効な場合は、現在の値が維持されます。
11.154 lut, lutrgb, lutyuv
各ピクセル成分の入力値を出力値に対応づけるルックアップテーブルを計算し、それを入力映像に適用します。
lutyuv は YUV の入力映像に、lutrgb は RGB の入力映像にルックアップテーブルを適用します。
これらのフィルタは次のパラメータを受け付けます。
c0
1 番目のピクセル成分の式を設定します。
c1
2 番目のピクセル成分の式を設定します。
c2
3 番目のピクセル成分の式を設定します。
c3
4 番目のピクセル成分の式を設定します。アルファ成分に対応します。
r
赤成分の式を設定します。
g
緑成分の式を設定します。
b
青成分の式を設定します。
a
アルファ成分の式。
y
Y/luma 成分の式を設定します。
u
U/Cb 成分の式を設定します。
v
V/Cr 成分の式を設定します。
各パラメータは、対応するピクセル成分の値のルックアップテーブルを計算するために使う式を指定します。
c* の各オプションに紐づく実際の成分は、入力のフォーマットに依存します。
lut フィルタは入力に YUV または RGB ピクセルフォーマットを要求し、lutrgb は入力に RGB ピクセルフォーマットを、lutyuv は YUV を要求します。
式には次の定数と関数を含めることができます。
w h
入力の幅と高さ。
val
ピクセル成分の入力値。
clipval
minval〜maxval の範囲にクリップした入力値。
maxval
ピクセル成分の最大値。
minval
ピクセル成分の最小値。
negval
ピクセル成分値を反転し、minval〜maxval の範囲にクリップした値。式 "maxval-clipval+minval" に相当します。
clip(val)
val 内で計算された値を、minval〜maxval の範囲にクリップしたもの。
gammaval(gamma)
ピクセル成分値に対してガンマ補正を計算し、minval〜maxval の範囲にクリップした値。式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval" に相当します。
すべての式の既定値は "clipval" です。
11.154.1 Commands
このフィルタは、オプションと同じものをコマンドとしてサポートします。
11.154.2 Examples
- 入力映像を反転します:
lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
上記は次と同じです:
lutrgb="r=negval:g=negval:b=negval"
lutyuv="y=negval:u=negval:v=negval"
-
luma を反転します:
lutyuv=y=negval -
クロマ成分を除去し、映像をグレートーン画像にします:
lutyuv="u=128:v=128" -
luma バーニング効果を適用します:
lutyuv="y=2*val" -
緑成分と青成分を除去します:
lutrgb="g=0:b=0" -
入力に一定のアルファチャンネル値を設定します:
format=rgba,lutrgb=a="maxval-minval/2" -
luma のガンマを 0.5 倍に補正します:
lutyuv=y=gammaval(0.5) -
luma の最下位ビットを破棄します:
lutyuv=y='bitand(val, 128+64+32)' -
テクニカラー風の効果:
lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11.155 lut2, tlut2
lut2 フィルタは 2 つの入力ストリームを受け取り、1 つのストリームを出力します。
tlut2(time lut2)フィルタは、単一のストリームから連続する 2 フレームを受け取ります。
このフィルタは次のパラメータを受け付けます。
c0
1 番目のピクセル成分の式を設定します。
c1
2 番目のピクセル成分の式を設定します。
c2
3 番目のピクセル成分の式を設定します。
c3
4 番目のピクセル成分の式を設定します。アルファ成分に対応します。
d
出力のビット深度を設定します。lut2 フィルタでのみ利用できます。既定は 0 で、これは 1 番目の入力フォーマットからビット深度を自動的に選ぶことを意味します。
lut2 フィルタは framesync オプションもサポートします。
各パラメータは、対応するピクセル成分の値のルックアップテーブルを計算するために使う式を指定します。
c* の各オプションに紐づく実際の成分は、入力のフォーマットに依存します。
式には次の定数を含めることができます。
w h
入力の幅と高さ。
x
ピクセル成分の 1 番目の入力値。
y
ピクセル成分の 2 番目の入力値。
bdx
1 番目の入力映像のビット深度。
bdy
2 番目の入力映像のビット深度。
すべての式の既定値は "x" です。
11.155.1 Commands
このフィルタは、d オプションを除く上記すべてのオプションをコマンドとしてサポートします。
11.155.2 Examples
-
2 つの RGB 映像ストリーム間の差を強調します:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)' -
2 つの YUV 映像ストリーム間の差を強調します:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)' -
2 つの映像ストリーム間の最大差を表示します:
lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
11.156 maskedclamp
1 番目の入力ストリームを、2 番目と 3 番目の入力ストリームでクランプします。
1 番目のストリームの値を、2 番目の入力ストリーム - undershoot から 3 番目の入力ストリーム + overshoot の範囲に収めて返します。
このフィルタは次のオプションを受け付けます。
undershoot
既定値は 0 です。
overshoot
既定値は 0 です。
planes
どのプレーンをビットマップとして処理するかを設定します。処理しないプレーンは 1 番目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
11.156.1 Commands
このフィルタは、上記すべてのオプションをコマンドとしてサポートします。
11.157 maskedmax
2 番目の入力ストリームと 1 番目の入力ストリームの絶対差、および 3 番目の入力ストリームと 1 番目の入力ストリームの絶対差を使って、2 番目と 3 番目の入力ストリームを出力ストリームにマージします。採用される値は、2 番目の絶対差が 1 番目より大きい場合は 2 番目の入力ストリームから、そうでない場合は 3 番目の入力ストリームから取られます。
このフィルタは次のオプションを受け付けます。
planes
どのプレーンをビットマップとして処理するかを設定します。処理しないプレーンは 1 番目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
11.157.1 Commands
このフィルタは、上記すべてのオプションをコマンドとしてサポートします。
11.158 maskedmerge
1番目の入力ストリームと2番目の入力ストリームを、3番目の入力ストリームに含まれるピクセルごとの重みを使って合成します。
3番目のストリームのピクセル成分の値が 0 のときは、1番目のストリームのピクセル成分がそのまま返されます。最大値(8ビット映像なら 255 など)のときは、2番目のストリームのピクセル成分がそのまま返されます。中間の値は、両入力ストリームのピクセル成分をどの程度合成するかを決めます。
このフィルタは次のオプションを受け付けます。
planes
ビットマップとして処理するプレーンを指定します。処理されないプレーンは1番目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
11.158.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.159 maskedmin
2番目および3番目の入力ストリームを出力ストリームに合成します。判定には、2番目の入力ストリームと1番目の入力ストリームの絶対差、および3番目の入力ストリームと1番目の入力ストリームの絶対差を使います。2番目の絶対差が1番目より小さければ2番目の入力ストリームから、そうでなければ3番目の入力ストリームから値を採用します。
このフィルタは次のオプションを受け付けます。
planes
ビットマップとして処理するプレーンを指定します。処理されないプレーンは1番目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
11.159.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.160 maskedthreshold
2つの映像ストリームの絶対差を固定のしきい値と比較してピクセルを選びます。
1番目と2番目の映像ストリームのピクセル成分の絶対差が、ユーザーの指定したしきい値以下であれば、1番目の映像ストリームのピクセル成分が選ばれます。そうでなければ2番目の映像ストリームのピクセル成分が選ばれます。
このフィルタは次のオプションを受け付けます。
threshold
2つの入力映像ストリームの絶対差からピクセルを選ぶ際に使うしきい値を指定します。
planes
ビットマップとして処理するプレーンを指定します。処理されないプレーンは2番目のストリームからコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
mode
フィルタの動作モードを指定します。abs または diff を指定できます。既定値は abs です。
11.160.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.161 maskfun
入力映像からマスクを生成します。
例えば tblend フィルタの後に動きマスクを作るのに役立ちます。
このフィルタは次のオプションを受け付けます。
low
下側のしきい値を指定します。この値以下のピクセル成分は 0 に設定されます。
high
上側のしきい値を指定します。この値を超えるピクセル成分は、現在のピクセルフォーマットで許される最大値に設定されます。
planes
フィルタするプレーンを指定します。既定では利用可能なすべてのプレーンがフィルタされます。
fill
フレームの全ピクセルをこの値で埋めます。
sum
フレームのピクセル値の最大平均値を指定します。全ピクセル成分の合計がこの平均値を上回ると、出力フレームは fill オプションで指定した値で完全に埋められます。tblend フィルタと組み合わせたシーンチェンジの検出などに役立ちます。
11.161.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.162 mcdeint
動き補償によるインターレース解除を適用します。
入力としてフレームごとに1フィールドが必要なため、yadif=1/3 または同等のフィルタと組み合わせて使う必要があります。
このフィルタは次のオプションを受け付けます。
mode
インターレース解除モードを指定します。
次のいずれかの値を受け付けます。
‘fast’ ‘medium’ ‘slow’
反復的な動き推定を使います。
‘extra_slow’
‘slow’ と同様ですが、複数の参照フレームを使います。
既定値は ‘fast’ です。
parity
入力映像で想定するピクチャのフィールドパリティを指定します。次のいずれかの値でなければなりません。
‘0, tff’
トップフィールドが先と想定します。
‘1, bff’
ボトムフィールドが先と想定します。
既定値は ‘bff’ です。
qp
内部エンコーダが使うブロックごとの量子化パラメータ(QP)を指定します。
値を大きくすると動きベクトル場は滑らかになりますが、個々のベクトルの最適性は下がります。既定値は 1 です。
11.163 median
半径で定義される一定の矩形領域から中央値のピクセルを選びます。
このフィルタは次のオプションを受け付けます。
radius
水平方向の半径の大きさを指定します。既定値は 1 です。指定できる範囲は 1 から 127 までの整数です。
planes
処理するプレーンを指定します。既定値は 15 で、利用可能なすべてのプレーンを指します。
radiusV
垂直方向の半径の大きさを指定します。既定値は 0 です。指定できる範囲は 0 から 127 までの整数です。0 の場合は水平方向の radius オプションの値が使われます。
percentile
中央値のパーセンタイルを指定します。既定値は 0.5 です。既定値の 0.5 では常に中央値が選ばれ、0 では最小値、1 では最大値が選ばれます。
11.163.1 Commands
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、その値は現在の値のまま保たれます。
11.164 mergeplanes
複数の映像ストリームのカラーチャンネル成分を合成します。
このフィルタは最大4つの入力ストリームを受け付け、選択した入力プレーンを出力映像に合成します。
このフィルタは次のオプションを受け付けます。
mapping
入力から出力へのプレーンマッピングを指定します。既定値は 0 です。
マッピングはビットマップとして指定します。0xAa[Bb[Cc[Dd]]] という形式の16進数で指定してください。'Aa' は出力ストリームの1番目のプレーンのマッピングを表します。'A' は使う入力ストリームの番号(0 から 3)、'a' は対応する入力で使うプレーン番号(0 から 3)を指定します。残りのマッピングも同様で、'Bb' は出力ストリームの2番目のプレーン、'Cc' は3番目のプレーン、'Dd' は4番目のプレーンのマッピングを表します。
format
出力ピクセルフォーマットを指定します。既定値は yuva444p です。
map0s map1s map2s map3s
出力の N 番目のプレーンに対する入力から出力へのストリームマッピングを指定します。既定値は 0 です。
map0p map1p map2p map3p
出力の N 番目のプレーンに対する入力から出力へのプレーンマッピングを指定します。既定値は 0 です。
11.164.1 Examples
-
幅と高さが同じ3つのグレー映像ストリームを1つの映像ストリームに合成します。
[a0][a1][a2]mergeplanes=0x001020:yuv444p -
1番目の yuv444p ストリームと2番目のグレー映像ストリームを yuva444p 映像ストリームに合成します。
[a0][a1]mergeplanes=0x00010210:yuva444p -
yuva444p ストリームの Y プレーンと A プレーンを入れ替えます。
format=yuva444p,mergeplanes=0x03010200:yuva444p -
yuv420p ストリームの U プレーンと V プレーンを入れ替えます。
format=yuv420p,mergeplanes=0x000201:yuv420p -
rgb24 クリップを yuv444p に変換します。
format=rgb24,mergeplanes=0x000102:yuv444p
11.165 mestimate
ブロックマッチングアルゴリズムを使って動きベクトルを推定し、出力します。動きベクトルはフレームのサイドデータに格納され、他のフィルタから利用できます。
このフィルタは次のオプションを受け付けます。
method
動き推定の方式を指定します。次のいずれかの値を受け付けます。
‘esa’
全探索アルゴリズム。
‘tss’
3ステップ探索アルゴリズム。
‘tdls’
2次元対数探索アルゴリズム。
‘ntss’
新3ステップ探索アルゴリズム。
‘fss’
4ステップ探索アルゴリズム。
‘ds’
ダイヤモンド探索アルゴリズム。
‘hexbs’
ヘキサゴン(六角形)ベース探索アルゴリズム。
‘epzs’
拡張予測ゾーン探索アルゴリズム。
‘umh’
不均一マルチヘキサゴン探索アルゴリズム。
既定値は ‘esa’ です。
mb_size
マクロブロックサイズです。既定値は 16 です。
search_param
探索パラメータです。既定値は 7 です。
11.166 mestimate_d3d12
D3D12 のハードウェアアクセラレーション動き推定を使って動きベクトルを推定し、出力します。このフィルタは DirectX 12 Video API で利用できる GPU ハードウェアの動き推定機能を使い、ソフトウェアベースの mestimate フィルタに比べて大幅な性能向上を実現します。
動きベクトルはフレームのサイドデータに格納され、他のフィルタから利用できます。
このフィルタは入力が d3d12 ハードウェアピクセルフォーマットであることを必要とします。動きベクトルの推定には4分の1ピクセル精度を使います。
このフィルタは次のオプションを受け付けます。
mb_size
マクロブロックサイズです。サポートされるのは 8 と 16 のみです。既定値は 16 です。
11.166.1 Examples
D3D12 のハードウェアアクセラレーションを使い、16x16 のブロックで動きベクトルを推定して可視化します。
ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 \
-vf mestimate_d3d12=mb_size=16,hwdownload,format=nv12,codecview=mv=pf \
-c:v libx264 -preset fast -b:v 5M output.mp4
11.167 midequalizer
2つの映像ストリームを使って Midway Image Equalization(中間画像等化)効果を適用します。
Midway Image Equalization は、2枚の画像のダイナミクスをできるだけ保ちながら、両者が同じヒストグラムを持つように調整します。例えばステレオカメラのペアの露出を合わせるのに役立ちます。
このフィルタは2つの入力と1つの出力を持ちます。入力どうしはピクセルフォーマットが同じでなければなりませんが、サイズは異なっていても構いません。フィルタの出力は、両入力の中間ヒストグラムで調整した1番目の入力です。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを指定します。既定値は 15 で、利用可能なすべてのプレーンを指します。
11.168 minterpolate
動き補間を使って映像を指定したフレームレートに変換します。
このフィルタは次のオプションを受け付けます。
fps
出力フレームレートを指定します。60000/1001 のような有理数も指定できます。fps がソースの fps より低い場合はフレームが間引かれます。既定値は 60 です。
mi_mode
動き補間モードです。次の値を受け付けます。
‘dup’
新しいフレームを補間する際に前後のフレームを複製します。
‘blend’
ソースフレームをブレンドします。補間フレームは前後のフレームの平均になります。
‘mci’
動き補償補間です。このモードを選んだときは次のオプションが有効になります。
‘mc_mode’
動き補償モードです。次の値を受け付けます。
‘obmc’
重なり合うブロックの動き補償です。
‘aobmc’
適応型の重なり合うブロックの動き補償です。過度な平滑化を抑えるため、近傍の動きベクトルの信頼度に応じてウィンドウ重み係数が適応的に制御されます。
既定モードは ‘obmc’ です。
‘me_mode’
動き推定モードです。次の値を受け付けます。
‘bidir’
双方向の動き推定です。各ソースフレームについて、前方向と後方向の両方で動きベクトルを推定します。
‘bilat’
両側性の動き推定です。補間フレームに対して直接動きベクトルを推定します。
既定モードは ‘bilat’ です。
‘me’
動き推定に使うアルゴリズムです。次の値を受け付けます。
‘esa’
全探索アルゴリズム。
‘tss’
3ステップ探索アルゴリズム。
‘tdls’
2次元対数探索アルゴリズム。
‘ntss’
新3ステップ探索アルゴリズム。
‘fss’
4ステップ探索アルゴリズム。
‘ds’
ダイヤモンド探索アルゴリズム。
‘hexbs’
ヘキサゴン(六角形)ベース探索アルゴリズム。
‘epzs’
拡張予測ゾーン探索アルゴリズム。
‘umh’
不均一マルチヘキサゴン探索アルゴリズム。
既定のアルゴリズムは ‘epzs’ です。
‘mb_size’
マクロブロックサイズです。既定値は 16 です。
‘search_param’
動き推定の探索パラメータです。既定値は 32 です。
‘vsbmc’
可変サイズブロックの動き補償を有効にします。オブジェクトの境界ではより小さなブロックサイズで動き推定が適用され、境界のぼやけが軽減されます。既定値は 0(無効)です。
scd
シーンチェンジ検出の方式です。シーンチェンジが起きると動きベクトルがランダムな方向を向きます。シーンチェンジ検出は、補間フレームを複製フレームに置き換えます。他のモードでは不要な場合があります。次の値を受け付けます。
‘none’
シーンチェンジ検出を無効にします。
‘fdiff’
フレーム差分です。対応するピクセル値を比較し、scd_threshold を満たした場合にシーンチェンジが検出されます。
既定の方式は ‘fdiff’ です。
scd_threshold
シーンチェンジ検出のしきい値です。既定値は 10. です。
11.169 mix
複数の映像入力ストリームを1つの映像ストリームに混合します。
受け付けるオプションを以下に説明します。
inputs
入力の数です。指定しない場合は既定で 2 になります。
weights
各入力映像ストリームの重みを列として指定します。各重みはスペースで区切ります。重みの数がフレーム数より少ない場合、残りの未設定の重みにはすべて最後に指定した重みが使われます。
scale
スケールを指定します。設定すると、各重みとピクセル値を掛けた総和にこのスケールが乗算され、最終的な出力先のピクセル値が決まります。既定ではスケールは重みの総和に合わせて自動的に調整されます。
planes
フィルタするプレーンを指定します。既定値はすべてです。指定できる範囲は 0 から 15 までです。
duration
ストリームの終了をどう判定するかを指定します。
‘longest’
最も長い入力の長さに合わせます(既定値)。
‘shortest’
最も短い入力の長さに合わせます。
‘first’
1番目の入力の長さに合わせます。
11.169.1 Commands
このフィルタは次のコマンドをサポートします。
weights scale planes
構文は同名のオプションと同じです。
11.170 monochrome
カスタムのカラーフィルタを使って映像をグレーに変換します。
受け付けるオプションを以下に説明します。
cb
クロマブルーのスポットを指定します。指定できる範囲は -1 から 1 までです。既定値は 0 です。
cr
クロマレッドのスポットを指定します。指定できる範囲は -1 から 1 までです。既定値は 0 です。
size
カラーフィルタのサイズを指定します。指定できる範囲は .1 から 10 までです。既定値は 1 です。
high
ハイライトの強さを指定します。指定できる範囲は 0 から 1 までです。既定値は 0 です。
11.170.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.171 morpho
このフィルタは、主要なグレースケールのモルフォロジー変換である erode(収縮)と dilate(膨張)を、2番目の入力ストリームで設定した任意の構造要素を使って適用します。
erode フィルタや dilate フィルタの素朴な実装ははるかに低速ですが、速度が重要な場合は代わりに morpho フィルタを使うべきです。
受け付けるオプションを以下に説明します。
mode
適用するモルフォロジー変換を指定します。次のいずれかを指定できます。
‘erode’ ‘dilate’ ‘open’ ‘close’ ‘gradient’ ‘tophat’ ‘blackhat’
既定値は erode です。
planes
フィルタするプレーンを指定します。既定ではアルファを除くすべてのプレーンがフィルタされます。
structure
2番目の入力ストリームからどの構造要素フレームを処理するかを指定します。first または all を指定できます。既定値は all です。
morpho フィルタは framesync オプションもサポートします。
11.171.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.172 mpdecimate
フレームレートを下げるために、前のフレームとあまり差のないフレームを間引きます。
このフィルタの主な用途は、極めて低いビットレートでのエンコード(例えばダイヤルアップモデム経由のストリーミング)ですが、理論的には誤って逆テレシネ処理された映画の修正にも使えます。
受け付けるオプションを以下に説明します。
max
連続して間引けるフレームの最大数(正の値の場合)、または間引くフレーム間の最小間隔(負の値の場合)を指定します。値が 0 の場合、それまでに連続して間引いたフレーム数に関係なくフレームが間引かれます。
既定値は 0 です。
keep
間引きを開始する前に、連続して類似したフレームを無視する最大数を指定します。値が 0 の場合、それまでに連続して類似していたフレーム数に関係なくフレームが間引かれます。
既定値は 0 です。
hi lo frac
間引きのしきい値を指定します。
hi と lo の値は 8x8 ピクセルのブロックに対するもので、実際のピクセル値の差を表します。したがって 64 のしきい値は、各ピクセルあたり 1 単位の差、またはそれと同等の差がブロック内に別の形で分散していることに相当します。
8x8 ブロックのいずれも hi のしきい値を超える差がなく、かつ frac(1 は画像全体を意味します)を超える数のブロックが lo のしきい値を超える差を持たない場合、そのフレームは間引きの候補になります。
hi の既定値は 6412、lo の既定値は 645、frac の既定値は 0.33 です。
11.173 msad
2つの入力映像の間の MSAD(Mean Sum of Absolute Differences、絶対差の総和の平均)を求めます。
このフィルタは2つの入力映像を取ります。
このフィルタが正しく動作するには、両方の入力映像の解像度とピクセルフォーマットが同じでなければなりません。また、両方の入力のフレーム数が同じであることを前提とし、フレームを1つずつ比較します。
求めた成分ごと・平均・最小・最大の MSAD は、ロギングシステムを通じて出力されます。
このフィルタは、計算した各フレームの MSAD をフレームのメタデータに格納します。
このフィルタは framesync オプションもサポートします。
以下の例では、処理対象の入力ファイル main.mpg を参照ファイル ref.mpg と比較します。
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
11.174 multiply
1番目の映像ストリームのピクセル値に、2番目の映像ストリームのピクセル値を乗算します。
このフィルタは次のオプションを受け付けます。
scale
2番目の映像ストリームに適用するスケールを指定します。既定値は 1 です。指定できる範囲は 0 から 9 までです。
offset
2番目の映像ストリームに適用するオフセットを指定します。既定値は 0.5 です。指定できる範囲は -1 から 1 までです。
planes
入力映像ストリームのうち処理するプレーンを指定します。既定ではすべてのプレーンが処理されます。
11.174.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.175 negate
入力映像をネガ化(反転)します。
次のオプションを受け付けます。
components
ネガ化する成分を指定します。
components に指定できる値は次のとおりです。
‘y’ ‘u’ ‘v’ ‘a’ ‘r’ ‘g’ ‘b’ negate_alpha
値 1 にすると、アルファ成分が存在すればそれをネガ化します。既定値は 0 です。
11.175.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.176 nlmeans
Non-Local Means アルゴリズムを使ってフレームのノイズを除去します。
各ピクセルは、似た文脈を持つ他のピクセルを探すことで調整されます。この文脈の類似度は、周囲の pxp サイズのパッチを比較して定義されます。パッチはピクセルの周囲 rxr の領域内で探索されます。
なお、探索領域はパッチの中心を定義するものであり、一部のパッチはその探索領域の外側にあるピクセルで構成される点に注意してください。
このフィルタは次のオプションを受け付けます。
s
ノイズ除去の強さを指定します。既定値は 1.0 です。範囲は [1.0, 30.0] でなければなりません。
p
パッチサイズを指定します。既定値は 7 です。[0, 99] の範囲の奇数でなければなりません。
pc
p と同じですが、クロマプレーン用です。
既定値は 0 で、自動を意味します。
r
探索サイズを指定します。既定値は 15 です。[0, 99] の範囲の奇数でなければなりません。
rc
r と同じですが、クロマプレーン用です。
既定値は 0 で、自動を意味します。
11.177 nnedi
ニューラルネットワークによるエッジ指向補間を使って映像のインターレースを解除します。
このフィルタは次のオプションを受け付けます。
weights
必須のオプションで、バイナリファイルがないとフィルタは動作しません。現在、ファイルは次の場所にあります: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
deint
どのフレームをインターレース解除するかを指定します。既定値は all です。all または interlaced を指定できます。
field
動作モードを指定します。
次のいずれかを指定できます。
‘af’
フレームフラグを使い、両フィールドを処理します。
‘a’
フレームフラグを使い、単一フィールドを処理します。
‘t’
トップフィールドのみを使います。
‘b’
ボトムフィールドのみを使います。
‘tf’
両フィールドを使い、トップを先にします。
‘bf’
両フィールドを使い、ボトムを先にします。
planes
処理するプレーンを指定します。既定ではフィルタはすべてのフレームを処理します。
nsize
予測ニューラルネットワークが使う、各ピクセル周辺の局所近傍の大きさを指定します。
次のいずれかを指定できます。
‘s8x6’ ‘s16x6’ ‘s32x6’ ‘s48x6’ ‘s8x4’ ‘s16x4’ ‘s32x4’ nns
予測ニューラルネットワークのニューロン数を指定します。次のいずれかを指定できます。
‘n16’ ‘n32’ ‘n64’ ‘n128’ ‘n256’ qual
最終的な出力値を計算するためにブレンドする、異なるニューラルネットワーク予測の数を制御します。fast(既定値)または slow を指定できます。
etype
予測器に使う重みのセットを指定します。次のいずれかを指定できます。
‘a, abs’
絶対誤差を最小化するように訓練された重み。
‘s, mse’
二乗誤差を最小化するように訓練された重み。
pscrn
プリスクリーナーのニューラルネットワークを使うかどうかを制御します。これは、どのピクセルを予測ニューラルネットワークで処理し、どのピクセルを単純な3次補間で処理できるかを判断するためのものです。プリスクリーナーは、あるピクセルに3次補間で十分か、それとも予測ニューラルネットワークで予測すべきかを判断するように訓練されています。プリスクリーナーのニューラルネットワークの計算量は予測ニューラルネットワークよりはるかに小さくて済みます。ほとんどのピクセルは3次補間で処理できるため、プリスクリーナーを使うと一般に処理がはるかに高速になります。プリスクリーナーはかなり正確なので、使った場合と使わなかった場合の差はほとんど常に分からない程度です。
次のいずれかを指定できます。
‘none’ ‘original’ ‘new’ ‘new2’ ‘new3’
既定値は new です。
11.177.1 Commands
このフィルタは weights オプションを除き、オプションと同じコマンドをサポートします。
11.178 noformat
指定したピクセルフォーマットを、次のフィルタへの入力として libavfilter が使わないよう強制します。
次のパラメータを受け付けます。
pix_fmts
’|’ で区切ったピクセルフォーマット名のリスト。例: pix_fmts=yuv420p|monow|rgb24"。
11.178.1 Examples
-
vflip フィルタへの入力として、libavfilter が yuv420p 以外のフォーマットを使うよう強制します:
noformat=pix_fmts=yuv420p,vflip -
入力映像を、リストに含まれないいずれかのフォーマットへ変換します:
noformat=yuv420p|yuv444p|yuv410p
11.179 noise
入力映像のフレームにノイズを加えます。
このフィルタは次のオプションを受け付けます。
all_seed c0_seed c1_seed c2_seed c3_seed
特定のピクセル成分、または all_seed の場合は全ピクセル成分に対してノイズのシードを設定します。既定値は 123457。
all_strength, alls c0_strength, c0s c1_strength, c1s c2_strength, c2s c3_strength, c3s
特定のピクセル成分、または all_strength の場合は全ピクセル成分に対してノイズの強さを設定します。既定値は 0。指定できる範囲は [0, 100]。
all_flags, allf c0_flags, c0f c1_flags, c1f c2_flags, c2f c3_flags, c3f
ピクセル成分のフラグを設定します。all_flags の場合は全成分にフラグを設定します。成分フラグに指定できる値は次のとおりです。
‘a’
平均化された時間方向ノイズ(より滑らか)
‘p’
ランダムノイズを(半)規則的なパターンと混ぜます
‘t’
時間方向ノイズ(ノイズパターンがフレーム間で変化する)
‘u’
一様ノイズ(指定しない場合はガウス分布)
11.179.1 Examples
入力映像に時間方向の一様ノイズを加えます:
noise=alls=20:allf=t+u
11.180 normalize
RGB 映像を正規化します(ヒストグラム伸長、コントラスト伸長とも呼ばれる)。参照: https://en.wikipedia.org/wiki/Normalization_(image_processing)
各フレームの各チャンネルについて、フィルタは入力レンジを計算し、ユーザーが指定した出力レンジへ線形にマッピングします。出力レンジの既定値は、純黒から純白までのフルダイナミックレンジです。
小さな暗い物体や明るい物体がシーンに出入りすることで生じるちらつき(明るさの急激な変化)を抑えるため、入力レンジに対して時間方向のスムージングを適用できます。これはビデオカメラの自動露出(自動利得制御)に似ており、ビデオカメラと同様に、映像が一時的に露出オーバーやアンダーになることがあります。
R, G, B チャンネルは独立して正規化でき、その場合は色ずれが生じることがあります。あるいは単一チャンネルとして連動させて正規化でき、その場合は色ずれを防げます。連動正規化は色相を保持します。独立正規化は保持しないため、色かぶりの除去に利用できます。独立正規化と連動正規化は任意の比率で組み合わせられます。
normalize フィルタは次のオプションを受け付けます。
blackpt whitept
出力レンジを定義する色。最小の入力値は blackpt にマッピングされ、最大の入力値は whitept にマッピングされます。既定値はそれぞれ黒と白。blackpt に白、whitept に黒を指定すると、色を反転した正規化映像が得られます。グレーの濃淡を指定すればダイナミックレンジ(コントラスト)を抑えられます。彩度の高い色を指定すると、面白い効果を作り出せます。
smoothing
時間方向スムージングに使う直前のフレーム数。各チャンネルの入力レンジは、現在のフレームと直前の smoothing 枚のフレームにわたる移動平均で平滑化されます。既定値は 0(時間方向スムージングなし)。
independence
独立(色ずれあり)チャンネル正規化と、連動(色保持)正規化の比率を制御します。0.0 で完全に連動、1.0 で完全に独立。既定値は 1.0(完全に独立)。
strength
フィルタ全体の強さ。1.0 でフルの強さ。0.0 はかなり処理コストの高い no-op となります。既定値は 1.0(フルの強さ)。
11.180.1 Commands
このフィルタは smoothing オプションを除き、オプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.180.2 Examples
時間方向スムージングなしで、映像のコントラストをフルダイナミックレンジまで伸長します。ソースの内容によってはちらつくことがあります:
normalize=blackpt=black:whitept=white:smoothing=0
上と同様ですが、50 フレームの時間方向スムージングを行います。ソースの内容にもよりますが、ちらつきは軽減されるはずです:
normalize=blackpt=black:whitept=white:smoothing=50
上と同様ですが、色相を保持する連動チャンネル正規化を行います:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0
上と同様ですが、強さを半分にします:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
最も暗い入力色を赤に、最も明るい入力色をシアンにマッピングします:
normalize=blackpt=red:whitept=cyan
11.181 null
映像ソースを変更せずそのまま出力へ渡します。
11.182 ocio
OpenColorIO ライブラリフィルタ
このフィルタを使うと、OpenColorIO ライブラリによるカラーマネジメントを行えます。詳細は https://opencolorio.org/ を参照してください。このフィルタのコンパイルを有効にするには、--enable-libopencolorio を付けて FFmpeg を configure する必要があります。
次のオプションを受け付けます。
config
既定では、フィルタは OCIO 環境変数で定義された OCIO 設定を使いますが、このパラメータでその場所を明示的に指定できます。始めて使う場合は、組み込みの既定値の 1 つを指定する config=ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1 を利用できます。
input
入力の色空間を設定します。
output
出力の色空間を設定します。
display
ディスプレイの色空間を設定します。view と組み合わせて使います。
view
ビューの色空間を設定します。display と組み合わせて使います。
inverse
display および view と組み合わせて使うと、変換を反転し、display/view から「入力色空間」へ向かいます。
filetransform
OCIO 設定ファイルの代わりに使う外部のファイルトランスフォームを指定できます。完全な OCIO 設定ファイルを用意せずに単一の変換を適用したい場合に便利です。
format
OCIO フィルタの出力 pix_fmt を指定できます。これは RGB 色空間でなければならないため、実質的には rgb24, rgba, rgb48, rgba48, gbrp10, gbrp12, gbrpf32le, gbrapf32le に限られます。多くのエンコードでは rgb48 を推奨します。
context_params
OCIO フィルタに渡す追加のコンテキストパラメータを指定できます。これは key=value のペアをコロンで区切ったリストです。
11.182.1 Examples
ACEScg から ACEScct へマッピングします。OCIO ファイルが OCIO 環境変数で定義されていることを前提とします。
input=ACEScg:output=ACEScct:format=rgb48
ACEScg から sRGB ディスプレイへ、「ACES 1.0 - SDR Video」ビュートランスフォームを使ってマッピングします。OCIO ファイルが OCIO 環境変数で定義されていることを前提とします。スペースが正しく解釈されるよう、引数を引用符で囲む必要がある点に注意してください。
input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48
上と同様ですが、OCIO 環境変数の代わりに OCIO ファイル studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio を使います。
config=studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio:input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48
YCrCb へ変換する場合でも、変換用にカラーマトリクスを設定したいでしょう。次は両者を組み合わせる良い例です。
ffmpeg -y -i SOURCEFRAMES.%05d.exr -c:v libx265 -vf "ocio=input=ACEScg:output=ACEScct:format=rgb48,scale=in_color_matrix=bt709:out_color_matrix=bt709,format=yuv444p10" OUTPUTFILE.mov
11.183 ocr
光学文字認識(OCR)
このフィルタは光学文字認識に Tesseract を使います。このフィルタのコンパイルを有効にするには、--enable-libtesseract を付けて FFmpeg を configure する必要があります。
次のオプションを受け付けます。
datapath
tesseract データへの datapath を設定します。既定ではインストール時に設定された値を使います。
language
言語を設定します。既定値は "eng"。
whitelist
文字のホワイトリストを設定します。
blacklist
文字のブラックリストを設定します。
このフィルタは認識したテキストを、フレームメタデータ lavfi.ocr.text として出力します。また、認識した単語の信頼度を、フレームメタデータ lavfi.ocr.confidence として出力します。
11.184 ocv
libopencv を使って映像変換を適用します。
このフィルタを有効にするには、libopencv ライブラリとヘッダをインストールし、--enable-libopencv を付けて FFmpeg を configure します。
次のパラメータを受け付けます。
filter_name
適用する libopencv フィルタの名前。
filter_params
libopencv フィルタに渡すパラメータ。指定しない場合は既定値が使われます。
より正確な情報は libopencv の公式ドキュメントを参照してください: http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
複数の libopencv フィルタがサポートされています。以下の各小節を参照してください。
11.184.1 dilate
特定の構造化要素を使って画像を膨張させます。libopencv の関数 cvDilate に対応します。
パラメータ struct_el|nb_iterations を受け付けます。
struct_el は構造化要素を表し、構文は colsxrows+anchor_xxanchor_y/shape です。
cols と rows は構造化要素の列数と行数、anchor_x と anchor_y はアンカー点、shape は構造化要素の形状を表します。shape は "rect"、"cross"、"ellipse"、"custom" のいずれかでなければなりません。
shape の値が "custom" の場合、その後に "=filename" の形式の文字列が続かなければなりません。filename という名前のファイルは二値画像を表すものとされ、印字可能な各文字が明るいピクセルに対応します。custom 形状を使う場合、cols と rows は無視され、読み込んだファイルの列数と行数が代わりに使われます。
struct_el の既定値は "3x3+0x0/rect" です。
nb_iterations は変換を画像に適用する回数を指定し、既定値は 1 です。
いくつかの例:
# 既定値を使う
ocv=dilate
# 5x5 のクロス型構造化要素を使い、2 回反復して膨張させる
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
# ファイル diamond.shape から形状を読み込み、2 回反復する。
# ファイル diamond.shape には次のような文字のパターンを記述できる
# *
# ***
# *****
# ***
# *
# 指定した列数と行数は無視されるが、
# アンカー点の座標は無視されない
ocv=dilate:0x0+2x2/custom=diamond.shape|2
11.184.2 erode
特定の構造化要素を使って画像を収縮させます。libopencv の関数 cvErode に対応します。
パラメータ struct_el:nb_iterations を受け付けます。構文と意味は dilate フィルタと同じです。
11.184.3 smooth
入力映像を平滑化します。
このフィルタは次のパラメータを受け取ります: type|param1|param2|param3|param4。
type は適用する平滑化フィルタの種類で、"blur"、"blur_no_scale"、"median"、"gaussian"、"bilateral" のいずれかでなければなりません。既定値は "gaussian"。
param1、param2、param3、param4 の意味は smooth の type に依存します。param1 と param2 は正の整数または 0 を受け付けます。param3 と param4 は浮動小数点値を受け付けます。
param1 の既定値は 3。その他のパラメータの既定値は 0。
これらのパラメータは libopencv の関数 cvSmooth に割り当てられるパラメータに対応します。
11.185 oscilloscope
2D 映像オシロスコープ。
空間的インパルス応答、ステップ応答、クロマ遅延などの測定に便利です。
次のパラメータを受け付けます。
x
スコープ中心の x 位置を設定します。
y
スコープ中心の y 位置を設定します。
s
フレーム対角線に対する相対値でスコープのサイズを設定します。
t
スコープの傾き/回転を設定します。
o
トレースの不透明度を設定します。
tx
トレース中心の x 位置を設定します。
ty
トレース中心の y 位置を設定します。
tw
フレーム幅に対する相対値でトレースの幅を設定します。
th
フレーム高さに対する相対値でトレースの高さを設定します。
c
どの成分をトレースするかを設定します。既定では最初の 3 成分をトレースします。
g
トレースのグリッドを描画します。既定では有効。
st
統計情報を描画します。既定では有効。
sc
スコープを描画します。既定では有効。
11.185.1 Commands
このフィルタはオプションと同じコマンドをサポートします。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.185.2 Examples
-
映像フレームの最初の行全体を検査します。
oscilloscope=x=0.5:y=0:s=1 -
映像フレームの最後の行全体を検査します。
oscilloscope=x=0.5:y=1:s=1 -
高さ 1080 の映像フレームの 5 行目全体を検査します。
oscilloscope=x=0.5:y=5/1080:s=1 -
映像フレームの最後の列全体を検査します。
oscilloscope=x=1:y=0.5:s=1:t=1
11.186 overlay
ある映像を別の映像の上に重ねます。
2 つの入力を取り、1 つの出力を持ちます。1 番目の入力が「メイン」映像で、その上に 2 番目の入力が重ねられます。
次のパラメータを受け付けます。
受け付けるオプションの説明は次のとおりです。
x y
メイン映像上に重ねる映像の x, y 座標の式を設定します。両方の式の既定値は "0"。式が無効な場合は巨大な値に設定されます(つまりオーバーレイは出力の可視領域内に表示されない)。
eof_action
framesync を参照してください。
eval
x, y の式をいつ評価するかを設定します。
次の値を受け付けます。
‘init’
フィルタの初期化時、またはコマンドが処理されたときに一度だけ式を評価します
‘frame’
入力フレームごとに式を評価します
既定値は ‘frame’。
shortest
framesync を参照してください。
format
出力映像のフォーマットを設定します。
次の値を受け付けます。
‘yuv420’
YUV 4:2:0 8-bit プレーナー出力を強制します
‘yuv420p10’
YUV 4:2:0 10-bit プレーナー出力を強制します
‘yuv422’
YUV 4:2:2 8-bit プレーナー出力を強制します
‘yuv422p10’
YUV 4:2:2 10-bit プレーナー出力を強制します
‘yuv444’
YUV 4:4:4 8-bit プレーナー出力を強制します
‘yuv444p10’
YUV 4:4:4 10-bit プレーナー出力を強制します
‘rgb’
RGB 8-bit パック出力を強制します
‘gbrp’
RGB 8-bit プレーナー出力を強制します
‘auto’
フォーマットを自動的に選びます
既定値は ‘yuv420’。
repeatlast
framesync を参照してください。
alpha
重ねる映像のアルファのフォーマットを設定します。straight または premultiplied、あるいはアルファモードを自動的に選ぶ auto を指定できます。既定値は auto。
x, y の式には次のパラメータを含められます。
main_w, W main_h, H
メイン入力の幅と高さ。
overlay_w, w overlay_h, h
オーバーレイ入力の幅と高さ。
x y
x と y の計算値。新しいフレームごとに評価されます。
hsub vsub
出力フォーマットの水平・垂直クロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1。
n
入力フレーム番号。0 から始まります。
pos
入力フレームのファイル内での位置。不明な場合は NAN。非推奨であり、使用しないでください。
t
タイムスタンプ。秒単位で表します。入力タイムスタンプが不明な場合は NAN。
このフィルタは framesync オプションもサポートします。
なお、n, t の変数は評価が フレームごと に行われるときにのみ利用でき、eval が ‘init’ に設定されている場合は NAN に評価されます。
フレームは各入力映像からタイムスタンプ順に取り込まれる点に注意してください。したがって、それぞれの初期タイムスタンプが異なる場合は、movie フィルタの例のように、2 つの入力を setpts=PTS-STARTPTS フィルタに通して同じゼロタイムスタンプから始まるようにしておくとよいでしょう。
複数のオーバーレイを連結することもできますが、その手法の効率は確認しておくべきです。
11.186.1 Commands
このフィルタは次のコマンドをサポートします。
x y
オーバーレイ入力の x と y を変更します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合は、現在の値が維持されます。
11.186.2 Examples
- メイン映像の右下隅から 10 ピクセルの位置にオーバーレイを描画します:
overlay=main_w-overlay_w-10:main_h-overlay_h-10
名前付きオプションを使うと、上の例は次のようになります:
overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
-
ffmpegツールの-filter_complexオプションを使い、透過 PNG ロゴを入力の左下隅に挿入します:ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output -
ffmpegツールを使い、2 つの異なる透過 PNG ロゴを挿入します(2 番目のロゴは右下隅):ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output -
メイン映像の上に透過カラーレイヤーを重ねます。
WxHは overlay フィルタへのメイン入力のサイズを指定しなければなりません:color=color=red@.3:size=WxH [over]; [in][over] overlay [out] -
ffplayツールを使い、元の映像とフィルタ適用版(ここでは deshake フィルタ)を並べて再生します:ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
上のコマンドは次と同じです:
ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
-
画面の左から右上部へ、時刻 2 から現れるスライドするオーバーレイを作ります:
overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0 -
2 つの入力映像を左右に並べて出力を構成します:
ffmpeg -i left.avi -i right.avi -filter_complex " nullsrc=size=200x100 [background]; [0:v] setpts=PTS-STARTPTS, scale=100x100 [left]; [1:v] setpts=PTS-STARTPTS, scale=100x100 [right]; [background][left] overlay=shortest=1 [background+left]; [background+left][right] overlay=shortest=1:x=100 [left+right] " -
映像の 10〜20 秒の区間に delogo フィルタを適用してマスクします:
ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]' masked.avi -
複数のオーバーレイを多段に連結します:
nullsrc=s=200x200 [bg]; testsrc=s=100x100, split=4 [in0][in1][in2][in3]; [in0] lutrgb=r=0, [bg] overlay=0:0 [mid0]; [in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1]; [in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2]; [in3] null, [mid2] overlay=100:100 [out0]
11.187 owdenoise
過完備ウェーブレットによるノイズ除去を適用します。
このフィルタは次のオプションを受け付けます。
depth
深さを設定します。
depth の値を大きくすると、より低い周波数成分のノイズを除去できますが、フィルタ処理は遅くなります。
8〜16 の範囲の整数でなければならず、既定値は 8。
luma_strength, ls
輝度の強さを設定します。
0〜1000 の範囲の倍精度値でなければならず、既定値は 1.0。
chroma_strength, cs
クロマの強さを設定します。
0〜1000 の範囲の倍精度値でなければならず、既定値は 1.0。
11.188 pad
入力画像にパディングを追加し、指定した x, y 座標に元の入力を配置します。
次のパラメータを受け付けます。
width, w height, h
パディングを追加した出力画像のサイズの式を指定します。width または height の値が 0 の場合、対応する入力サイズが出力に使われます。
width の式は height の式で設定した値を参照でき、その逆も可能です。
width と height の既定値は 0。
x y
パディング領域内に入力画像を配置するオフセットを、出力画像の上端/左端を基準に指定します。
x の式は y の式で設定した値を参照でき、その逆も可能です。
x と y の既定値は 0。
x または y が負の数に評価された場合は、入力画像がパディング領域の中央に配置されるよう値が変更されます。
color
パディング領域の色を指定します。このオプションの構文については、ffmpeg-utils マニュアルの「Color」セクション(ffmpeg-utils)を確認してください。
color の既定値は "black"。
eval
width, height, x, y の式をいつ評価するかを指定します。
次の値を受け付けます。
‘init’
フィルタの初期化時、またはコマンドが処理されたときに一度だけ式を評価します。
‘frame’
入力フレームごとに式を評価します。
既定値は ‘init’。
aspect
解像度ではなくアスペクト比に合わせてパディングします。
width, height, x, y オプションの値は、次の定数を含む式です。
in_w in_h
入力映像の幅と高さ。
iw ih
in_w および in_h と同じ。
out_w out_h
width と height の式で指定された、出力の幅と高さ(パディング領域のサイズ)。
ow oh
out_w および out_h と同じ。
x y
x と y の式で指定された x, y オフセット。まだ指定されていない場合は NAN。
a
iw / ih と同じ。
sar
入力のサンプルアスペクト比。
dar
入力のディスプレイアスペクト比。(iw / ih) * sar と同じ。
hsub vsub
水平・垂直のクロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1。
11.188.1 Examples
- 入力映像に色「violet」のパディングを追加します。出力映像のサイズは640x480で、入力映像の左上隅を列0・行40の位置に置きます。
pad=640:480:0:40:violet
上の例は次のコマンドと等価です。
pad=width=640:height=480:x=0:y=40:color=violet
-
入力をパディングして寸法を3/2倍にした出力を得て、入力映像をパディング領域の中央に置きます。
pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2" -
入力をパディングして、入力の幅と高さの大きい方の値を一辺とする正方形の出力を得て、入力映像をパディング領域の中央に置きます。
pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2" -
入力をパディングして最終的なw/h比を16:9にします。
pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2" -
アナモルフィック映像の場合、出力の表示アスペクト比を正しく設定するには、次の関係に従って式に sar を使う必要があります。
(ih * X / ih) * sar = output_dar X = output_dar / sar
したがって前の例は次のように修正する必要があります。
pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
- 出力サイズを2倍にし、入力映像を出力パディング領域の右下隅に置きます。
pad="2*iw:2*ih:ow-iw:oh-ih"
11.189 palettegen
映像ストリーム全体に対して1つのパレットを生成します。
次のオプションを受け付けます。
max_colors
パレットで量子化する色数の最大値を設定します。注意: パレットには依然として256色が含まれ、未使用のパレットエントリは黒になります。
reserve_transparent
最大255色のパレットを作成し、最後の1色を透過用に予約します。透過色を予約することはGIFの最適化に役立ちます。設定しない場合、パレットの色数の最大は256になります。単独の画像ではこのオプションを無効にしたい場合が多いです。既定で設定されています。
transparency_color
透過の背景として使われる色を設定します。
stats_mode
統計モードを設定します。
次の値を受け付けます。
‘full’
フレーム全体のヒストグラムを計算します。
‘diff’
前のフレームと異なる部分のみについてヒストグラムを計算します。背景が静的な場合に、入力の動いている部分をより重視させたいときに有用なことがあります。
‘single’
各フレームごとに新しいヒストグラムを計算します。
既定値は full。
このフィルタは、パレットの色量子化の度合いを評価するために使えるフレームメタデータ lavfi.color_quant_ratio(nb_color_in / nb_color_out)も書き出します。この情報は info ログレベルでも確認できます。
11.189.1 Examples
ffmpegを使って、ある映像を代表するパレットを生成します。ffmpeg -i input.mkv -vf palettegen palette.png
11.190 paletteuse
パレットを使って入力映像ストリームをダウンサンプリングします。
このフィルタは2つの入力を受け取ります。1つは映像ストリーム、もう1つはパレットです。パレットは256ピクセルの画像でなければなりません。
次のオプションを受け付けます。
dither
ディザリングモードを選択します。利用可能なアルゴリズムは次のとおり。
‘bayer’
順序付き8x8ベイヤーディザリング(決定論的)。
‘heckbert’
1982年にPaul Heckbertが定義したディザリング(単純な誤差拡散)。注意: このディザリングは「誤り」とみなされることがあり、参考として含まれています。
‘floyd_steinberg’
FloydとSteingbergのディザリング(誤差拡散)。
‘sierra2’
Frankie Sierraのディザリング v2(誤差拡散)。
‘sierra2_4a’
Frankie Sierraのディザリング v2「Lite」(誤差拡散)。
‘sierra3’
Frankie Sierraのディザリング v3(誤差拡散)。
‘burkes’
Burkesのディザリング(誤差拡散)。
‘atkinson’
Apple ComputerのBill AtkinsonによるAtkinsonディザリング(誤差拡散)。
‘none’
ディザリングを無効にします。
既定は sierra2_4a。
bayer_scale
ベイヤーディザリングを選択した場合、このオプションはパターンのスケール(網掛けパターンがどれだけ見えるか)を定義します。値が小さいほどパターンが見えやすくバンディングが減り、値が大きいほどパターンが見えにくくなる代わりにバンディングが増えます。
このオプションは [0,5] の範囲の整数値でなければなりません。既定は2。
diff_mode
設定すると、処理する範囲を定義します。
‘rectangle’
変化した矩形のみが再処理されます。これはGIFのクロップ/オフセット圧縮の仕組みに似ています。このオプションは画像の一部だけが変化する場合に速度面で有用なことがあり、誤差拡散ディザの範囲を、動いているシーンを囲む矩形に限定するといった用途があります(シーンの変化が少なければより決定論的な出力となり、結果として動くノイズが減り、GIF圧縮も向上します)。
既定は none。
new
各出力フレームごとに新しいパレットを取ります。
alpha_threshold
透過のアルファしきい値を設定します。このしきい値より上のアルファ値は完全に不透明として扱われ、しきい値より下の値は完全に透明として扱われます。
このオプションは [0,255] の範囲の整数値でなければなりません。既定は128。
11.190.1 Examples
ffmpegを使い、(たとえば palettegen で生成した)パレットを使ってGIFをエンコードします。ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
11.191 perspective
画面に対して垂直に撮影されていない映像のパースペクティブを補正します。
受け付けるパラメータの説明を以下に示します。
x0 y0 x1 y1 x2 y2 x3 y3
左上、右上、左下、右下の各隅の座標式を設定します。既定値は 0:0:W:0:0:H:W:H で、この場合パースペクティブは変化しません。sense オプションが source に設定されている場合、指定した点が出力先の各隅へ送られます。sense オプションが destination に設定されている場合、入力元の各隅が指定した座標へ送られます。
式では次の変数を使えます。
W H
映像フレームの幅と高さ。
in
入力フレーム数。
on
出力フレーム数。
interpolation
パースペクティブ補正の補間方法を設定します。
次の値を受け付けます。
‘linear’ ‘cubic’
既定値は ‘linear’。
sense
座標オプションの解釈方法を設定します。
次の値を受け付けます。
‘0, source’
指定した座標で示される入力元の点を、出力先の各隅へ送ります。
‘1, destination’
入力元の各隅を、指定した座標で示される出力先の点へ送ります。
既定値は ‘source’。
eval
座標 x0,y0,...x3,y3 の式をいつ評価するかを設定します。
次の値を受け付けます。
‘init’
フィルタの初期化時、またはコマンドが処理されたときに一度だけ式を評価します。
‘frame’
入力フレームごとに式を評価します。
既定値は ‘init’。
11.192 phase
インターレース映像を1フィールド分の時間だけ遅延させ、フィールド順を入れ替えます。
想定する用途は、フィルムからビデオへの変換とは逆のフィールド順でキャプチャされたPAL映画を修正することです。
受け付けるパラメータの説明を以下に示します。
mode
フェーズモードを設定します。
次の値を受け付けます。
‘t’
キャプチャのフィールド順はトップ先行、転送はボトム先行。フィルタはボトムフィールドを遅延させます。
‘b’
キャプチャのフィールド順はボトム先行、転送はトップ先行。フィルタはトップフィールドを遅延させます。
‘p’
キャプチャと転送を同じフィールド順で行います。このモードは他のオプションが参照するための説明として存在するだけで、実際に選択すると、フィルタは忠実に何もしません。
‘a’
キャプチャのフィールド順はフィールドフラグによって自動的に決定し、転送は逆順。フィルタはフィールドフラグを使ってフレームごとに ‘t’ と ‘b’ のモードを選択します。フィールド情報が得られない場合は ‘u’ と同様に動作します。
‘u’
キャプチャは不明または変動、転送は逆順。フィルタは画像を解析し、フィールド間で最もよく一致する方を選んで、フレームごとに ‘t’ と ‘b’ を選択します。
‘T’
キャプチャはトップ先行、転送は不明または変動。フィルタは画像解析を使って ‘t’ と ‘p’ を選択します。
‘B’
キャプチャはボトム先行、転送は不明または変動。フィルタは画像解析を使って ‘b’ と ‘p’ を選択します。
‘A’
キャプチャはフィールドフラグによって決定、転送は不明または変動。フィルタはフィールドフラグと画像解析を使って ‘t’、‘b’、‘p’ を選択します。フィールド情報が得られない場合は ‘U’ と同様に動作します。これが既定のモードです。
‘U’
キャプチャと転送の両方が不明または変動。フィルタは画像解析のみを使って ‘t’、‘b’、‘p’ を選択します。
11.192.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.193 photosensitivity
映像中のさまざまな閃光を低減し、てんかんを持つ利用者を助けます。
次のオプションを受け付けます。
frames, f
フィルタ処理に使うフレーム数を設定します。既定は30。
threshold, t
検出のしきい値係数を設定します。既定は1。低いほど厳しくなります。
skip
フレームをサンプリングする際にスキップするピクセル数を設定します。既定は1。許容範囲は1から1024。
bypass
フレームを変更せずに残します。既定は無効です。
11.194 pixdesctest
ピクセルフォーマット記述子のテストフィルタ。主に内部テストに有用です。出力映像は入力映像と等しくなるはずです。
例:
format=monow, pixdesctest
これは monowhite ピクセルフォーマット記述子の定義をテストするのに使えます。
11.195 pixelize
映像ストリームにピクセル化を適用します。
このフィルタは次のオプションを受け付けます。
width, w height, h
ピクセル化に使うブロックの寸法を設定します。既定値は 16。
mode, m
使用するピクセル化のモードを設定します。
指定できる値は次のとおり。
‘avg’ ‘min’ ‘max’
既定値は avg。
planes, p
フィルタ処理するプレーンを設定します。既定ではすべてのプレーンをフィルタ処理します。
11.195.1 Commands
このフィルタはすべてのオプションをコマンドとしてサポートします。
11.196 pixscope
各色チャンネルのサンプル値を表示します。主に色とレベルの確認に有用です。サポートする最小解像度は640x480。
このフィルタは次のオプションを受け付けます。
x
スコープのX位置を設定します。X軸上の相対オフセット。
y
スコープのY位置を設定します。Y軸上の相対オフセット。
w
スコープの幅を設定します。
h
スコープの高さを設定します。
o
ウィンドウの不透明度を設定します。このウィンドウはピクセル領域に関する統計も保持します。
wx
ウィンドウのX位置を設定します。X軸上の相対オフセット。
wy
ウィンドウのY位置を設定します。Y軸上の相対オフセット。
11.196.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.197 pp7
Postprocessing フィルタ7を適用します。これは spp フィルタの変種で、7点DCTを用いた spp = 6 に似ており、IDCT後に中央のサンプルだけを使用します。
このフィルタは次のオプションを受け付けます。
qp
一定の量子化パラメータを強制します。0から63の範囲の整数を受け付けます。設定しない場合、フィルタは(利用可能であれば)映像ストリームのQPを使用します。
mode
しきい値処理モードを設定します。利用可能なモードは次のとおり。
‘hard’
ハードしきい値処理を設定します。
‘soft’
ソフトしきい値処理を設定します(リンギング除去効果は良いが、おそらくよりぼやけます)。
‘medium’
中程度のしきい値処理を設定します(良好な結果、既定)。
11.198 premultiply
2番目のストリームの第1プレーンをアルファとして使い、入力映像ストリームにアルファ乗算済み(premultiply)効果を適用します。
両方のストリームは同じ寸法かつ同じピクセルフォーマットでなければなりません。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはコピーされます。既定値の 0xf では、すべてのプレーンが処理されます。
inplace
処理に2番目の入力を必要とせず、代わりに入力ストリームのアルファプレーンを使用します。
11.199 premultiply_dynamic
下流のフィルタグラフの要件に合わせて、必要に応じて入力映像ストリームを動的にアルファ乗算(premultiply)またはその逆(unpremultiply)します。これはおおよそ premultiply:inplace=yes または unpremultiply:inplace=yes のいずれか、あるいはそうでなければ何もしない処理に相当します。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはコピーされます。既定値の 0xf では、すべてのプレーンが処理されます。
11.200 prewitt
入力映像ストリームに Prewitt 演算子を適用します。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはコピーされます。既定値の 0xf では、すべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。
delta
フィルタ結果に加算する値を設定します。
11.200.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.201 pseudocolor
映像のフレーム色を擬似カラーで変更します。
このフィルタは次のオプションを受け付けます。
c0
ピクセルの第1成分の式を設定します。
c1
ピクセルの第2成分の式を設定します。
c2
ピクセルの第3成分の式を設定します。
c3
ピクセルの第4成分の式を設定します。アルファ成分に対応します。
index, i
色を変更する際の基準として使う成分を設定します。
preset, p
組み込みLUTの1つを選びます。既定では none に設定されます。
利用可能なLUT:
‘magma’ ‘inferno’ ‘plasma’ ‘viridis’ ‘turbo’ ‘cividis’ ‘range1’ ‘range2’ ‘shadows’ ‘highlights’ ‘solar’ ‘nominal’ ‘preferred’ ‘total’ ‘spectral’ ‘cool’ ‘heat’ ‘fiery’ ‘blues’ ‘green’ ‘helix’ opacity
出力色の不透明度を設定します。許容範囲は0から1。既定値は1に設定されます。
各式オプションは、対応するピクセル成分値のルックアップテーブルを計算するために使う式を指定します。
式には次の定数と関数を含めることができます。
w h
入力の幅と高さ。
val
ピクセル成分の入力値。
ymin, umin, vmin, amin
許容される成分値の最小値。
ymax, umax, vmax, amax
許容される成分値の最大値。
すべての式の既定値は "val"。
11.201.1 Commands
このフィルタは上記のすべてのオプションをコマンドとしてサポートします。
11.201.2 Examples
- 高すぎる輝度値をグラデーションに変えます。
pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
11.202 psnr
2つの入力映像間の平均・最大・最小のPSNR(Peak Signal to Noise Ratio、ピーク信号対雑音比)を求めます。
このフィルタは2つの入力映像を受け取ります。1つ目の入力は「メイン」ソースとみなされ、変更されずに出力へ渡されます。2つ目の入力はPSNRを計算するための「リファレンス」映像として使われます。
このフィルタが正しく動作するには、両方の映像入力が同じ解像度かつ同じピクセルフォーマットでなければなりません。また、両入力のフレーム数が同じであることを前提とし、それらを1つずつ比較します。
得られた平均PSNRはログシステムを通じて出力されます。
このフィルタは各フレームの累積MSE(平均二乗誤差)を保存し、処理の最後に全フレームで均等に平均し、次の式を適用してPSNRを求めます。
PSNR = 10*log10(MAX^2/MSE)
ここで MAX は画像の各成分の最大値の平均です。
受け付けるパラメータの説明を以下に示します。
stats_file, f
指定した場合、フィルタは各フレームのPSNRを保存するために名前付きファイルを使用します。ファイル名が "-" の場合、データは標準出力へ送られます。
stats_version
統計ファイル形式のどのバージョンを使うかを指定します。各形式の詳細は後述します。既定値は1。
output_max
最大値を統計ログに出力するかどうかを決めます。既定値は0。stats_version >= 2 が必要です。設定されていて stats_version < 2 の場合、フィルタはエラーを返します。
このフィルタは framesync オプションもサポートします。
stats_file を選択した場合に出力されるファイルには、比較した各フレームの組について key:value という形式のキー/値ペアの並びが含まれます。
1より大きい stats_version を指定した場合、フレームごとの組の統計の並びの前にヘッダ行が付き、次のパラメータでフレーム形式に続いてキー値ペアが並ぶ。
psnr_log_version
ログファイル形式のバージョン。stats_version に一致します。
fields
ログに含まれる、フレームごとの組のパラメータをカンマ区切りで並べたもの。
表示されるフレームごとの組の各パラメータの説明を以下に示す。
n
入力フレームの連番。1から始まる。
mse_avg
比較したフレームのピクセル単位の平均二乗誤差を、画像の全成分にわたって平均したもの。
mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
サフィックスで指定された成分について、比較したフレームのピクセル単位の平均二乗誤差。
psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
サフィックスで指定された成分について、比較したフレームのピーク信号対雑音比。
max_avg, max_y, max_u, max_v
各チャンネルで許容される最大値、および全チャンネルにわたる平均。
11.202.1 Examples
- 例:
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] psnr="stats_file=stats.log" [out]
この例では、処理対象の入力ファイルをリファレンスファイル ref_movie.mpg と比較します。各フレームのPSNRは stats.log に保存されます。
- 異なるコンテナを使った別の例:
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
11.203 pullup
プルダウン反転(逆テレシネ)フィルタ。ハードテレシネ、24000/1001 fps プログレッシブ、30000/1001 fps プログレッシブが混在したコンテンツを扱えます。
pullup フィルタは、判断を下す際に先のコンテキストを活用するように設計されています。このフィルタはパターンにロックして追従するという意味ではステートレスであり、代わりに後続のフィールドを先読みして一致を識別し、プログレッシブフレームを再構築します。
均一なフレームレートのコンテンツを生成するには、pullup の後に fps フィルタを挿入します。入力フレームレートが29.97fpsなら fps=24000/1001、30fpsと(まれな)テレシネされた25fps入力には fps=24 を使います。
このフィルタは次のオプションを受け付けます。
jl jr jt jb
これらのオプションは、画像の左・右・上・下でそれぞれ無視する「ジャンク」の量を設定します。左右は8ピクセル単位、上下は2ライン単位です。既定は各辺8ピクセル。
sb
厳格なブレーク(strict breaks)を設定します。このオプションを1にすると、フィルタが時折ミスマッチのフレームを生成する可能性が減るが、激しい動きのシーケンスで過剰な数のフレームがドロップされる原因にもなりえます。逆に -1 にすると、フィルタはフィールドをより容易に一致させます。これはフィールド間にわずかなぼかしがある映像の処理に役立つことがあるが、出力にインターレースフレームが生じる原因にもなりえます。既定値は 0。
mp
使用するメトリックプレーンを設定します。次の値を受け付けます。
‘l’
輝度プレーンを使用します。
‘u’
青クロマプレーンを使用します。
‘v’
赤クロマプレーンを使用します。
このオプションは、フィルタの計算に既定の輝度プレーンの代わりにクロマプレーンを使うように設定できます。これは非常にクリーンなソース素材では精度を向上させることがあるが、より高い確率で精度を低下させ、特にクロマノイズ(虹効果)やグレースケール映像がある場合はそうなります。mp をクロマプレーンに設定する主な目的は、CPU負荷を減らし、遅いマシンでも pullup をリアルタイムで使えるようにすることです。
(出力ファイルに重複フレームが生じない)最良の結果を得るには、出力フレームレートを変更する必要があります。たとえばNTSC入力を逆テレシネするには次のようにします。
ffmpeg -i input -vf pullup -r 24000/1001 ...
11.204 qp
映像の量子化パラメータ(QP)を変更します。
このフィルタは次のオプションを受け付けます。
qp
量子化パラメータを表す式を設定します。
式は eval API によって評価され、たとえば次のような定数を含めることができます。
known
index が 129 でなければ 1、それ以外は 0。
qp
-129 から 128 までの連番のインデックス。
11.204.1 Examples
- 次のような式を指定できます。
qp=2+2*sin(PI*qp)
11.205 qrencode
libqrencode ライブラリ(https://fukuchi.org/works/qrencode/ を参照)を使って QR コードを生成し、現在のフレームの上に重ねて表示します。
このフィルタをコンパイルして有効にするには、FFmpeg を --enable-libqrencode を指定して configure する必要があります。
QR コードは、与えられたテキストまたはテキストパターンから生成されます。生成された QR コードは、指定されたオプションに従って拡大縮小され、映像出力に重ね合わされます。
テキストが指定されていない場合は、QR コードは重ね合わされません。
このフィルタは次のオプションを受け付けます。
qrcode_width, q padded_qrcode_width, Q
描画する QR コードの幅を、パディングありとパディングなしのそれぞれについて式で指定します。qrcode_width の式は padded_qrcode_width の式で設定した値を参照でき、逆もまた可能です。既定では padded_qrcode_width は qrcode_width と同じ値に設定され、パディングはありません。
これらの式は新しいフレームごとに評価されます。
詳細は qrencode Expressions の節を参照してください。
x y
パディング付き QR コードの左上隅を配置する位置を式で指定します。x の式は y の式で設定した値を参照でき、逆もまた可能です。
既定では x と y は 0 に設定され、QR コードは入力の左上隅に配置されます。
これらの式は新しいフレームごとに評価されます。
詳細は qrencode Expressions の節を参照してください。
case_sensitive, cs
libqrencode に大文字小文字を区別したエンコードを使わせます。既定で有効です。QR エンコードのサイズを小さくするために無効にできます。
level, l
QR エンコードの誤り訂正レベルを指定します。訂正レベルを高くするとエンコードサイズは増えますが、コードは破損に対してより堅牢になります。最も低いレベルは L です。
次の値を受け付けます。
‘L’ ‘M’ ‘Q’ ‘H’ expansion
入力テキストをどのように展開するかを選択します。none または normal(既定)のいずれかを指定できます。詳細は後述の qrencode Text expansion の節を参照してください。
text textfile
描画するテキストを定義します。どちらも指定しない場合、QR はエンコードされません(色だけの空フレームになります)。
expansion が有効な場合、テキストは qrencode の展開機構を使ったテキストテンプレートとして扱われます。詳細は後述の qrencode Text expansion の節を参照してください。
background_color, bc foreground_color, fc
QR コードと背景の色を設定します。foreground_color の既定値は "black"、background_color の既定値は "white" です。
色オプションの構文については、ffmpeg-utils マニュアルの「Color」の節を参照してください。
11.205.1 qrencode Expressions
オプションで設定する式には、次の定数と関数を含めることができます。
dar
入力の表示アスペクト比。(w / h) * sar と同じです。
duration
現在のフレームの持続時間(秒)。
hsub vsub
水平・垂直のクロマサブサンプル値。たとえばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1 となります。
main_h, H
入力の高さ。
main_w, W
入力の幅。
n
入力フレームの番号。0 から始まります。
pict_type
ピクチャタイプを表す数値。
qr_w, w
エンコードされた QR コードの幅。
rendered_qr_w, q rendered_padded_qr_w, Q
描画された QR コードの幅。パディングなしとパディングあり。
これらのパラメータにより q と Q の式は互いを参照できるので、たとえば q=3/4*Q のように指定できます。
rand(min, max)
min と max の間の乱数を返します。
sar
入力のサンプルアスペクト比。
t
秒で表したタイムスタンプ。入力のタイムスタンプが不明な場合は NAN。
x y
テキストを描画する x・y のオフセット座標。
これらのパラメータにより x と y の式は互いを参照できるので、たとえば y=x/dar のように指定できます。
11.205.2 qrencode Text expansion
expansion が none に設定されている場合、テキストはそのまま出力されます。
expansion が normal(既定)に設定されている場合、次の展開機構が用いられます。
バックスラッシュ文字 ‘\’ に任意の文字が続くと、常に 2 文字目に展開されます。
%{...} の形式のシーケンスが展開されます。波括弧の間のテキストは関数名で、その後に ’:’ で区切られた引数が続く場合があります。引数に特殊文字や区切り文字(’:’ または ’}’)が含まれる場合は、エスケープする必要があります。
なお、それらはおそらくフィルタ引数文字列内の text オプションの値としても、フィルタグラフ記述内のフィルタ引数としてもエスケープが必要で、さらにシェル向けにもエスケープが必要になる場合があります。これは最大で 4 段階のエスケープになります。textfile オプションでテキストファイルを使えば、こうした問題を回避できます。
次の関数が利用できます。
n, frame_num
フレーム番号を返します。
pts
現在のフレームのプレゼンテーションタイムスタンプを返します。
最大 2 つの引数を取れます。
第 1 引数はタイムスタンプの形式で、既定は flt(マイクロ秒精度の小数で表した秒)。hms は ミリ秒精度でフォーマットした [-]HH:MM:SS.mmm のタイムスタンプ。gmtime はフレームのタイムスタンプを UTC 時刻でフォーマットしたもの、localtime はフレームのタイムスタンプをローカルタイムゾーンの時刻でフォーマットしたもの。形式を hms24hh に設定すると、時刻は 24 時間制(00〜23)でフォーマットされます。
第 2 引数はタイムスタンプに加算するオフセット。
形式が localtime または gmtime に設定されている場合、第 3 引数として strftime C 関数のフォーマット文字列を指定できます。既定では YYYY-MM-DD HH:MM:SS 形式が使われます。
expr, e
式の値を評価し、double として出力します。
評価する式を指定する引数を 1 つ取らなければなりません。qrencode_expressions で定義された定数と関数を受け付けます。
expr_formatted, ef
式の値を評価し、フォーマットした文字列として出力します。
第 1 引数は評価する式で、expr 関数と同じです。第 2 引数は出力形式を指定します。指定できる値は ‘x’、‘X’、‘d’、‘u’ です。これらは printf 関数とまったく同じように扱われます。第 3 引数は任意で、出力が占める桁数を設定します。左側をゼロでパディングするために使えます。
gmtime
フィルタが実行されている時刻を UTC で表したもの。引数として strftime C 関数のフォーマット文字列を取れます。フォーマット文字列は、秒の端数を任意指定の桁数で出力する変数 %[1-6]N をサポートするよう拡張されています。
localtime
フィルタが実行されている時刻をローカルタイムゾーンで表したもの。引数として strftime C 関数のフォーマット文字列を取れます。フォーマット文字列は、秒の端数を任意指定の桁数で出力する変数 %[1-6]N をサポートするよう拡張されています。
metadata
フレームのメタデータ。1 つまたは 2 つの引数を取ります。
第 1 引数は必須で、メタデータのキーを指定します。
第 2 引数は任意で、メタデータのキーが見つからないか空の場合に使う既定値を指定します。
利用可能なメタデータは、ffprobe -show_frames を実行して各フレームのセクションに出力される、TAG で始まるエントリを調べることで確認できます。
qrencode フィルタに至るまでのフィルタで生成された文字列メタデータも利用できます。
rand(min, max)
min と max の間の乱数を返します。
11.205.3 Examples
-
指定したテキストをエンコードした QR コードを既定のサイズで生成し、入力映像の左上隅に重ね合わせます。
qrencode=text=www.ffmpeg.org -
上と同じですが、ピンク地に青の色を選びます。
qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue -
QR コードを入力映像の右下隅に配置します。
qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q -
幅 200 ピクセルでパディング付きの QR コードを生成し、パディング後の幅を QR コード幅の 4/3 にします。
qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q -
パディング後の幅 200 ピクセルでパディング付きの QR コードを生成し、QR コード幅をパディング後の幅の 3/4 にします。
qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q -
QR コードを入力映像の幅の一定割合にします。
qrencode=text=www.ffmpeg.org:q=W/5 -
フレーム番号をエンコードした QR コードを生成します。
qrencode=text=%{n} -
GMT タイムスタンプをエンコードした QR コードを生成します。
qrencode=text=%{gmtime} -
浮動小数点として表したタイムスタンプをエンコードした QR コードを生成します。
qrencode=text=%{pts}
11.206 quirc
libquirc ライブラリ(https://github.com/dlbeer/quirc/ を参照)を使って QR コードを識別・デコードし、識別した QR コードの位置とペイロードをメタデータとして出力します。
このフィルタをコンパイルして有効にするには、FFmpeg を --enable-libquirc を指定して configure する必要があります。
入力映像内で見つかった各 QR コードについて、接頭辞 lavfi.quirc.N を付けたメタデータエントリがいくつか追加されます。N は QR コードに対応するインデックスで、0 から始まります。
各メタデータ値の説明は次のとおりです。
lavfi.quirc.count
見つかった QR コードの数。1 つも見つからなかった場合は設定されません。
lavfi.quirc.N.corner.M.x lavfi.quirc.N.coreer.M.y
QR コードを囲む正方形の 4 隅の x/y 位置。M は隅のインデックスで、0 から始まります。
lavfi.quirc.N.payload
QR コードのペイロード。
11.207 random
映像フレームを内部のフレームキャッシュからランダムな順序でフラッシュします。フレームは破棄されません。frei0r の nervous フィルタに着想を得ています。
frames
内部キャッシュのサイズをフレーム数で設定します。範囲は 2 から 512。既定は 30。
seed
乱数生成器のシードを設定します。0 から UINT32_MAX の間の整数でなければなりません。指定しない場合、または明示的に 0 未満に設定した場合、フィルタはベストエフォートで良いランダムシードを使おうとします。
11.208 readeia608
映像フレームの上端の行からクローズドキャプション(EIA-608)情報を読み取ります。
このフィルタは lavfi.readeia608.X.cc と lavfi.readeia608.X.line のフレームメタデータを追加します。X は EIA-608 データが識別された行の番号(0 から始まる)。各メタデータ値の説明は次のとおりです。
lavfi.readeia608.X.cc
EIA-608 データとして格納された 2 バイト(16 進数で出力される)。
lavfi.readeia608.X.line
EIA-608 データが識別され読み取られた行の番号。
このフィルタは次のオプションを受け付けます。
scan_min
EIA-608 データのスキャンを開始する行を設定します。既定は 0。
scan_max
EIA-608 データのスキャンを終了する行を設定します。既定は 29。
spw
同期コード検出のために確保する幅の割合を設定します。既定は 0.27。許容範囲は [0.1 - 0.7]。
chp
パリティビットのチェックを有効にします。パリティエラーが発生した場合、フィルタはその文字について 0x00 を出力します。既定は false。
lp
処理に先立って行にローパスフィルタをかけます。既定で有効です。
11.208.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.208.2 Examples
- プレゼンテーション時刻と、識別された EIA-608 キャプションデータの最初の 2 行を含む csv を出力します。
ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
11.209 readvitc
映像フレームの上端の行から垂直インターバルタイムコード(VITC)情報を読み取ります。
このフィルタは、有効なタイムコードが検出された場合に、そのタイムコード値をフレームメタデータキー lavfi.readvitc.tc_str に追加します。さらにメタデータキー lavfi.readvitc.found は、タイムコードデータが見つかったかどうかに応じて 0/1 に設定されます。
このフィルタは次のオプションを受け付けます。
scan_max
VITC データをスキャンする最大行数を設定します。値を -1 に設定すると映像フレーム全体がスキャンされます。既定は 45。
thr_b
黒のためのルマ閾値を設定します。範囲 [0.0,1.0] の浮動小数点数を受け付けます。既定値は 0.2。値は thr_w 以下でなければなりません。
thr_w
白のためのルマ閾値を設定します。範囲 [0.0,1.0] の浮動小数点数を受け付けます。既定値は 0.6。値は thr_b 以上でなければなりません。
11.209.1 Examples
- VITC データを検出して映像フレームに描画します。有効な VITC が検出されない場合は、プレースホルダとして
--:--:--:--を描画します。ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
11.210 remap
2 番目の Xmap と 3 番目の Ymap の入力映像ストリームを使ってピクセルを再マッピングします。
位置 (X, Y) の出力ピクセルは、ソースの (x, y) 位置から取り出されます。ここで x = Xmap(X, Y)、y = Ymap(X, Y)。マッピング値が範囲外の場合、出力ピクセルにはゼロ値が使われます。
Xmap と Ymap の入力映像ストリームは同じ寸法でなければなりません。出力映像ストリームは Xmap/Ymap 映像ストリームの寸法になります。Xmap と Ymap の入力映像ストリームは 16 ビット深度の単一チャンネルです。
format
このフィルタの出力のピクセルフォーマットを指定します。color または gray を指定できます。既定は color。
fill
マッピングされなかったピクセルの色を指定します。このオプションの構文については、ffmpeg-utils マニュアルの「Color」の節を参照してください。既定色は black。
11.211 removegrain
removegrain フィルタは、プログレッシブ映像のための空間的なノイズ除去フィルタです。
m0
第 1 プレーンのモードを設定します。
m1
第 2 プレーンのモードを設定します。
m2
第 3 プレーンのモードを設定します。
m3
第 4 プレーンのモードを設定します。
モードの範囲は 0 から 24。各モードの説明は次のとおりです。
0
入力プレーンを変更せずそのままにします。既定です。
1
8 つの近傍ピクセルの最小値と最大値でピクセルをクリップします。
2
8 つの近傍ピクセルの 2 番目の最小値と最大値でピクセルをクリップします。
3
8 つの近傍ピクセルの 3 番目の最小値と最大値でピクセルをクリップします。
4
8 つの近傍ピクセルの 4 番目の最小値と最大値でピクセルをクリップします。これはメディアンフィルタと等価です。
5
変化が最小になるライン感応型クリッピング。
6
ライン感応型クリッピング、中間。
7
ライン感応型クリッピング、中間。
8
ライン感応型クリッピング、中間。
9
近傍ピクセルが最も近い線上でのライン感応型クリッピング。
10
対象ピクセルを最も近い近傍ピクセルで置き換えます。
11
[1 2 1] の水平・垂直カーネルによるぼかし。
12
モード 11 と同じです。
13
Bob モード。近傍ピクセルが最も近い線からトップフィールドを補間します。
14
Bob モード。近傍ピクセルが最も近い線からボトムフィールドを補間します。
15
Bob モード。トップフィールドを補間します。モード 13 と同じですが、より複雑な補間式を用います。
16
Bob モード。ボトムフィールドを補間します。モード 14 と同じですが、より複雑な補間式を用います。
17
向かい合う近傍ピクセルの各組について、それぞれの最大値と最小値を取り、その最小値と最大値でピクセルをクリップします。
18
現在のピクセルからの最大距離が最小となる向かい合う近傍ピクセルを用いたライン感応型クリッピング。
19
ピクセルを 8 つの近傍ピクセルの平均で置き換えます。
20
9 ピクセルを平均します([1 1 1] の水平・垂直ぼかし)。
21
向かい合う近傍ピクセルの平均を使ってピクセルをクリップします。
22
モード 21 と同じですが、より単純で高速です。
23
小さなエッジとハローを除去しますが、効果はないとされます。
24
23 に類似しています。
11.212 removelogo
画像ファイルを使ってどのピクセルがロゴを構成しているかを判定し、テレビ局のロゴを抑制します。ロゴを構成するピクセルを近傍ピクセルで埋めることで動作します。
このフィルタは次のオプションを受け付けます。
filename, f
フィルタのビットマップファイルを設定します。libavformat が対応する任意の画像フォーマットを指定できます。画像ファイルの幅と高さは、処理対象の映像ストリームのものと一致しなければなりません。
与えられたビットマップ画像で値が 0 のピクセルはロゴの一部とみなされず、0 でないピクセルはロゴの一部とみなされます。ロゴに白(255)、それ以外に黒(0)を使えば安全です。フィルタのビットマップを作るには、ロゴが見える黒フレームのスクリーンキャプチャを撮り、threshold フィルタの後に erode フィルタを 1〜2 回かけるのがよいでしょう。
必要に応じて、小さな染みは手作業で修正できます。ロゴのピクセルがカバーされていないと、フィルタの品質が大きく低下することに留意してください。多すぎるピクセルをロゴの一部としてマークしてもそれほど害はありませんが、画像を覆うために必要なぼかしの量が増え、必要以上に情報が破壊されます。また余分なピクセルは、大きなロゴでは処理を遅くします。
11.213 repeatfields
このフィルタは Video ES ヘッダの repeat_field フラグを使い、その値に基づいてフィールドをハードリピートします。
11.214 reverse
映像クリップを逆再生します。
警告: このフィルタはクリップ全体をバッファリングするためのメモリを必要とするので、トリミングを推奨します。
11.214.1 Examples
- クリップの最初の 5 秒を取り出して逆再生します。
trim=end=5,reverse
11.215 rgbashift
R/G/B/A のピクセルを水平・垂直方向にシフトします。
このフィルタは次のオプションを受け付けます。
rh
赤を水平方向にシフトする量を設定します。
rv
赤を垂直方向にシフトする量を設定します。
gh
緑を水平方向にシフトする量を設定します。
gv
緑を垂直方向にシフトする量を設定します。
bh
青を水平方向にシフトする量を設定します。
bv
青を垂直方向にシフトする量を設定します。
ah
アルファを水平方向にシフトする量を設定します。
av
アルファを垂直方向にシフトする量を設定します。
edge
エッジモードを設定します。smear(既定)または warp を指定できます。
11.215.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.216 roberts
入力映像ストリームに Roberts クロス演算子を適用します。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはコピーされます。既定値 0xf ではすべてのプレーンが処理されます。
scale
フィルタ処理した結果に乗じる値を設定します。
delta
フィルタ処理した結果に加える値を設定します。
11.216.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.217 rotate
映像をラジアンで表した任意の角度だけ回転します。
このフィルタは次のオプションを受け付けます。
任意パラメータの説明は次のとおりです。
angle, a
入力映像を時計回りに回転する角度を、ラジアン数で表した式で設定します。負の値は反時計回りの回転になります。既定では "0" に設定されます。
この式はフレームごとに評価されます。
out_w, ow
出力幅の式を設定します。既定値は "iw"。この式は設定時に一度だけ評価されます。
out_h, oh
出力高さの式を設定します。既定値は "ih"。この式は設定時に一度だけ評価されます。
bilinear
1 に設定すると双線形補間を有効にし、0 にすると無効にします。既定値は 1。
fillcolor, c
回転後の画像で覆われない出力領域を埋める色を設定します。このオプションの一般的な構文については、ffmpeg-utils マニュアルの「Color」の節を参照してください。特別な値 "none" を選ぶと背景は描画されません(たとえば背景が決して表示されない場合に便利です)。
既定値は "black"。
角度と出力サイズの式には、次の定数と関数を含めることができます。
n
入力フレームの連番。0 から始まります。最初のフレームがフィルタ処理される前は常に NAN。
t
入力フレームの時刻(秒)。フィルタの設定時に 0 に設定されます。最初のフレームがフィルタ処理される前は常に NAN。
hsub vsub
水平・垂直のクロマサブサンプル値。たとえばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1 となります。
in_w, iw in_h, ih
入力映像の幅と高さ。
out_w, ow out_h, oh
出力の幅と高さ。これは width と height の式で指定された、パディング領域のサイズです。
rotw(a) roth(a)
入力映像を a ラジアンだけ回転したものを完全に収めるのに必要な最小の幅/高さ。
これらは out_w と out_h の式を計算するときにのみ利用できます。
11.217.1 Examples
-
入力を時計回りに PI/6 ラジアン回転します。
rotate=PI/6 -
入力を反時計回りに PI/6 ラジアン回転します。
rotate=-PI/6 -
入力を時計回りに 45 度回転します。
rotate=45*PI/180 -
周期 T で一定の回転を、角度 PI/3 から開始して適用します。
rotate=PI/3+2*PI*t/T -
入力映像の回転を、周期 T 秒・振幅 A ラジアンで振動させます。
rotate=A*sin(2*PI/T*t) -
映像を回転し、回転中の入力映像全体が常に完全に出力に収まるよう出力サイズを選びます。
rotate='2*PI*t:ow=hypot(iw,ih):oh=ow' -
映像を回転し、背景が決して表示されないよう出力サイズを小さくします。
rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
11.217.2 Commands
このフィルタは次のコマンドに対応しています。
a, angle
角度の式を設定します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、現在の値が維持されます。
11.218 sab
Shape Adaptive Blur(形状適応ぼかし)を適用します。
このフィルタは次のオプションを受け付けます。
luma_radius, lr
輝度のぼかしフィルタの強さを設定します。0.1〜4.0 の範囲の値で、既定値は 1.0 です。値を大きくするほど画像がぼけますが、処理は遅くなります。
luma_pre_filter_radius, lpfr
輝度のプリフィルタ半径を設定します。0.1〜2.0 の範囲の値で、既定値は 1.0 です。
luma_strength, ls
輝度において、なお考慮対象とするピクセル間の最大差を設定します。0.1〜100.0 の範囲の値で、既定値は 1.0 です。
chroma_radius, cr
クロマのぼかしフィルタの強さを設定します。-0.9〜4.0 の範囲の値です。値を大きくするほど画像がぼけますが、処理は遅くなります。
chroma_pre_filter_radius, cpfr
クロマのプリフィルタ半径を設定します。-0.9〜2.0 の範囲の値です。
chroma_strength, cs
クロマにおいて、なお考慮対象とするピクセル間の最大差を設定します。-0.9〜100.0 の範囲の値です。
各クロマオプションの値は、明示的に指定しなければ、対応する輝度オプションの値に設定されます。
11.219 scale
libswscale ライブラリを使って入力映像をスケール(リサイズ)します。
scale フィルタは、出力のサンプルアスペクト比を変更することで、出力の表示アスペクト比を入力と同じに保ちます。
入力画像のフォーマットが次のフィルタが要求するフォーマットと異なる場合、scale フィルタは入力を要求されたフォーマットに変換します。
11.219.1 Options
このフィルタは次のオプション、libswscale スケーラが対応する任意のオプション、および framesync オプションのいずれも受け付けます。
スケーラオプションの完全な一覧は (ffmpeg-scaler)ffmpeg-scaler マニュアル を参照してください。
width, w height, h
出力映像の寸法を表す式を設定します。既定値は入力の寸法です。
width または w の値が 0 の場合、出力には入力の幅が使われます。height または h の値が 0 の場合、出力には入力の高さが使われます。
いずれか一方だけが -n(n >= 1)の場合、scale フィルタは指定された他方の寸法から計算して入力画像のアスペクト比を保つ値を使います。ただしその後、計算された寸法が n で割り切れることを保証し、必要であれば値を調整します。
両方の値が -n(n >= 1)の場合の挙動は、前述のとおり両方を 0 に設定した場合と同じになります。
寸法の式で使える定数の一覧は後述します。
eval
width と height の式をいつ評価するかを指定します。次の値を受け付けます。
‘init’
フィルタの初期化時、またはコマンドが処理されたときに一度だけ式を評価します。
‘frame’
入力フレームごとに式を評価します。
既定値は ‘init’ です。
interl
インターレースモードを設定します。次の値を受け付けます。
‘1’
インターレースを考慮したスケーリングを強制します。
‘0’
インターレースを考慮したスケーリングを行いません。
‘-1’
ソースフレームがインターレースとしてフラグ付けされているかどうかに応じて、インターレースを考慮したスケーリングを選択します。
既定値は ‘0’ です。
flags
libswscale のスケーリングフラグを設定します。値の完全な一覧は (ffmpeg-scaler)ffmpeg-scaler マニュアル を参照してください。明示的に指定しなければ、フィルタは既定のフラグを適用します。
param0, param1
パラメータを必要とするスケーリングアルゴリズム向けに、libswscale の入力パラメータを設定します。完全なドキュメントは (ffmpeg-scaler)ffmpeg-scaler マニュアル を参照してください。明示的に指定しなければ、フィルタは空のパラメータを適用します。
intent
異なる色空間の間で変換する際に使う ICC レンダリングインテントを設定します。次の値を受け付けます。
‘perceptual’
知覚的に誘導されたトーンおよびガマットのマッピングカーブを使います。使用されるマッピングの詳細はいつ変わるか分からないため、安定したものとして依存すべきではありません。このインテントは、一般的な視聴環境で画像・映像コンテンツを最終的に視聴する用途に推奨されます。
‘relative_colorimetric’
ガマット外の色を、測色的に最も近いガマット内の色を見つけようとする測色クリッピングカーブを使って静的にクリップします。このインテントはホワイトポイント適応とブラックポイント適応を行います。これが既定値です。このインテントは、クリッピングを伴ってでも忠実な色再現が何よりも重要な場面で推奨されます。
‘absolute_colorimetric’
ガマット外の色を、ホワイトポイントやブラックポイントの再現を試みずにハードクリップします。このインテントは、出力ディスプレイが適切にキャリブレーションされていることを前提に、ガマット内の色をリファレンスディスプレイでの見え方どおりに出力ディスプレイ上に 1:1 で再現します。
‘saturation’
彩度マッピングを行います。つまり、入力の色域を出力の色域へ直接引き伸ばし、元の信号の見た目をできる限り保つ非線形な方法で行います。このインテントはクリッピングを引き起こさないため、信号コンテンツの評価用途に推奨されます。これは色のマッピングを一切行わない場合とおおむね同等ですが、マスタリングディスプレイの原色やエンコードの TRC の違いは依然として考慮されます。
size, s
映像サイズを設定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクション を確認してください。
in_color_matrix out_color_matrix
入出力の YCbCr 色空間の種類を設定します。
これにより、自動検出された値を上書きできるほか、出力およびエンコーダに使う特定の値を強制できます。
指定しない場合、色空間の種類は pixel format に依存します。
指定できる値:
‘auto’
自動的に選択します。
‘bt709’
国際電気通信連合(ITU)勧告 BT.709 に準拠するフォーマットです。
‘fcc’
アメリカ連邦通信委員会(FCC)連邦規則集(CFR)Title 47(2003)73.682(a) に準拠する色空間を設定します。
‘bt601’ ‘bt470’ ‘smpte170m’
次に準拠する色空間を設定します。
- ITU 無線通信部門(ITU-R)勧告 BT.601
- ITU-R Rec. BT.470-6(1998)Systems B、B1、G
- 米国映画テレビ技術者協会(SMPTE)ST 170:2004
‘smpte240m’
SMPTE ST 240:1999 に準拠する色空間を設定します。
‘bt2020’
ITU-R BT.2020 非定輝度方式に準拠する色空間を設定します。
in_range out_range
入出力の YCbCr サンプルレンジを設定します。
これにより、自動検出された値を上書きできるほか、出力およびエンコーダに使う特定の値を強制できます。指定しない場合、レンジは pixel format に依存します。指定できる値:
‘auto/unknown’
自動的に選択します。
‘jpeg/full/pc’
フルレンジ(8bit 輝度の場合 0〜255)を設定します。
‘mpeg/limited/tv’
「MPEG」レンジ(8bit 輝度の場合 16〜235)を設定します。
in_chroma_loc out_chroma_loc
入出力のクロマサンプル位置を設定します。指定しない場合、既定では中央配置のクロマが使われます。指定できる値:
‘auto, unknown’ ‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ in_primaries out_primaries
入出力の RGB 原色を設定します。
これにより、自動検出された値を上書きできるほか、出力およびエンコーダに使う特定の値を強制できます。指定できる値:
‘auto’
自動的に選択します。これが既定値です。
‘bt709’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘film’ ‘bt2020’ ‘smpte428’ ‘smpte431’ ‘smpte432’ ‘jedec-p22’ ‘ebu3213’ in_transfer out_transfer
入出力の伝達特性カーブ(TRC)を設定します。
これにより、自動検出された値を上書きできるほか、出力およびエンコーダに使う特定の値を強制できます。指定できる値:
‘auto’
自動的に選択します。これが既定値です。
‘bt709’ ‘bt470m’ ‘gamma22’ ‘bt470bg’ ‘gamma28’ ‘smpte170m’ ‘smpte240m’ ‘linear’ ‘iec61966-2-1’ ‘srgb’ ‘iec61966-2-4’ ‘xvycc’ ‘bt1361e’ ‘bt2020-10’ ‘bt2020-12’ ‘smpte2084’ ‘smpte428’ ‘arib-std-b67’ force_original_aspect_ratio
元のアスペクト比を保つために、必要であれば出力映像の幅または高さを減少または増加させます。指定できる値:
‘disable’
指定どおりに映像をスケールし、この機能を無効にします。
‘decrease’
必要に応じて出力映像の寸法を自動的に減少させます。
‘increase’
必要に応じて出力映像の寸法を自動的に増加させます。
このオプションの便利な使い方の一つとして、特定のデバイスで許可される最大解像度が分かっている場合、アスペクト比を保ったまま出力映像をその範囲に収めるよう制限できます。たとえば、デバイス A が 1280x720 の再生を許可し、映像が 1920x800 だとします。このオプションを使い(decrease に設定し)コマンドラインに 1280x720 を指定すると、出力は 1280x533 になります。
これは w や h に -1 を指定するのとは別物である点に注意してください。このオプションを機能させるには、依然として出力解像度を指定する必要があります。
force_divisible_by
force_original_aspect_ratio と併用したときに、出力の幅と高さの両方が指定した整数で割り切れることを保証します。これは w と h のオプションで -n を使うのと同様に働きます。
このオプションは force_original_aspect_ratio に設定された値を尊重し、それに応じて解像度を増加または減少させます。映像のアスペクト比はわずかに変更される場合があります。
このオプションは、force_original_aspect_ratio を使って映像を所定の解像度に収めたり超えさせたりしつつ、エンコーダの幅・高さの割り切れ制限も満たす必要がある場合に便利です。
reset_sar
このオプションを有効にすると、出力 SAR が 1 にリセットされます。さらに、width または height の式(例: w=-4:h=360 や w=iw/2:h=-1)を通じて、あるいは force_original_aspect_ratio を有効にして比例スケーリングを要求した場合、入力 DAR が考慮され、正方ピクセルを生成するよう出力がスケールされます。既定値は false です。
w および h オプションの値は、次の定数を含む式です。
in_w in_h
入力の幅と高さ。
iw ih
in_w および in_h と同じです。
out_w out_h
出力(スケール後)の幅と高さ。
ow oh
out_w および out_h と同じです。
a
iw / ih と同じです。
sar
入力のサンプルアスペクト比。
dar
入力の表示アスペクト比。(iw / ih) * sar から計算されます。
hsub vsub
入力クロマの水平・垂直サブサンプル値。たとえば pixel format「yuv422p」では hsub が 2、vsub が 1 です。
ohsub ovsub
出力クロマの水平・垂直サブサンプル値。たとえば pixel format「yuv422p」では hsub が 2、vsub が 1 です。
n
入力フレームの(連番の)番号で、0 から始まります。eval=frame のときのみ利用できます。
t
入力フレームの presentation timestamp で、秒数として表されます。eval=frame のときのみ利用できます。
pos
入力ストリーム内におけるフレームの位置(バイトオフセット)。この情報が利用できない、または意味を持たない場合(たとえば合成映像の場合)は NaN になります。eval=frame のときのみ利用できます。非推奨であり、使用しないでください。
ref_w, rw ref_h, rh ref_a ref_dar, rdar ref_n ref_t ref_pos
上記と同等ですが、2 つ目のリファレンス入力に対するものです。これらの変数のいずれかが存在する場合、このフィルタは 2 つの入力を受け付けます。
11.219.2 Examples
- 入力映像を 200x100 のサイズにスケールします。
scale=w=200:h=100
次と同等です。
scale=200:100
または:
scale=200x100
- 出力サイズにサイズの略称を指定します。
scale=qcif
これは次のようにも書けます。
scale=size=qcif
-
入力を 2 倍にスケールします。
scale=w=2*iw:h=2*ih -
上記は次と同じです。
scale=2*in_w:2*in_h -
インターレーススケーリングを強制して入力を 2 倍にスケールします。
scale=2*iw:2*ih:interl=1 -
入力を半分のサイズにスケールします。
scale=w=iw/2:h=ih/2 -
幅を増やし、高さを同じサイズに設定します。
scale=3/2*iw:ow -
ギリシャ的な調和を求めて:
scale=iw:1/PHI*iw scale=ih*PHI:ih -
高さを増やし、幅を高さの 3/2 に設定します。
scale=w=3/2*oh:h=3/5*ih -
サイズを増やし、サイズをクロマサブサンプル値の倍数にします。
scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub" -
入力と同じアスペクト比を保ちつつ、幅を最大 500 ピクセルまで増やします。
scale=w='min(500\, iw*3/2):h=-1' -
scale と setsar を組み合わせてピクセルを正方形にします。
scale='trunc(ih*dar):ih',setsar=1/1 -
reset_sar を使ってピクセルを正方形にし、結果の解像度が偶数になるようにします(一部のコーデックで必要)。
scale='-2:ih-mod(ih,2):reset_sar=1' -
指定どおりに正確にスケールしつつ、SAR を 1 にリセットします。
scale='400:300:reset_sar=1' -
入力 SAR を保ちつつ、400x300 に収まる偶数の寸法にスケールします。
scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2' -
400x300 に収まり、偶数の寸法で正方ピクセルになるようにスケールします。
scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1' -
字幕ストリーム(sub)を、オーバーレイ前にメイン映像(main)のサイズに合わせてスケールします("scale2ref")。
'[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay' -
ロゴを映像の高さの 1/10 にスケールしつつ、その表示アスペクト比を保ちます。
[logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
11.219.3 Commands
このフィルタは次のコマンドに対応しています。
width, w height, h
出力映像の寸法を表す式を設定します。コマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、現在の値が維持されます。
11.220 scharr
入力映像ストリームに scharr 演算子を適用します。
このフィルタは次のオプションを受け付けます。
planes
処理する平面を設定します。処理されない平面はコピーされます。既定値は 0xf で、すべての平面が処理されます。
scale
フィルタ処理結果に乗算する値を設定します。
delta
フィルタ処理結果に加算する値を設定します。
11.220.1 Commands
このフィルタは上記すべてのオプションをコマンドとして対応しています。
11.221 scroll
入力映像を一定速度で水平方向・垂直方向にスクロールします。
このフィルタは次のオプションを受け付けます。
horizontal, h
水平方向のスクロール速度を設定します。既定値は 0 です。許容範囲は -1〜1 です。負の値はスクロール方向を反転します。
vertical, v
垂直方向のスクロール速度を設定します。既定値は 0 です。許容範囲は -1〜1 です。負の値はスクロール方向を反転します。
hpos
水平方向の初期スクロール位置を設定します。既定値は 0 です。許容範囲は 0〜1 です。
vpos
垂直方向の初期スクロール位置を設定します。既定値は 0 です。許容範囲は 0〜1 です。
11.221.1 Commands
このフィルタは次のコマンドに対応しています。
horizontal, h
水平方向のスクロール速度を設定します。
vertical, v
垂直方向のスクロール速度を設定します。
11.222 scdet
映像のシーンチェンジを検出します。
このフィルタは、フレーム間の mafd とシーンスコアをフレームのメタデータに設定し、フレームを次のフィルタへ転送します。これにより、後続のフィルタがこれらのメタデータを使ってシーンチェンジなどを検出できます。
加えて、しきい値によってシーンチェンジを検出した際には、メッセージをログに記録し、フレームのメタデータを設定します。
lavfi.scd.mafd メタデータキーには、すべてのフレームについて mafd が設定されます。
lavfi.scd.score メタデータキーには、シーンチェンジ検出のために、すべてのフレームについてシーンチェンジスコアが設定されます。
lavfi.scd.time メタデータキーには、しきい値でシーンチェンジを検出した、現在フィルタ処理中のフレームの時刻が設定されます。
このフィルタは次のオプションを受け付けます。
threshold, t
シーンチェンジ検出のしきい値を、最大変化量に対する割合(パーセント)で設定します。適切な値は [8.0, 14.0] の範囲です。threshold の範囲は [0., 100.] です。
既定値は 10. です。
sc_pass, s
シーンチェンジのフレームを次のフィルタへ渡すフラグを設定します。既定値は 0 です。シーンチェンジのフレームだけをスナップショットとして取得したい場合に有効にできます。
11.223 selectivecolor
特定の色域(「reds」「yellows」「greens」「cyans」など)に対して、シアン・マゼンタ・イエロー・ブラック(CMYK)を調整します。調整対象の範囲は色の「純度」(つまりすでにどれだけ彩度が高いか)によって定義されます。
このフィルタは Adobe Photoshop の「特定色域の選択」ツールに似ています。
このフィルタは次のオプションを受け付けます。
correction_method
色補正の方式を選択します。
利用できる値:
‘absolute’
指定した調整値を「そのまま」適用します(元のピクセル成分値に加算・減算されます)。
‘relative’
指定した調整値を、元の成分値に対する相対値として扱います。
既定値は absolute です。
reds
赤系ピクセル(赤成分が最大のピクセル)に対する調整。
yellows
黄系ピクセル(青成分が最小のピクセル)に対する調整。
greens
緑系ピクセル(緑成分が最大のピクセル)に対する調整。
cyans
シアン系ピクセル(赤成分が最小のピクセル)に対する調整。
blues
青系ピクセル(青成分が最大のピクセル)に対する調整。
magentas
マゼンタ系ピクセル(緑成分が最小のピクセル)に対する調整。
whites
白系ピクセル(すべての成分が 128 より大きいピクセル)に対する調整。
neutrals
純粋な黒と純粋な白を除くすべてのピクセルに対する調整。
blacks
黒系ピクセル(すべての成分が 128 より小さいピクセル)に対する調整。
psfile
設定を読み込む Photoshop の特定色域の選択ファイル(.asv)を指定します。
すべての調整設定(reds、yellows など)は、空白区切りで最大 4 個の浮動小数点の調整値を [-1,1] の範囲で受け付けます。これらはそれぞれ、その色域のピクセルに対するシアン・マゼンタ・イエロー・ブラックの量を調整します。
11.223.1 Examples
-
すべての緑系の領域でシアンを 50% 増やしイエローを 33% 減らし、青系の領域でマゼンタを 27% 増やします。
selectivecolor=greens=.5 0 -.33 0:blues=0 .27 -
Photoshop の特定色域の選択プリセットを使います。
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
11.224 separatefields
separatefields は、フレームベースの映像入力を受け取り、各フレームをその構成フィールドに分割して、半分の高さで 2 倍のフレームレートかつ 2 倍のフレーム数を持つ新しいクリップを生成します。
このフィルタは、フレーム内のフィールド優先順位(field-dominance)情報を使って、各フィールドの組のどちらを出力で先に配置するかを決定します。判定が誤る場合は、separatefields フィルタの前に setfield フィルタを使ってください。
11.225 setdar, setsar
setdar フィルタは、フィルタの出力映像の表示アスペクト比(Display Aspect Ratio)を設定します。
これは、次の式に従って、指定されたサンプル(別名ピクセル)アスペクト比を変更することで行われます。
DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR
setdar フィルタは映像フレームのピクセル寸法を変更しない点に注意してください。また、このフィルタで設定した表示アスペクト比は、フィルタチェイン内の後続のフィルタによって変更される場合があります(たとえばスケーリングが行われる場合や、別の「setdar」または「setsar」フィルタが適用される場合)。
setsar フィルタは、フィルタの出力映像のサンプル(別名ピクセル)アスペクト比を設定します。
このフィルタを適用した結果として、上記の式に従って出力の表示アスペクト比が変化する点に注意してください。
setsar フィルタで設定したサンプルアスペクト比は、フィルタチェイン内の後続のフィルタによって変更される場合があります(たとえば別の「setsar」または「setdar」フィルタが適用される場合)。
このフィルタは次のパラメータを受け付けます。
r, ratio, dar (setdar only), sar (setsar only)
フィルタが使うアスペクト比を設定します。
パラメータは浮動小数点数の文字列、または式を指定できます。パラメータを指定しない場合は値「0」が仮定され、入力と同じ値が使われることを意味します。
max
表現されたアスペクト比を有理数に約分する際に、分子と分母を表すために使う最大の整数値を設定します。既定値は 100 です。
パラメータ sar は、次の定数を含む式です。
w, h
入力の幅と高さ。
a
w / h と同じです。
sar
入力のサンプルアスペクト比。
dar
入力の表示アスペクト比。(w / h) * sar と同じです。
hsub, vsub
クロマの水平・垂直サブサンプル値。たとえば pixel format「yuv422p」では hsub が 2、vsub が 1 です。
11.225.1 Examples
-
表示アスペクト比を 16:9 に変更するには、次のいずれかを指定します。
setdar=dar=1.77777 setdar=dar=16/9 -
サンプルアスペクト比を 10:11 に変更するには、次を指定します。
setsar=sar=10/11 -
表示アスペクト比を 16:9 に設定し、アスペクト比の約分で使う最大整数値を 1000 に指定するには、次のコマンドを使います。
setdar=ratio=16/9:max=1000
11.226 setfield
出力する映像フレームのフィールドを強制します。
setfield フィルタは、出力フレームにインターレースのフィールド種別を表すマークを付けます。入力フレーム自体は変更せず、対応するプロパティを設定するだけですが、これは後続のフィルタ(fieldorder や yadif など)がそのフレームをどう扱うかに影響します。
このフィルタは次のオプションを受け付けます。
mode
指定できる値は次のとおりです。
‘auto’
フィールドのプロパティをそのまま保持します。
‘bff’
フレームをボトムフィールドファーストとしてマークします。
‘tff’
フレームをトップフィールドファーストとしてマークします。
‘prog’
フレームをプログレッシブとしてマークします。
11.227 setparams
出力する映像フレームのパラメータを強制します。
setparams フィルタは、出力フレームにインターレースと色域(color range)のマークを付けます。入力フレーム自体は変更せず、対応するプロパティを設定するだけですが、これはフィルタやエンコーダがそのフレームをどう扱うかに影響します。
field_mode
指定できる値は次のとおりです。
‘auto’
フィールドのプロパティをそのまま保持します(既定値)。
‘bff’
フレームをボトムフィールドファーストとしてマークします。
‘tff’
フレームをトップフィールドファーストとしてマークします。
‘prog’
フレームをプログレッシブとしてマークします。
range
指定できる値は次のとおりです。
‘auto’
色域のプロパティをそのまま保持します(既定値)。
‘unspecified, unknown’
フレームを色域未指定としてマークします。
‘limited, tv, mpeg’
フレームを制限レンジ(limited range)としてマークします。
‘full, pc, jpeg’
フレームをフルレンジ(full range)としてマークします。
color_primaries
色原色(color primaries)を設定します。指定できる値は次のとおりです。
‘auto’
色原色のプロパティをそのまま保持します(既定値)。
‘bt709’ ‘unknown’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘film’ ‘bt2020’ ‘smpte428’ ‘smpte431’ ‘smpte432’ ‘jedec-p22’ color_trc
色伝達特性(color transfer)を設定します。指定できる値は次のとおりです。
‘auto’
color trc のプロパティをそのまま保持します(既定値)。
‘bt709’ ‘unknown’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘linear’ ‘log100’ ‘log316’ ‘iec61966-2-4’ ‘bt1361e’ ‘iec61966-2-1’ ‘bt2020-10’ ‘bt2020-12’ ‘smpte2084’ ‘smpte428’ ‘arib-std-b67’ colorspace
色空間を設定します。指定できる値は次のとおりです。
‘auto’
色空間のプロパティをそのまま保持します(既定値)。
‘gbr’ ‘bt709’ ‘unknown’ ‘fcc’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘ycgco’ ‘bt2020nc’ ‘bt2020c’ ‘smpte2085’ ‘chroma-derived-nc’ ‘chroma-derived-c’ ‘ictcp’ chroma_location
クロマサンプルの位置を設定します。指定できる値は次のとおりです。
‘auto’
クロマ位置をそのまま保持します(既定値)。
‘unspecified, unknown’ ‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ alpha_mode
アルファモードを設定します。指定できる値は次のとおりです。
‘auto’
アルファモードをそのまま保持します(既定値)。
‘unspecified, unknown’ ‘premultiplied’ ‘straight’
11.228 shear
入力映像にせん断(shear)変換を適用します。
このフィルタは次のオプションをサポートします。
shx
X 方向のせん断係数です。既定値は 0 です。指定できる範囲は -2 から 2 までです。
shy
Y 方向のせん断係数です。既定値は 0 です。指定できる範囲は -2 から 2 までです。
fillcolor, c
変換後の映像で覆われない出力領域を塗りつぶす色を設定します。このオプションの一般的な構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」節を参照してください。特別な値 "none" を指定すると背景は描画されません(たとえば背景がまったく表示されない場合に便利です)。
既定値は "black" です。
interp
補間の種類を設定します。bilinear または nearest を指定できます。既定は bilinear です。
11.228.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.229 showinfo
入力映像フレームごとに各種情報を含む 1 行を表示します。入力映像は変更されません。
このフィルタは次のオプションをサポートします。
checksum
各プレーンのチェックサムを計算します。既定で有効です。
udu_sei_as_ascii
ユーザーデータ未登録 SEI を、可能なら ASCII 文字として、そうでなければ 16 進形式で表示しようとします。
表示される行は key:value の形式のキー/値のペアの並びになっています。
出力には次の値が表示されます。
n
入力フレームの(連番の)番号です。0 から始まります。
pts
入力フレームの Presentation TimeStamp。時間基準(time base)単位の数値で表されます。時間基準単位はフィルタの入力パッドに依存します。
pts_time
入力フレームの Presentation TimeStamp。秒数で表されます。
fmt
pixel format の名前です。
sar
入力フレームのサンプルアスペクト比です。num/den の形式で表されます。
s
入力フレームのサイズ。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」節を参照してください。
i
インターレースモードの種別("P" は "progressive"、"T" はトップフィールドファースト、"B" はボトムフィールドファースト)です。
iskey
フレームがキーフレームなら 1、そうでなければ 0 です。
type
入力フレームのピクチャ種別("I" は I フレーム、"P" は P フレーム、"B" は B フレーム、"?" は不明な種別)です。あわせて libavutil/avutil.h で定義されている AVPictureType 列挙型と av_get_picture_type_char 関数のドキュメントも参照してください。
checksum
入力フレームの全プレーンの Adler-32 チェックサム(16 進で表示)です。
plane_checksum
入力フレームの各プレーンの Adler-32 チェックサム(16 進で表示)です。"[c0 c1 c2 c3]" の形式で表されます。
mean
入力フレームの各プレーンにおける画素の平均値です。"[mean0 mean1 mean2 mean3]" の形式で表されます。
stdev
入力フレームの各プレーンにおける画素値の標準偏差です。"[stdev0 stdev1 stdev2 stdev3]" の形式で表されます。
11.230 showpalette
各フレームの 256 色のパレットを表示します。このフィルタは pal8 pixel format のフレームにのみ意味があります。
次のオプションを受け付けます。
s
パレットの 1 色分のエントリを表す枠のサイズを設定します。既定は 30(30x30 ピクセルの枠)です。
11.231 shuffleframes
映像フレームの並べ替え、複製、削除のいずれか(または複数)を行います。
次のパラメータを受け付けます。
mapping
入力フレームの出力先インデックスを設定します。これはスペースまたは ’|’ で区切られたインデックスのリストで、入力フレームを出力フレームに対応づけます。インデックスの個数は各インデックスが取り得る最大値も定めます。’-1’ のインデックスには特別な意味があり、フレームの削除を表します。
最初のフレームのインデックスは 0 です。既定では入力をそのまま保持します。
11.231.1 Examples
-
入力の 3 フレームごとに 2 番目と 3 番目のフレームを入れ替えます。
ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT -
入力の 10 フレームごとに 10 番目と 1 番目のフレームを入れ替えます。
ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
11.232 shufflepixels
映像フレーム内の画素を並べ替えます。
このフィルタは次のオプションを受け付けます。
direction, d
シャッフルの方向を設定します。順方向(forward)または逆方向(inverse)を指定できます。既定の方向は順方向です。
mode, m
シャッフルのモードを設定します。水平(horizontal)、垂直(vertical)、ブロック(block)のいずれかを指定できます。
width, w height, h
シャッフルの block_size を設定します。水平シャッフルモードではサイズの width 部分のみが使われ、垂直シャッフルモードでは height 部分のみが使われます。
seed, s
画素のシャッフルに用いる乱数シードを設定します。主に、フィルタ処理を逆にして元の入力を取り戻せるようにするために設定すると便利です。たとえば順方向シャッフルを元に戻すには、同じパラメータとまったく同じシードを使い、direction を inverse に設定する必要があります。
11.233 shuffleplanes
映像プレーンの並べ替えと複製のいずれか(または両方)を行います。
次のパラメータを受け付けます。
map0
1 番目の出力プレーンとして使う入力プレーンのインデックスです。
map1
2 番目の出力プレーンとして使う入力プレーンのインデックスです。
map2
3 番目の出力プレーンとして使う入力プレーンのインデックスです。
map3
4 番目の出力プレーンとして使う入力プレーンのインデックスです。
最初のプレーンのインデックスは 0 です。既定では入力をそのまま保持します。
11.233.1 Examples
- 入力の 2 番目と 3 番目のプレーンを入れ替えます。
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
11.234 signalstats
アナログ映像メディアのデジタル化に関連する問題を判定する際に役立つ、さまざまな視覚的指標を評価します。
既定では、フィルタは次のメタデータ値をログ出力します。
YMIN
入力フレームに含まれる最小の Y 値を表示します。範囲は [0-255] です。
YLOW
入力フレーム内で 10% パーセンタイルにあたる Y 値を表示します。範囲は [0-255] です。
YAVG
入力フレーム内の平均 Y 値を表示します。範囲は [0-255] です。
YHIGH
入力フレーム内で 90% パーセンタイルにあたる Y 値を表示します。範囲は [0-255] です。
YMAX
入力フレームに含まれる最大の Y 値を表示します。範囲は [0-255] です。
UMIN
入力フレームに含まれる最小の U 値を表示します。範囲は [0-255] です。
ULOW
入力フレーム内で 10% パーセンタイルにあたる U 値を表示します。範囲は [0-255] です。
UAVG
入力フレーム内の平均 U 値を表示します。範囲は [0-255] です。
UHIGH
入力フレーム内で 90% パーセンタイルにあたる U 値を表示します。範囲は [0-255] です。
UMAX
入力フレームに含まれる最大の U 値を表示します。範囲は [0-255] です。
VMIN
入力フレームに含まれる最小の V 値を表示します。範囲は [0-255] です。
VLOW
入力フレーム内で 10% パーセンタイルにあたる V 値を表示します。範囲は [0-255] です。
VAVG
入力フレーム内の平均 V 値を表示します。範囲は [0-255] です。
VHIGH
入力フレーム内で 90% パーセンタイルにあたる V 値を表示します。範囲は [0-255] です。
VMAX
入力フレームに含まれる最大の V 値を表示します。範囲は [0-255] です。
SATMIN
入力フレームに含まれる最小の彩度値を表示します。範囲は [0-~181.02] です。
SATLOW
入力フレーム内で 10% パーセンタイルにあたる彩度値を表示します。範囲は [0-~181.02] です。
SATAVG
入力フレーム内の平均彩度値を表示します。範囲は [0-~181.02] です。
SATHIGH
入力フレーム内で 90% パーセンタイルにあたる彩度値を表示します。範囲は [0-~181.02] です。
SATMAX
入力フレームに含まれる最大の彩度値を表示します。範囲は [0-~181.02] です。
HUEMED
入力フレーム内の色相の中央値を表示します。範囲は [0-360] です。
HUEAVG
入力フレーム内の色相の平均値を表示します。範囲は [0-360] です。
YDIF
現在のフレームの Y プレーンの全値と、直前の入力フレームの対応する値との間のサンプル値の差の平均を表示します。範囲は [0-255] です。
UDIF
現在のフレームの U プレーンの全値と、直前の入力フレームの対応する値との間のサンプル値の差の平均を表示します。範囲は [0-255] です。
VDIF
現在のフレームの V プレーンの全値と、直前の入力フレームの対応する値との間のサンプル値の差の平均を表示します。範囲は [0-255] です。
YBITDEPTH
現在のフレームの Y プレーンのビット深度を表示します。範囲は [0-16] です。
UBITDEPTH
現在のフレームの U プレーンのビット深度を表示します。範囲は [0-16] です。
VBITDEPTH
現在のフレームの V プレーンのビット深度を表示します。範囲は [0-16] です。
このフィルタは次のオプションを受け付けます。
stat out
stat は画像解析の追加の形式を指定します。out は指定した種類の画素を強調表示した映像を出力します。
どちらのオプションも次の値を受け付けます。
‘tout’
時間的外れ値(temporal outlier)の画素を特定します。時間的外れ値とは、同じフィールド内の隣接する画素と異なる画素のことです。時間的外れ値の例としては、映像ドロップアウト、ヘッドの目詰まり、テープのトラッキング不良の結果などが挙げられます。
‘vrep’
垂直ライン反復(vertical line repetition)を特定します。垂直ライン反復とは、フレーム内に類似した画素の行があることを指します。生まれながらのデジタル映像(born-digital video)では垂直ライン反復はよく見られますが、アナログソースをデジタル化した映像ではこのパターンは珍しいです。アナログソースのデジタル化で生じた映像に現れる場合、ドロップアウト補償器によるコンシールメントを示している可能性があります。
‘brng’
正規の放送レンジ(legal broadcast range)の外にある画素を特定します。
color, c
out オプションの強調表示色を設定します。既定の色は黄色です。
11.234.1 Examples
-
各種の映像指標のデータを出力します。
ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames -
フレームごとに Y プレーンの最小値と最大値に関する特定のデータを出力します。
ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN -
放送レンジ外の画素を赤で強調表示しながら映像を再生します。
ffplay example.mov -vf signalstats="out=brng:color=red" -
signalstats のメタデータをフレーム上に描画しながら映像を再生します。
ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
コマンドで使われている signalstat_drawtext.txt の内容は次のとおりです。
time %{pts:hms}
Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
11.235 signature
MPEG-7 Video Signature を計算します。このフィルタは複数の入力を扱えます。その場合、入力どうしのマッチングを追加で計算できます。フィルタは常に最初の入力をそのまま通します。各ストリームのシグネチャはファイルに書き出せます。
次のオプションを受け付けます。
detectmode
マッチング処理を有効または無効にします。
指定できる値は次のとおりです。
‘off’
マッチングの計算を無効にします(既定値)。
‘full’
映像全体についてマッチングを計算し、映像全体が一致するのか一部だけが一致するのかを出力します。
‘fast’
マッチングが見つかるか映像が終わるまでだけ計算します。場合によっては速くなります。
nb_inputs
入力の数を設定します。オプション値は非負整数でなければなりません。既定値は 1 です。
filename
出力先のパスを設定します。入力が複数ある場合、パスはプロトタイプ、すなわち %d または %0nd(n は正の整数)を含まなければならず、これが入力番号で置き換えられます。filename を指定しないと出力は書き出されません。これが既定の動作です。
format
出力形式を選択します。
指定できる値は次のとおりです。
‘binary’
指定したバイナリ表現を使います(既定値)。
‘xml’
指定した xml 表現を使います。
th_d
1 語を類似と判定するしきい値を設定します。オプション値はゼロより大きい整数でなければなりません。既定値は 9000 です。
th_dc
すべての語を類似と判定するしきい値を設定します。オプション値はゼロより大きい整数でなければなりません。既定値は 60000 です。
th_xh
フレームを類似と判定するしきい値を設定します。オプション値はゼロより大きい整数でなければなりません。既定値は 116 です。
th_di
マッチングシーケンスとして認識するための、シーケンスの最小長(フレーム数)を設定します。オプション値は非負整数値でなければなりません。既定値は 0 です。
th_it
マッチするフレームが全フレームに対して持つべき最小の比率を設定します。オプション値は 0 から 1 までの double 値でなければなりません。既定値は 0.5 です。
11.235.1 Examples
-
入力映像のシグネチャを計算して signature.bin に保存します。
ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null - -
2 本の映像が一致するかを検出し、シグネチャを XML 形式で signature0.xml と signature1.xml に保存します。
ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
11.236 siti
ITU-T Rec. P.910 (11/21): Subjective video quality assessment methods for multimedia applications で定義されている、映像の Spatial Information (SI) と Temporal Information (TI) のスコアを計算します。PDF は https://www.itu.int/rec/T-REC-P.910-202111-S/en から入手できます。なお、これは廃止された勧告に対応するレガシー実装です。最新版については ITU-T Rec. P.910 (07/22) を参照してください: https://www.itu.int/rec/T-REC-P.910-202207-I/en
次のオプションを受け付けます。
print_summary
1 に設定すると、要約統計がコンソールに表示されます。既定値は 0 です。
11.236.1 Examples
- SI/TI 指標を計算して要約を表示します。
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
11.237 smartblur
輪郭に影響を与えずに入力映像をぼかします。
次のオプションを受け付けます。
luma_radius, lr
輝度(luma)の半径を設定します。オプション値は [0.1,5.0] の範囲の浮動小数点数で、画像をぼかすのに用いるガウシアンフィルタの分散を指定します(大きいほど遅くなります)。既定値は 1.0 です。
luma_strength, ls
輝度の強さを設定します。オプション値は [-1.0,1.0] の範囲の浮動小数点数で、ぼかし具合を調整します。[0.0,1.0] の値は画像をぼかし、[-1.0,0.0] の値は画像をシャープにします。既定値は 1.0 です。
luma_threshold, lt
画素をぼかすかどうかを決める係数として用いる輝度のしきい値を設定します。オプション値は [-30,30] の範囲の整数でなければなりません。0 の値は画像全体をフィルタし、[0,30] の値は平坦な領域をフィルタし、[-30,0] の値はエッジをフィルタします。既定値は 0 です。
chroma_radius, cr
クロマの半径を設定します。オプション値は [0.1,5.0] の範囲の浮動小数点数で、画像をぼかすのに用いるガウシアンフィルタの分散を指定します(大きいほど遅くなります)。既定値は luma_radius です。
chroma_strength, cs
クロマの強さを設定します。オプション値は [-1.0,1.0] の範囲の浮動小数点数で、ぼかし具合を調整します。[0.0,1.0] の値は画像をぼかし、[-1.0,0.0] の値は画像をシャープにします。既定値は luma_strength です。
chroma_threshold, ct
画素をぼかすかどうかを決める係数として用いるクロマのしきい値を設定します。オプション値は [-30,30] の範囲の整数でなければなりません。0 の値は画像全体をフィルタし、[0,30] の値は平坦な領域をフィルタし、[-30,0] の値はエッジをフィルタします。既定値は luma_threshold です。
alpha_radius, ar
アルファの半径を設定します。オプション値は [0.1,5.0] の範囲の浮動小数点数で、画像をぼかすのに用いるガウシアンフィルタの分散を指定します(大きいほど遅くなります)。既定値は luma_radius です。
alpha_strength, as
アルファの強さを設定します。オプション値は [-1.0,1.0] の範囲の浮動小数点数で、ぼかし具合を調整します。[0.0,1.0] の値は画像をぼかし、[-1.0,0.0] の値は画像をシャープにします。既定値は luma_strength です。
alpha_threshold, at
画素をぼかすかどうかを決める係数として用いるアルファのしきい値を設定します。オプション値は [-30,30] の範囲の整数でなければなりません。0 の値は画像全体をフィルタし、[0,30] の値は平坦な領域をフィルタし、[-30,0] の値はエッジをフィルタします。既定値は luma_threshold です。
クロマまたはアルファのオプションが明示的に設定されていない場合、対応する輝度の値が設定されます。
11.238 sobel
入力映像ストリームに sobel 演算子を適用します。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。
delta
フィルタ結果に加算する値を設定します。
11.238.1 Commands
このフィルタは上記のすべてのオプションをコマンドとして利用できます。
11.239 spp
画像をいくつかのシフト量(品質レベル 6 の場合はすべてのシフト)で圧縮・展開し、その結果を平均する単純なポストプロセッシングフィルタを適用します。
このフィルタは以下のオプションを受け付けます。
quality
品質を設定します。このオプションは平均化に用いるレベル数を定義します。0〜6 の整数を受け付けます。0 に設定するとフィルタは効果を持ちません。6 は最高品質を意味します。この値を 1 上げるごとに速度はおよそ 2 分の 1 に落ちます。既定値は 3 です。
qp
量子化パラメータを一定値に固定します。設定しない場合、フィルタは(利用可能であれば)映像ストリームの QP を使用します。
mode
しきい値処理モードを設定します。利用できるモードは次のとおりです。
‘hard’
ハードしきい値処理(既定)。
‘soft’
ソフトしきい値処理(リンギング除去の効果は高いが、ぼやけやすい)。
use_bframe_qp
1 に設定すると B フレームの QP を使用します。B フレームは QP が大きいことが多いため、このオプションを使うとちらつきが生じる場合があります。既定値は 0(無効)です。
11.239.1 Commands
このフィルタは以下のコマンドをサポートします。
quality, level
品質レベルを設定します。max を指定すると最大レベル(現在は 6)に設定できます。
11.240 sr
畳み込みニューラルネットワークに基づく超解像手法のいずれかを適用して入力をスケーリングします。サポートするモデルは次のとおりです。
- Super-Resolution Convolutional Neural Network モデル(SRCNN)。https://arxiv.org/abs/1501.00092 を参照してください。
- Efficient Sub-Pixel Convolutional Neural Network モデル(ESPCN)。https://arxiv.org/abs/1609.05158 を参照してください。
学習スクリプトおよびモデルファイル(.pb)保存用のスクリプトは https://github.com/XueweiMeng/sr/tree/sr_dnn_native にあります。元のリポジトリは https://github.com/HighVoltageRocknRoll/sr.git です。
このフィルタは以下のオプションを受け付けます。
dnn_backend
モデルの読み込みと実行にどの DNN バックエンドを使うかを指定します。このオプションは以下の値を受け付けます。
‘tensorflow’
TensorFlow バックエンド。このバックエンドを有効にするには TensorFlow for C ライブラリ(https://www.tensorflow.org/install/lang_c を参照)をインストールし、FFmpeg を --enable-libtensorflow で構成する必要があります。
model
ネットワークアーキテクチャとそのパラメータを指定するモデルファイルへのパスを設定します。バックエンドによって使用するファイル形式が異なる点に注意してください。TensorFlow および OpenVINO バックエンドは自身の形式のファイルしか読み込めません。
scale_factor
SRCNN モデルのスケール係数を設定します。指定できる値は 2、3、4 です。既定値は 2 です。SRCNN モデルは適切なスケール係数でバイキュービック拡大した入力を受け取るため、スケール係数の指定が必要となります。
非同期実行などの完全な機能を利用するには、dnn_processing フィルタを使用してください。
11.241 sr_amf
AMD Advanced Media Framework ライブラリによるハードウェアアクセラレーションを使って入力映像をアップスケール(サイズ拡大)します。高度なアルゴリズムを用いて、より高品質な出力でアップスケールします。出力の幅と高さの設定方法は scale フィルタと同じです。
このフィルタは以下のオプションを受け付けます。
w h
出力映像の寸法を表す式を設定します。既定値は入力の寸法です。
scale フィルタと同じ式を使用できます。
algorithm
スケーリングに使用するアルゴリズムを設定します。
bilinear
バイリニア
bicubic
バイキュービック
sr1-0
Video SR1.0。これが既定値です。
point
ポイント
sr1-1
Video SR1.1
sharpness
hq スケーラーのシャープニングを制御します。値は [0.0, 2.0] の範囲の浮動小数点数です。
format
出力ピクセル形式を制御します。既定では、または指定がない場合は入力のピクセル形式が使われます。
keep-ratio
出力サイズが入力と異なるアスペクト比を持つ場合に、入力画像のアスペクト比を保持するようスケーラーに強制します。既定値は false です。
fill
出力サーフェス全体を埋めない関心領域の外側を、出力画像で単色で塗りつぶすかどうかを指定します。
11.241.1 Examples
-
入力を 720p にスケーリングし、アスペクト比を保持しつつ出力を yuv420p にします。
sr_amf=-2:720:format=yuv420p -
アルゴリズム video SR1.1 で 4K にアップスケールします。
sr_amf=4096:2160:algorithm=sr1-1
11.242 ssim
2 つの入力映像間の SSIM(Structural SImilarity Metric)を求めます。
このフィルタは入力として 2 つの映像を取り、1 番目の入力を「メイン」ソースとみなしてそのまま出力へ渡します。2 番目の入力は SSIM 計算用の「参照」映像として使われます。
このフィルタが正しく動作するには、両方の映像入力が同じ解像度・同じピクセル形式である必要があります。また、両入力のフレーム数が同じであることを前提とし、1 フレームずつ比較します。
このフィルタは各フレームについて算出した SSIM を保存します。
受け付けるパラメータの説明は次のとおりです。
stats_file, f
指定すると、フィルタは各フレームの SSIM を名前付きファイルに保存します。ファイル名が "-" の場合、データは標準出力へ送られます。
stats_file を選択した場合に出力されるファイルには、比較した各フレーム組について key:value 形式のキー/値ペアの並びが含まれます。
表示される各パラメータの説明は次のとおりです。
n
入力フレームの連番。1 から始まります。
Y, U, V, R, G, B
接尾辞で指定された成分について比較したフレームの SSIM。
All
フレーム全体について比較したフレームの SSIM。
dB
上記と同じですが dB 表現です。
このフィルタは framesync オプションもサポートします。
11.242.1 Examples
- たとえば次のとおりです。
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] ssim="stats_file=stats.log" [out]
この例では、処理対象の入力ファイルが参照ファイル ref_movie.mpg と比較されます。各フレームの SSIM は stats.log に保存されます。
-
psnr と ssim を同時に使う別の例。
ffmpeg -i main.mpg -i ref.mpg -lavfi "ssim;[0:v][1:v]psnr" -f null - -
異なるコンテナを使う別の例。
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
11.243 stereo3d
異なる立体視画像形式の間で変換します。
このフィルタは以下のオプションを受け付けます。
in
入力の立体視画像形式を設定します。
入力画像形式に指定できる値は次のとおりです。
‘sbsl’
サイドバイサイド・パラレル(左目が左、右目が右)
‘sbsr’
サイドバイサイド・クロスアイ(右目が左、左目が右)
‘sbs2l’
サイドバイサイド・パラレル、幅半分の解像度(左目が左、右目が右)
‘sbs2r’
サイドバイサイド・クロスアイ、幅半分の解像度(右目が左、左目が右)
‘abl’ ‘tbl’
上下(左目が上、右目が下)
‘abr’ ‘tbr’
上下(右目が上、左目が下)
‘ab2l’ ‘tb2l’
上下、高さ半分の解像度(左目が上、右目が下)
‘ab2r’ ‘tb2r’
上下、高さ半分の解像度(右目が上、左目が下)
‘al’
交互フレーム(左目が先、右目が後)
‘ar’
交互フレーム(右目が先、左目が後)
‘irl’
行インターリーブ(左目が先頭行、右目は次の行から始まる)
‘irr’
行インターリーブ(右目が先頭行、左目は次の行から始まる)
‘icl’
列インターリーブ、左目が先
‘icr’
列インターリーブ、右目が先
既定値は ‘sbsl’ です。
out
出力の立体視画像形式を設定します。
‘sbsl’
サイドバイサイド・パラレル(左目が左、右目が右)
‘sbsr’
サイドバイサイド・クロスアイ(右目が左、左目が右)
‘sbs2l’
サイドバイサイド・パラレル、幅半分の解像度(左目が左、右目が右)
‘sbs2r’
サイドバイサイド・クロスアイ、幅半分の解像度(右目が左、左目が右)
‘abl’ ‘tbl’
上下(左目が上、右目が下)
‘abr’ ‘tbr’
上下(右目が上、左目が下)
‘ab2l’ ‘tb2l’
上下、高さ半分の解像度(左目が上、右目が下)
‘ab2r’ ‘tb2r’
上下、高さ半分の解像度(右目が上、左目が下)
‘al’
交互フレーム(左目が先、右目が後)
‘ar’
交互フレーム(右目が先、左目が後)
‘irl’
行インターリーブ(左目が先頭行、右目は次の行から始まる)
‘irr’
行インターリーブ(右目が先頭行、左目は次の行から始まる)
‘arbg’
アナグリフ 赤/青 グレー(左目に赤フィルタ、右目に青フィルタ)
‘argg’
アナグリフ 赤/緑 グレー(左目に赤フィルタ、右目に緑フィルタ)
‘arcg’
アナグリフ 赤/シアン グレー(左目に赤フィルタ、右目にシアンフィルタ)
‘arch’
アナグリフ 赤/シアン ハーフカラー(左目に赤フィルタ、右目にシアンフィルタ)
‘arcc’
アナグリフ 赤/シアン カラー(左目に赤フィルタ、右目にシアンフィルタ)
‘arcd’
アナグリフ 赤/シアン、Dubois の最小二乗射影で最適化したカラー(左目に赤フィルタ、右目にシアンフィルタ)
‘agmg’
アナグリフ 緑/マゼンタ グレー(左目に緑フィルタ、右目にマゼンタフィルタ)
‘agmh’
アナグリフ 緑/マゼンタ ハーフカラー(左目に緑フィルタ、右目にマゼンタフィルタ)
‘agmc’
アナグリフ 緑/マゼンタ カラー(左目に緑フィルタ、右目にマゼンタフィルタ)
‘agmd’
アナグリフ 緑/マゼンタ、Dubois の最小二乗射影で最適化したカラー(左目に緑フィルタ、右目にマゼンタフィルタ)
‘aybg’
アナグリフ 黄/青 グレー(左目に黄フィルタ、右目に青フィルタ)
‘aybh’
アナグリフ 黄/青 ハーフカラー(左目に黄フィルタ、右目に青フィルタ)
‘aybc’
アナグリフ 黄/青 カラー(左目に黄フィルタ、右目に青フィルタ)
‘aybd’
アナグリフ 黄/青、Dubois の最小二乗射影で最適化したカラー(左目に黄フィルタ、右目に青フィルタ)
‘ml’
モノ出力(左目のみ)
‘mr’
モノ出力(右目のみ)
‘chl’
チェッカーボード、左目が先
‘chr’
チェッカーボード、右目が先
‘icl’
列インターリーブ、左目が先
‘icr’
列インターリーブ、右目が先
‘hdmi’
HDMI フレームパック
既定値は ‘arcd’ です。
11.243.1 Examples
-
入力映像をサイドバイサイド・パラレルからアナグリフ 黄/青 Dubois へ変換します。
stereo3d=sbsl:aybd -
入力映像を上下(左目が上、右目が下)からサイドバイサイド・クロスアイへ変換します。
stereo3d=abl:sbsr
11.244 streamselect, astreamselect
映像または音声のストリームを選択します。
このフィルタは以下のオプションを受け付けます。
inputs
入力数を設定します。既定値は 2 です。
map
出力へ再マップする入力インデックスを設定します。
11.244.1 Commands
streamselect および astreamselect フィルタは以下のコマンドをサポートします。
map
出力へ再マップする入力インデックスを設定します。
11.244.2 Examples
-
最初の 5 秒は 1 番目のストリーム、それ以降は 2 番目のストリームを選択します。
sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0 -
上記と同様ですが音声向けです。
asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
11.245 subtitles
libass ライブラリを使って入力映像の上に字幕を描画します。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libass で構成する必要があります。また、渡された字幕ファイルを ASS(Advanced Substation Alpha)字幕形式へ変換するために、このフィルタは libavcodec と libavformat を含むビルドも必要とします。
このフィルタは以下のオプションを受け付けます。
filename, f
読み込む字幕ファイルのファイル名を設定します。必ず指定しなければなりません。
original_size
元の映像、すなわち ASS ファイルが作成された対象の映像のサイズを指定します。このオプションの構文については ffmpeg-utils マニュアルの「(ffmpeg-utils)Video size」節 を参照してください。ASS のアスペクト比演算に設計上の不備があるため、アスペクト比が変更されている場合にフォントを正しくスケーリングするにはこの指定が必要となります。
fontsdir
フィルタが使用できるフォントを含むディレクトリのパスを設定します。これらのフォントは、フォントプロバイダが使用するものに加えて使われます。
alpha
アルファチャンネルを処理します。既定ではアルファチャンネルには手を加えません。
charenc
字幕入力の文字エンコーディングを設定します。subtitles フィルタ専用です。UTF-8 でない場合にのみ有用です。
stream_index, si
字幕ストリームのインデックスを設定します。subtitles フィルタ専用です。
force_style
字幕の既定スタイルやスクリプト情報パラメータを上書きします。"," で区切った ASS スタイル形式の KEY=VALUE ペアを含む文字列を受け付けます。
wrap_unicode
Unicode 改行アルゴリズムに従って行を折り返します。利用するには少なくとも libass リリース 0.17.0(または LIBASS_VERSION 0x01600010)が必要で、かつ libass が libunibreak 付きでビルドされている必要があります。
このオプションはネイティブの ASS を除き既定で有効です。
shaping
シェーピングエンジンを設定します。
指定できる値は次のとおりです。
‘auto’
既定の libass シェーピングエンジン。利用可能な中で最良のものです。
‘simple’
高速かつフォント非依存のシェーパーで、置換のみを行えます。
‘complex’
OpenType を用いて置換と配置を行う、より低速なシェーパー。アラビア語、ヘブライ語、デーヴァナーガリー、タイ語などの複雑な文字体系を正しくレンダリングするのに必要です。libass が HarfBuzz 付きでビルドされている必要があります。
既定値は auto です。
最初のキーが指定されていない場合、最初の値がファイル名を指定するものとみなされます。
たとえば、ファイル sub.srt を入力映像の上にレンダリングするには次のコマンドを使います。
subtitles=sub.srt
これは次と等価です。
subtitles=filename=sub.srt
ファイル video.mkv から既定の字幕ストリームをレンダリングするには次を使います。
subtitles=video.mkv
そのファイルから 2 番目の字幕ストリームをレンダリングするには次を使います。
subtitles=video.mkv:si=1
sub.srt の字幕ストリームを 80% 透過の青の DejaVu Serif で表示するには次を使います。
subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
11.246 super2xsai
Super2xSaI(Scale and Interpolate)ピクセルアート拡大アルゴリズムを使い、入力を 2 倍にスケーリングして平滑化します。
シャープさを損なわずにピクセルアート画像を拡大するのに便利です。
11.247 swaprect
映像内の 2 つの矩形領域を入れ替えます。
このフィルタは以下のオプションを受け付けます。
w
オブジェクトの幅を設定します。
h
オブジェクトの高さを設定します。
x1
1 番目の矩形の x 座標を設定します。
y1
1 番目の矩形の y 座標を設定します。
x2
2 番目の矩形の x 座標を設定します。
y2
2 番目の矩形の y 座標を設定します。
すべての式はフレームごとに 1 回評価されます。
すべてのオプションは以下の定数を含む式です。
w h
入力の幅と高さ。
a
w / h と同じです。
sar
入力のサンプルアスペクト比。
dar
入力のディスプレイアスペクト比。(w / h) * sar と同じです。
n
入力フレームの番号。0 から始まります。
t
秒で表したタイムスタンプ。入力タイムスタンプが不明な場合は NAN です。
pos
ファイル内での入力フレームの位置。不明な場合は NAN です。非推奨につき使用しないでください。
11.247.1 Commands
このフィルタは上記のすべてのオプションをコマンドとして利用できます。
11.248 swapuv
U プレーンと V プレーンを入れ替えます。
11.249 tblend
連続する映像フレームをブレンドします。
blend を参照してください。
11.250 telecine
映像にテレシネ処理を適用します。
このフィルタは以下のオプションを受け付けます。
first_field
‘top, t’
トップフィールドが先。
‘bottom, b’
ボトムフィールドが先。既定値は top です。
pattern
適用したいプルダウンパターンを表す数字の文字列。既定値は 23 です。
代表的なパターン:
NTSC 出力 (30i):
27.5p: 32222
24p: 23 (古典的)
24p: 2332 (推奨)
20p: 33
18p: 334
16p: 3444
PAL 出力 (25i):
27.5p: 12222
24p: 222222222223 ("ヨーロッパ式プルダウン")
16.67p: 33
16p: 33333334
11.251 thistogram
入力映像の色分布ヒストグラムを時間方向に計算して描画します。
ある時点の単一入力フレームのヒストグラムだけを表示する histogram 映像フィルタと異なり、このフィルタは width オプションで定義した数のフレーム分の過去のヒストグラムも表示します。
計算されるヒストグラムは、画像内の色成分の分布を表したものです。
このフィルタは以下のオプションを受け付けます。
width, w
単一色成分出力の幅を設定します。既定値は 0 です。0 は入力映像から幅を選ぶことを意味します。これは保持する過去ヒストグラムの数も設定します。指定できる範囲は [0, 8192] です。
display_mode, d
表示モードを設定します。以下の値を受け付けます。
‘stack’
色成分ごとのグラフを上下に並べます。
‘parade’
色成分ごとのグラフを横に並べます。
‘overlay’
parade と同じ情報を提示するが、色成分を表すグラフを互いに直接重ね合わせる点が異なります。
既定値は stack です。
levels_mode, m
モードを設定します。linear または logarithmic のいずれかです。既定値は linear です。
components, c
表示する色成分を設定します。既定値は 7 です。
bgopacity, b
背景の不透明度を設定します。既定値は 0.9 です。
envelope, e
エンベロープを表示します。既定では無効です。
ecolor, ec
エンベロープの色を設定します。既定値は gold です。
slide
スライドモードを設定します。
slide に指定できる値は次のとおりです。
‘frame’
右端に達したら新しいフレームを描画します。
‘replace’
古い列を新しい列で置き換えます。
‘scroll’
右から左へスクロールします。
‘rscroll’
左から右へスクロールします。
‘picture’
単一の画像を描画します。
既定値は replace です。
11.252 threshold
映像ストリームにしきい値処理(threshold)エフェクトを適用します。
このフィルタはしきい値処理を行うために4つの映像ストリームを必要とします。1つ目はフィルタ処理の対象となるストリーム、2つ目はしきい値を保持するストリーム、3つ目は最小値を保持するストリーム、最後の4つ目は最大値を保持するストリームです。
このフィルタは次のオプションを受け付けます。
planes
処理する平面(plane)を設定します。処理されない平面はそのままコピーされます。既定値は 0xf で、すべての平面が処理されます。
例えば、1つ目のストリームのピクセルの成分値が、2つ目のしきい値ストリームの対応するピクセル成分のしきい値より小さければ3つ目のストリームの値が選ばれ、そうでなければ4つ目のストリームのピクセル成分値が選ばれます。
color ソースフィルタを使えば、さまざまな種類のしきい値処理を行えます。
11.252.1 Commands
このフィルタはすべてのオプションをコマンドとしてサポートします。
11.252.2 Examples
-
グレー色をしきい値とした二値しきい値処理:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi -
グレー色をしきい値とした反転二値しきい値処理:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi -
グレー色をしきい値とした切り捨て型二値しきい値処理:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi -
グレー色をしきい値とした0へのしきい値処理:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi -
グレー色をしきい値とした反転した0へのしきい値処理:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
11.253 thumbnail
連続するフレームの並びの中から、最も代表的なフレームを選びます。
このフィルタは次のオプションを受け付けます。
n
解析するフレームのバッチサイズを設定します。n フレームの集合の中からフィルタが1枚を選び、続いて次の n フレームのバッチを処理し、終端まで繰り返します。既定値は 100 です。
log
選ばれたフレームの統計情報を表示するログレベルを設定します。既定値は info です。
このフィルタはフレーム列全体を追跡し続けるため、n の値を大きくするとメモリ使用量も増えます。したがって大きな値は推奨されません。
11.253.1 Examples
-
50フレームごとに1枚の画像を抽出します:
thumbnail=50 -
ffmpegを使ったサムネイル作成の完全な例:ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
11.254 tile
連続する複数のフレームを1枚にタイル状に並べます。
逆の処理は untile フィルタで行えます。
このフィルタは次のオプションを受け付けます。
layout
グリッドのサイズを COLUMNSxROWS の形式で設定します。範囲はセル数 UINT_MAX まで。既定値は 6x5 です。
nb_frames
指定領域内に描画するフレームの最大数を設定します。これは wxh 以下でなければなりません。既定値は 0 で、領域全体が使われることを意味します。
margin
外周の余白をピクセル単位で設定します。範囲は 0 から 1024。既定値は 0 です。
padding
内側の境界の太さ(すなわちフレーム間のピクセル数)を設定します。エッジごとに異なる値を持たせるなど、より高度なパディングオプションについては pad 映像フィルタを参照してください。範囲は 0 から 1024。既定値は 0 です。
color
未使用領域の色を指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」節を確認してください。color の既定値は "black" です。
overlap
連続する複数のフレームをタイル状に並べる際に重ね合わせるフレーム数を設定します。値は 0 から nb_frames - 1 の間でなければなりません。既定値は 0 です。
init_padding
最初の出力フレームを表示する前に、最初に空にしておくフレーム数を設定します。これにより最初の出力フレームを得るまでの早さを制御できます。値は 0 から nb_frames - 1 の間でなければなりません。既定値は 0 です。
11.254.1 Examples
- 動画中のすべてのキーフレーム(-skip_frame nokey)を 8x8 の PNG タイルとして出力します:
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -fps_mode passthrough keyframes%03d.png
-fps_mode passthrough は、ffmpeg が元々検出したフレームレートに合わせて各出力フレームを複製するのを防ぐために必要です。
3x2フレームの領域に5枚の画像を、フレーム間7ピクセル、初期余白2ピクセルで表示します。フラット形式と名前付きオプションを混在させて指定:tile=3x2:nb_frames=5:padding=7:margin=2
11.255 tiltandshift
ティルト・アンド・シフト(tilt-and-shift)エフェクトを適用します。
時間と空間を入れ替えると何が起こるでしょうか。
通常、映像は時間の異なる瞬間を表す複数のフレームで構成され、各フレームが捉えた空間内で展開していくシーンを映し出します。このフィルタはその概念の対極にあり、ティルト・シフト写真から着想を得ています。
フィルタ処理されたフレームは、その並びを構成する出来事のタイムライン全体を含みます。これは各フレームから1スライス分のピクセルを取り出し、1枚にまとめることで得られます。ただし無限の幅を持つフレームは存在しないため、これは入力フレームの幅の範囲で行われ、後続のフレームごとに1列ずつずらしていくことで映像が再構成されます。空間を時間に対応づけるため、フィルタは各入力フレームをティルトもさせ、動きが保たれるようにします。これは各入力フレームから少しずつ異なる列を選んでいくことで実現されます。
最終的な結果は一種の反転した視差となり、遠くの物体は手前の物体よりもはるかに速く動きます。この映像エフェクトに理想的な条件は、動きがごくわずかで背景が静止している場合か、あるいは動きが多く被写界深度が非常に深い場合(例えば、列車で移動しながら撮る広いパノラマ)です。
このフィルタは次のパラメータを受け付けます。
tilt
シフトしながら映像をティルトさせます(既定)。設定を外すと、各フレームの最初の列で構成された静止画像をスライドさせる動きになります。
start
フィルタ処理の開始時に行う動作です(後述)。
end
フィルタ処理の終了時に行う動作です(後述)。
hold
フィルタ処理を開始する前に通過させる列数です。
pad
フィルタ処理を終了する前に挿入する列数です。
通常、フィルタはまさに最初のフレームからシフトとティルトを開始し、最後のフレームを受け取ると停止します。ただし、フィルタ処理が始まる前は通常の映像を保ち、エフェクトをゆっくりと所定の位置へずらしていくこともできます。同様に、最後の映像フレームを終了時に再構成することもできます。あるいは単に開始と終了を黒にすることも可能です。
‘none’
フィルタ処理は直ちに開始し、最後のフレームを受け取った時点で終了します。
‘frame’
最初の数フレーム、またはまさに最後のフレームを、処理中もそのまま保ちます。
‘black’
フィルタ処理の開始時または終了時に黒でパディングします。
11.256 tinterlace
さまざまな種類の時間方向のフィールドインターレース処理を行います。
フレームは1から数え始めるため、最初の入力フレームは奇数として扱われます。
このフィルタは次のオプションを受け付けます。
mode
インターレースのモードを指定します。このオプションは値だけで指定することもできます。このオプションに指定できる値の一覧は後述します。
指定できる値は次のとおりです。
‘merge, 0’
奇数フレームを上側フィールド、偶数フレームを下側フィールドへ移し、フレームレートを半分にして高さが2倍のフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 33333
22222 44444
11111 33333
22222 44444
11111 33333
22222 44444
11111 33333
22222 44444
‘drop_even, 1’
奇数フレームのみを出力し、偶数フレームは破棄します。フレームレートを半分にして高さは変えないフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 33333
11111 33333
11111 33333
11111 33333
‘drop_odd, 2’
偶数フレームのみを出力し、奇数フレームは破棄します。フレームレートを半分にして高さは変えないフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
22222 44444
22222 44444
22222 44444
22222 44444
‘pad, 3’
各フレームを全高に拡張し、ただし1行おきに黒でパディングします。入力と同じフレームレートで高さが2倍のフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 ..... 33333 .....
..... 22222 ..... 44444
11111 ..... 33333 .....
..... 22222 ..... 44444
11111 ..... 33333 .....
..... 22222 ..... 44444
11111 ..... 33333 .....
..... 22222 ..... 44444
‘interleave_top, 4’
奇数フレームの上側フィールドと偶数フレームの下側フィールドを織り交ぜ、フレームレートを半分にして高さは変えないフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111<- 22222 33333<- 44444
11111 22222<- 33333 44444<-
11111<- 22222 33333<- 44444
11111 22222<- 33333 44444<-
Output:
11111 33333
22222 44444
11111 33333
22222 44444
‘interleave_bottom, 5’
奇数フレームの下側フィールドと偶数フレームの上側フィールドを織り交ぜ、フレームレートを半分にして高さは変えないフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222<- 33333 44444<-
11111<- 22222 33333<- 44444
11111 22222<- 33333 44444<-
11111<- 22222 33333<- 44444
Output:
22222 44444
11111 33333
22222 44444
11111 33333
‘interlacex2, 6’
高さを変えずにフレームレートを2倍にします。各フレームには、直前の入力フレームの2番目の時間方向フィールドと、次の入力フレームの最初の時間方向フィールドが挿入されます。このモードは top_field_first フラグに依存します。フィールド同期のないインターレース映像ディスプレイに有用です。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 22222 22222 33333 33333 44444 44444
11111 11111 22222 22222 33333 33333 44444
11111 22222 22222 33333 33333 44444 44444
11111 11111 22222 22222 33333 33333 44444
‘mergex2, 7’
奇数フレームを上側フィールド、偶数フレームを下側フィールドへ移し、同じフレームレートで高さが2倍のフレームを生成します。
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 33333 33333 55555
22222 22222 44444 44444
11111 33333 33333 55555
22222 22222 44444 44444
11111 33333 33333 55555
22222 22222 44444 44444
11111 33333 33333 55555
22222 22222 44444 44444
数値はフラグとして非推奨ですが、後方互換性のために受け付けられます。
既定のモードは merge です。
flags
フィルタ処理に影響するフラグを指定します。
flags に指定できる値は次のとおりです。
low_pass_filter, vlpf
フィルタ内で線形の垂直ローパスフィルタリングを有効にします。高周波の垂直方向ディテールを含むプログレッシブソースからインターレースの出力を作る場合、垂直ローパスフィルタリングが必要となります。フィルタリングによってインターレースの「twitter(ちらつき)」やモアレを軽減します。
complex_filter, cvlpf
複雑な垂直ローパスフィルタリングを有効にします。これはインターレースの「twitter」やモアレの軽減はやや小さくなりますが、ディテールと主観的なシャープさの印象をよりよく保ちます。
bypass_il
すでにインターレースされているフレームはバイパスし、フレームレートのみを調整します。
垂直ローパスフィルタリングと、すでにインターレースされたフレームのバイパスは、interleave_top と interleave_bottom モードでのみ有効にできます。
11.257 tmedian
連続する複数の入力映像フレームから中央値のピクセルを選びます。
このフィルタは次のオプションを受け付けます。
radius
メディアンフィルタの半径を設定します。既定値は 1 です。指定できる範囲は 1 から 127 です。
planes
フィルタ処理する平面を設定します。既定値は 15 で、これによりすべての平面が処理されます。
percentile
中央値のパーセンタイルを設定します。既定値は 0.5 です。既定値の 0.5 では常に中央値が選ばれ、0 では最小値、1 では最大値が選ばれます。
11.257.1 Commands
このフィルタは、radius オプションを除く上記すべてのオプションをコマンドとしてサポートします。
11.258 tmidequalizer
時間方向の中間映像イコライゼーション(Temporal Midway Video Equalization)エフェクトを適用します。
中間映像イコライゼーションは、映像フレームの並びが同じヒストグラムを持つように調整しつつ、そのダイナミクスをできる限り維持します。例えば、映像フレーム列の露出を揃えるのに有用です。
このフィルタは次のオプションを受け付けます。
radius
フィルタリングの半径を設定します。既定値は 5 です。指定できる範囲は 1 から 127 です。
sigma
フィルタリングのシグマを設定します。既定値は 0.5 です。これはフィルタリングの強さを制御します。このオプションを 0 にすると実質的に何も行われません。
planes
処理する平面を設定します。既定値は 15 で、これは利用可能なすべての平面を表します。
11.259 tmix
連続する映像フレームを混合します。
受け付けるオプションの説明は次のとおりです。
frames
混合する連続フレームの数です。指定しない場合は 3 になります。
weights
各入力映像フレームの重みを指定します。各重みはスペースで区切ります。重みの数がフレーム数より少ない場合、最後に指定した重みが残りの未設定の重みすべてに使われます。
scale
スケールを指定します。設定すると、各重みとピクセル値を掛けた和に対してさらに乗算され、最終的な出力ピクセル値が得られます。既定では、スケールは重みの和に合わせて自動調整されます。
planes
フィルタ処理する平面を設定します。既定はすべてです。指定できる範囲は 0 から 15 です。
11.259.1 Examples
-
連続する7フレームを平均します:
tmix=frames=7:weights="1 1 1 1 1 1 1" -
単純な時間方向の畳み込みを適用します:
tmix=frames=3:weights="-1 3 -1" -
上と同様ですが、時間方向の差分のみを表示します:
tmix=frames=3:weights="-1 2 -1":scale=1
11.259.2 Commands
このフィルタは次のコマンドをサポートします。
weights scale planes
構文は同名のオプションと同じです。
11.260 tonemap
異なるダイナミックレンジの色をトーンマッピングします。
このフィルタは範囲外の値を扱う(そして出力できる)必要があるため、単精度浮動小数点のデータを期待します。生成されたフレームを利用可能な形式に変換するには、zscale などの別のフィルタが必要になります。
実装されているトーンマッピングアルゴリズムは線形光(linear light)でのみ動作するため、入力データは事前に線形化しておく必要があります(そして可能なら正しくタグ付けしておきます)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
11.260.1 Options
このフィルタは次のオプションを受け付けます。
tonemap
使用するトーンマップアルゴリズムを設定します。
指定できる値は次のとおりです。
none
トーンマップを一切適用せず、明るすぎるピクセルの彩度を下げるだけにします。
clip
範囲外の値をすべてハードクリップします。範囲内の値については完璧な色の正確さが得られますが、範囲外の値は歪みます。
linear
参照する色域全体を、ディスプレイの線形倍に引き伸ばします。
gamma
トーンカーブの間に対数的な伝達関数を当てはめます。
reinhard
単純なカーブで画像全体の明るさを保ちます。非線形のコントラストを用いるため、ディテールが平坦化し色の正確さが低下します。
hable
reinhard よりも暗部と明部の両方のディテールをよく保ちますが、全体がわずかに暗くなる代償があります。色や明るさの正確さよりもディテール保持を重視する場合に使います。
mobius
範囲外の値を滑らかにマッピングしつつ、範囲内の素材についてはコントラストと色をできる限り保ちます。ディテール保持よりも色の正確さを重視する場合に使います。
既定は none です。
param
トーンマッピングアルゴリズムを調整します。
これは次のアルゴリズムに影響します。
none
無視されます。
linear
引き伸ばしの際に使うスケール係数を指定します。既定は 1.0 です。
gamma
関数の指数を指定します。既定は 1.8 です。
clip
クリッピング前に信号に掛ける追加の線形係数を指定します。既定は 1.0 です。
reinhard
ディスプレイのピークにおける局所コントラスト係数を指定します。既定は 0.5 で、これは色域内の値がクリッピング時の約半分の明るさになることを意味します。
hable
無視されます。
mobius
線形変換から mobius 変換へ移行する点を指定します。この点より下のすべての値は 1:1 でマッピングされることが保証されます。値が大きいほど結果は正確になりますが、明部のディテールが失われる代償があります。既定は 0.3 で、初期の急な傾きのおかげで範囲内の色はかなり正確に保たれます。
desat
このレベルの明るさを超えるハイライトに彩度低下を適用します。パラメータが大きいほど色情報がより多く保たれます。この設定は、超ハイライトを(滑らかに)白へ転じさせることで、不自然に白飛びした色になるのを防ぐのに役立ちます。これにより画像はより自然に感じられますが、範囲外の色に関する情報が減る代償があります。
既定の 2.0 はやや控えめで、主に空や直射日光の当たる面にのみ適用されます。0.0 に設定するとこのオプションは無効になります。
このオプションは入力フレームにサポートされた色タグがある場合にのみ動作します。
peak
信号/公称/参照のピークをこの値で上書きします。ディスプレイのメタデータに埋め込まれたピーク情報が信頼できない場合や、低い範囲から高い範囲へトーンマッピングする場合に有用です。
11.261 tpad
映像フレームを時間方向にパディングします。
このフィルタは次のオプションを受け付けます。
start
入力映像ストリームの前に置く遅延フレーム数を指定します。既定は 0 です。
stop
入力映像ストリームの後に置くパディングフレーム数を指定します。-1 にすると無限にパディングします。既定は 0 です。
start_mode
ストリームの先頭に追加するフレームの種類を設定します。add または clone のいずれかです。add の場合は単色のフレームが追加され、clone の場合は最初のフレームの複製が追加されます。既定は add です。
stop_mode
ストリームの末尾に追加するフレームの種類を設定します。add または clone のいずれかです。add の場合は単色のフレームが追加され、clone の場合は最後のフレームの複製が追加されます。既定は add です。
start_duration, stop_duration
開始/終了の遅延の長さを指定します。受け付ける構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration 節を参照してください。これらのオプションは start と stop を上書きします。既定は 0 です。
color
パディング領域の色を指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」節を確認してください。
color の既定値は "black" です。
11.262 transpose
入力映像の行と列を入れ替え、必要に応じて反転します。
次のパラメータを受け付けます。
dir
転置の方向を指定します。
次の値を取れます。
‘0, 4, cclock_flip’
反時計回りに90度回転し、垂直反転します(既定)。すなわち:
L.R L.l
. . -> . .
l.r R.r
‘1, 5, clock’
時計回りに90度回転します。すなわち:
L.R l.L
. . -> . .
l.r r.R
‘2, 6, cclock’
反時計回りに90度回転します。すなわち:
L.R R.r
. . -> . .
l.r L.l
‘3, 7, clock_flip’
時計回りに90度回転し、垂直反転します。すなわち:
L.R r.R
. . -> . .
l.r l.L
4から7の値では、入力映像のジオメトリが横長ではなく縦長の場合にのみ転置が行われます。これらの値は非推奨であり、代わりに passthrough オプションを使うべきです。
数値は非推奨であり、シンボリック定数に置き換えるべきです。
passthrough
入力のジオメトリが指定値で示されたものと一致する場合、転置を適用しません。次の値を受け付けます。
‘none’
常に転置を適用します。
‘portrait’
縦長のジオメトリ(高さ >= 幅のとき)を保ちます。
‘landscape’
横長のジオメトリ(幅 >= 高さのとき)を保ちます。
既定値は none です。
例えば、時計回りに90度回転しつつ縦長レイアウトを保つには:
transpose=dir=1:passthrough=portrait
上のコマンドは次のようにも指定できます:
transpose=1:portrait
11.263 trim
入力をトリミングし、出力が入力の連続した一部分のみを含むようにします。
次のパラメータを受け付けます。
start
残す区間の開始時刻を指定します。すなわち、タイムスタンプ start のフレームが出力の最初のフレームになります。
end
破棄される最初のフレームの時刻を指定します。すなわち、タイムスタンプ end のフレームの直前のフレームが出力の最後のフレームになります。
start_pts
start と同じですが、このオプションは開始タイムスタンプを秒ではなくタイムベース単位で設定します。
end_pts
end と同じですが、このオプションは終了タイムスタンプを秒ではなくタイムベース単位で設定します。
duration
出力の最大の長さを秒で指定します。
start_frame
出力に渡すべき最初のフレームの番号です。
end_frame
破棄すべき最初のフレームの番号です。
start、end、duration は時間長指定として表されます。受け付ける構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration 節を参照してください。
なお、最初の2組の start/end オプションと duration オプションはフレームのタイムスタンプを参照するのに対し、_frame 系はフィルタを通過するフレームを単純に数えるだけです。また、このフィルタはタイムスタンプを変更しません。出力のタイムスタンプを0から始めたい場合は、trim フィルタの後に setpts フィルタを挿入してください。
複数の start または end オプションが設定された場合、このフィルタは貪欲に動作し、指定された制約の少なくとも1つに合致するすべてのフレームを残そうとします。すべての制約を同時に満たす部分のみを残すには、複数の trim フィルタを連結してください。
既定では入力がすべて残るようになっています。そのため、例えば end の値だけを設定して、指定時刻より前のすべてを残すことも可能です。
Examples:
-
入力の2分目を除いてすべてを破棄します:
ffmpeg -i INPUT -vf trim=60:120 -
最初の1秒のみを残します:
ffmpeg -i INPUT -vf trim=duration=1
11.264 unpremultiply
第2ストリームの最初のプレーンをアルファとして用い、入力映像ストリームにアルファのアンプリマルチプライ効果を適用します。
両方のストリームは同じ寸法かつ同じ pixel format でなければなりません。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。処理されないプレーンはそのままコピーされます。既定値は 0xf で、すべてのプレーンが処理されます。
フォーマットの成分が1個または2個の場合、輝度はビット0です。成分が3個または4個の場合、RGB フォーマットではビット0が緑、ビット1が青、ビット2が赤です。YUV フォーマットではビット0が輝度、ビット1がクロマU、ビット2がクロマVです。アルファチャンネルが存在する場合は常に最後のビットになります。
inplace
処理に第2入力を要求せず、代わりに入力ストリームのアルファプレーンを使用します。
11.265 unsharp
入力映像をシャープにする、またはぼかします。
次のパラメータを受け付けます。
luma_msize_x, lx
輝度マトリクスの水平サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
luma_msize_y, ly
輝度マトリクスの垂直サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
luma_amount, la
輝度に対する効果の強さを設定します。浮動小数点数でなければならず、妥当な値は-1.5から1.5の範囲です。
負の値は入力映像をぼかし、正の値はシャープにします。0を指定すると効果は無効になります。
既定値は1.0です。
chroma_msize_x, cx
クロママトリクスの水平サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
chroma_msize_y, cy
クロママトリクスの垂直サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
chroma_amount, ca
クロマに対する効果の強さを設定します。浮動小数点数でなければならず、妥当な値は-1.5から1.5の範囲です。
負の値は入力映像をぼかし、正の値はシャープにします。0を指定すると効果は無効になります。
既定値は0.0です。
alpha_msize_x, ax
アルファマトリクスの水平サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
alpha_msize_y, ay
アルファマトリクスの垂直サイズを設定します。3から23の奇数でなければなりません。既定値は5です。
alpha_amount, aa
アルファに対する効果の強さを設定します。浮動小数点数でなければならず、妥当な値は-1.5から1.5の範囲です。
負の値は入力映像をぼかし、正の値はシャープにします。0を指定すると効果は無効になります。
既定値は0.0です。
すべてのパラメータは省略可能で、既定では文字列 ’5:5:1.0:5:5:0.0’ に相当する値になります。
11.265.1 例
-
強い輝度シャープ効果を適用する:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5 -
輝度とクロマの両パラメータに強いぼかしを適用する:
unsharp=7:7:-2:7:7:-2
11.266 untile
タイル状に並べた画像で構成された映像を、個々の画像へ分解します。
出力映像のフレームレートは、入力映像のフレームレートにタイル数を掛けた値になります。
このフィルタは tile の逆の処理を行います。
このフィルタは次のオプションを受け付けます。
layout
グリッドサイズ(すなわち行数と列数)を設定します。このオプションの構文については、ffmpeg-utils マニュアルの「Video size」の節を参照してください。
11.266.1 例
- アナログのフィルムリールのように25フレームを縦に積み重ねた静止画像ファイルから、1秒の映像を生成する:
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
11.267 uspp
超低速・単純な後処理フィルタを適用します。画像をいくつかの(または品質レベルが 8 の場合はすべての)シフトで圧縮・伸張し、その結果を平均化します。
spp の挙動との違いは、uspp が各ケースを libavcodec の Snow で実際にエンコード・デコードするのに対し、spp は MJPEG に似たイントラ専用の単純な8x8 DCT を用いる点です。
このフィルタは5.0から6.0までの ffmpeg バージョンでは利用できません。
このフィルタは次のオプションを受け付けます。
quality
品質を設定します。このオプションは平均化のレベル数を定義します。0から8の範囲の整数を受け付けます。0 に設定するとフィルタは効果を持ちません。8 は最高品質を意味します。この値を1増やすごとに速度はおよそ2分の1に低下します。既定値は 3 です。
qp
量子化パラメータを一定値に強制します。設定しない場合、フィルタは映像ストリームの QP を(利用可能であれば)使用します。
codec
snow の代わりに指定した codec を使用します。
11.268 v360
360度映像をさまざまなフォーマット間で変換します。
このフィルタは次のオプションを受け付けます。
input output
入力/出力映像のフォーマットを設定します。
利用可能なフォーマット:
‘e’ ‘equirect’
正距円筒図法(Equirectangular projection)。
‘c3x2’ ‘c6x1’ ‘c1x6’
3x2/6x1/1x6 レイアウトのキューブマップ。
フォーマット固有のオプション:
in_pad out_pad
入力/出力キューブマップのパディング比率を設定します。値は小数で指定します。
設定値の例:
‘0’
パディングなし。
‘0.01’
面の1%をパディングにします。例えば1920x1280の解像度では面サイズは640x640となり、パディングは各辺から3ピクセルになります(640 * 0.01 = 6ピクセル)。
既定値は ‘ 0’ です。最大値は ‘ 0.1’ です。
fin_pad fout_pad
入力/出力キューブマップの固定パディングを設定します。値はピクセルで指定します。
既定値は ‘ 0’ です。0より大きい場合、他のパディングオプションを上書きします。
in_forder out_forder
入力/出力キューブマップの面の順序を設定します。各位置に対して1つの方向を選びます。
方向の表記:
‘r’
右
‘l’
左
‘u’
上
‘d’
下
‘f’
前
‘b’
後
既定値は ‘ rludfb’ です。
in_frot out_frot
入力/出力キューブマップの面の回転を設定します。各位置に対して1つの角度を選びます。
角度の表記:
‘0’
時計回りに0度
‘1’
時計回りに90度
‘2’
時計回りに180度
‘3’
時計回りに270度
既定値は ‘ 000000’ です。
‘eac’
等角キューブマップ(Equi-Angular Cubemap)。
‘flat’ ‘gnomonic’ ‘rectilinear’
通常の映像。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘dfisheye’
デュアルフィッシュアイ。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘barrel’ ‘fb’ ‘barrelsplit’
Facebook の360フォーマット。
‘sg’
ステレオグラフィック(Stereographic)フォーマット。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘mercator’
メルカトル(Mercator)フォーマット。
‘ball’
ボール(Ball)フォーマット。後方に向かって大きな歪みが生じます。
‘hammer’
ハンメル・エイトフ図法(Hammer-Aitoff map projection)フォーマット。
‘sinusoidal’
サンソン図法(Sinusoidal map projection)フォーマット。
‘fisheye’
フィッシュアイ投影。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘pannini’
パンニーニ(Pannini)投影。
フォーマット固有のオプション:
h_fov
出力のパンニーニパラメータを設定します。
ih_fov
入力のパンニーニパラメータを設定します。
‘cylindrical’
円筒(Cylindrical)投影。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘perspective’
透視(Perspective)投影。(出力のみ)
フォーマット固有のオプション:
v_fov
透視パラメータを設定します。
‘tetrahedron’
四面体(Tetrahedron)投影。
‘tsp’
切頭四角錐(Truncated square pyramid)投影。
‘he’ ‘hequirect’
ハーフ正距円筒図法(Half equirectangular projection)。
‘equisolid’
等立体角(Equisolid)フォーマット。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘og’
正射(Orthographic)フォーマット。
フォーマット固有のオプション:
h_fov v_fov d_fov
出力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
ih_fov iv_fov id_fov
入力の水平/垂直/対角の視野角を設定します。値は度で指定します。
対角の視野角を設定すると、水平および垂直の視野角を上書きします。
‘octahedron’
八面体(Octahedron)投影。
‘cylindricalea’
円筒正積(Cylindrical Equal Area)投影。
interp
補間方法を設定します。
注: より複雑な補間方法ほど、実行に必要なメモリが大幅に増えます。
利用可能な方法:
‘near’ ‘nearest’
最近傍。
‘line’ ‘linear’
バイリニア補間。
‘lagrange9’
Lagrange9 補間。
‘cube’ ‘cubic’
バイキュービック補間。
‘lanc’ ‘lanczos’
Lanczos 補間。
‘sp16’ ‘spline16’
Spline16 補間。
‘gauss’ ‘gaussian’
ガウシアン補間。
‘mitchell’
Mitchell 補間。
既定値は ‘ line’ です。
w h
出力映像の解像度を設定します。
既定の解像度はフォーマットによって異なります。
in_stereo out_stereo
入力/出力のステレオフォーマットを設定します。
‘2d’
2Dモノラル
‘sbs’
サイドバイサイド
‘tb’
トップ/ボトム
既定値は入力・出力フォーマットともに ‘ 2d’ です。
yaw pitch roll
出力映像の回転を設定します。値は度で指定します。
rorder
出力映像の回転順序を設定します。各位置に対して1つの項目を選びます。
‘y, Y’
ヨー(yaw)
‘p, P’
ピッチ(pitch)
‘r, R’
ロール(roll)
既定値は ‘ ypr’ です。
h_flip v_flip d_flip
出力映像を水平方向(左右を入れ替え)/垂直方向(上下を入れ替え)/奥行き方向(前後を入れ替え)に反転します。ブール値です。
ih_flip iv_flip
入力映像が水平方向/垂直方向に反転しているかどうかを設定します。ブール値です。
in_trans
入力映像が転置されているかどうかを設定します。ブール値で、既定では無効です。
out_trans
出力映像を転置する必要があるかどうかを設定します。ブール値で、既定では無効です。
h_offset v_offset
出力の水平/垂直の軸外オフセットを設定します。既定は0です。指定できる範囲は-1から1です。
alpha_mask
マッピングされていないすべてのピクセルを完全に透明とすることで、アルファプレーンにマスクを生成します。ブール値で、既定では無効です。
reset_rot
出力映像の回転をリセットします。ブール値で、既定では無効です。
11.268.1 例
-
正距円筒図法の映像を、バイキュービック補間で1%のパディングを付けた3x2レイアウトのキューブマップに変換する:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv -
等角キューブマップの後方ビューを抽出する:
ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv -
転置かつ水平反転されたサイドバイサイド・ステレオ形式の等角キューブマップを、正距円筒図法のトップ/ボトム・ステレオ形式に変換する:
v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
11.268.2 コマンド
このフィルタは、上記オプションの一部をコマンドとしてサポートします。
11.269 vaguedenoiser
ウェーブレットベースのデノイザを適用します。
映像入力の各フレームを、Cohen-Daubechies-Feauveau 9/7 を用いてウェーブレット領域へ変換します。続いて得られた係数に何らかのフィルタリングを施し、その後に逆ウェーブレット変換を行います。ウェーブレットの性質により、画像の特徴をぼかすことなく、なめらかでノイズの減った良好な結果が得られるはずです。
このフィルタは次のオプションを受け付けます。
threshold
フィルタリングの強さです。高いほど映像はより強くフィルタリングされます。ハードしきい値処理は、映像が過剰にフィルタリングされて見えるまでの間、ソフトしきい値処理よりも高いしきい値を使用できます。既定値は2です。
method
フィルタが使用するフィルタリング方法です。
次の値を受け付けます。
‘hard’
しきい値未満のすべての値が0にされます。
‘soft’
しきい値未満のすべての値が0にされます。しきい値を超えるすべての値は、しきい値の分だけ減算されます。
‘garrote’
係数をスケーリングまたは無効化します。(より)ソフトな処理と(より弱い)ハードなしきい値処理の中間です。
既定は garrote です。
nsteps
ウェーブレットが画像を分解する回数です。画像は特定の点を超えて分解することはできません(典型的には640x480のフレームで8回、2^9 = 512 > 480 のため)。有効な値は1から32の整数です。既定値は6です。
percent
完全なデノイズに対する部分的な度合い(係数の縮小を制限)で、0から100の範囲です。既定値は85です。
planes
処理するプレーンのリストです。既定ではすべてのプレーンが処理されます。
type
フィルタが使用するしきい値のタイプです。
次の値を受け付けます。
‘universal’
使用するしきい値がすべての分解で同じになります。
‘bayes’
使用するしきい値が各分解の係数にも依存します。
既定は universal です。
11.270 varblur
第2映像ストリームでぼかし半径を設定し、可変ぼかしフィルタを適用します。第2ストリームは同じ寸法でなければなりません。
このフィルタは次のオプションを受け付けます。
min_r
許容する最小半径を設定します。指定できる範囲は0から254です。既定は0です。
max_r
許容する最大半径を設定します。指定できる範囲は1から255です。既定は8です。
planes
処理するプレーンを設定します。既定ではすべてが使用されます。
varblur フィルタは framesync オプションもサポートします。
11.270.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.271 vectorscope
2つの色成分の値を2次元グラフ(ベクトルスコープと呼ばれる)上に表示します。
このフィルタは以下のオプションを受け付けます。
mode, m
ベクトルスコープのモードを設定します。
以下の値を受け付けます。
‘gray’ ‘tint’
グレー値をグラフ上に表示します。輝度が高いほど、グラフ上のその位置で同じ成分色の値を持つピクセルが多いことを意味します。これが既定値のモードです。
‘color’
グレー値をグラフ上に表示します。映像フレームに存在しない周辺ピクセルの値は、オプション x と y で設定された2つの色成分のグラデーションで描画されます。3つ目の色成分は固定です。
‘color2’
映像フレームに実際に存在する色成分の値をグラフ上に表示します。
‘color3’
color2 と似ていますが、グラフ上で同じ x と y の値の出現頻度が高くなるほど、別の色成分(x と y の既定値では輝度)の値が増加します。
‘color4’
映像フレームに実際に存在する色をグラフ上に表示します。2つの異なる色がグラフ上の同じ位置に対応する場合、グラフに表示されない成分の値が大きい方の色が選ばれます。
‘color5’
グレー値をグラフ上に表示します。color と似ていますが、3つ目の色成分は放射状グラデーションから選ばれます。
x
X軸に表される色成分を設定します。既定値は 1。
y
Y軸に表される色成分を設定します。既定値は 2。
intensity, i
強度を設定します。gray、color、color3、color5 の各モードで、グラフ上の (X, Y) 位置の出現頻度を表す色成分の輝度を高めるために使用されます。
envelope, e
‘none’
エンベロープなし。これが既定値。
‘instant’
瞬時エンベロープ。最も暗い単一ピクセルでもはっきりと強調表示されます。
‘peak’
グラフ上に表示された最大値と最小値を時間経過に対して保持します。これにより、ベクトルスコープを常時注視しなくても範囲外の値を見つけられます。
‘peak+instant’
peak と instant のエンベロープを組み合わせたもの。
graticule, g
描画するグラティキュール(目盛り)の種類を設定します。
‘none’ ‘green’ ‘color’ ‘invert’ opacity, o
グラティキュールの不透明度を設定します。
flags, f
グラティキュールのフラグを設定します。
‘white’
白点のグラティキュールを描画します。
‘black’
黒点のグラティキュールを描画します。
‘name’
色点の短い名前を描画します。
bgopacity, b
背景の不透明度を設定します。
lthreshold, l
X軸またはY軸に表されない色成分の低閾値を設定します。この値より小さい値は無視されます。既定値は 0。この値はピクセル成分が取りうる実際の最大値と乗算される点に注意してください。たとえば 8-bit 入力で低閾値が 0.1 の場合、実際の閾値は 0.1 * 255 = 25 となります。
hthreshold, h
X軸またはY軸に表されない色成分の高閾値を設定します。この値より大きい値は無視されます。既定値は 1。この値はピクセル成分が取りうる実際の最大値と乗算される点に注意してください。たとえば 8-bit 入力で高閾値が 0.9 の場合、実際の閾値は 0.9 * 255 = 230 となります。
colorspace, c
グラティキュールを描画する際に使用する色空間の種類を設定します。
‘auto’ ‘601’ ‘709’
既定値は auto。
tint0, t0 tint1, t1
gray/tint ベクトルスコープモードの色合いを設定します。既定では両方のオプションがゼロです。これは色合いなしを意味し、出力はグレーのままとなります。
11.272 vidstabdetect
映像の手ぶれ補正/ブレ除去の解析を行います。全2パスのうちパス1を実行します。パス2については vidstabtransform を参照してください。
このフィルタは、後続フレームに関する相対的な平行移動と回転の変換情報を含むファイルを生成し、これを vidstabtransform フィルタが使用します。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libvidstab を指定して configure する必要があります。
このフィルタは以下のオプションを受け付けます。
result
変換情報を書き込むファイルのパスを設定します。既定値は transforms.trf。
shakiness
映像のブレ具合とカメラの動きの速さを設定します。1〜10 の範囲の整数を受け付け、1 はわずかなブレ、10 は強いブレを意味します。既定値は 5。
accuracy
検出処理の精度を設定します。1〜15 の範囲の値でなければなりません。1 は低精度、15 は高精度を意味します。既定値は 15。
stepsize
探索処理のステップサイズを設定します。最小値の周辺領域を1ピクセル解像度でスキャンします。既定値は 6。
mincontrast
最小コントラストを設定します。この値を下回ると、局所的な測定フィールドは破棄されます。0〜1 の範囲の浮動小数点値でなければなりません。既定値は 0.3。
tripod
三脚モードの参照フレーム番号を設定します。
有効にすると、フィルタ後のストリーム内で指定番号によって識別される参照フレームと各フレームの動きが比較されます。これは、ほぼ静的なシーンにおけるすべての動きを補正し、カメラの視点を完全に静止させることを狙いとしています。
0 に設定すると無効になります。フレームは1から数え始めます。
show
結果フレームにフィールドと変換を表示します。0〜2 の範囲の整数を受け付けます。既定値は 0 で、可視化を無効にします。
fileformat
書き込む変換データファイルのフォーマット。受け付ける値は次のとおりです。
‘ascii’
人間が読めるプレーンテキスト
‘binary’
バイナリフォーマット。ascii よりおよそ40%小さいです。(default)
11.272.1 Examples
-
既定値を使います:
vidstabdetect -
強くブレた動画を解析し、結果をファイル mytransforms.trf に出力します:
vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf" -
結果映像に内部変換の結果を可視化します:
vidstabdetect=show=1 -
中程度のブレの映像を
ffmpegで解析します:ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
11.273 vidstabtransform
映像の手ぶれ補正/ブレ除去。全2パスのうちパス2。パス1については vidstabdetect を参照してください。
各フレームの変換情報を含むファイルを読み込み、それを適用・補正します。vidstabdetect フィルタと組み合わせることで映像のブレを除去できます。http://public.hronopik.de/vid.stab も参照してください。後述のとおり unsharp フィルタを併用することが重要です。
このフィルタのコンパイルを有効にするには、FFmpeg を --enable-libvidstab を指定して configure する必要があります。
11.273.1 Options
input
変換情報を読み込むファイルのパスを設定します。既定値は transforms.trf。
smoothing
カメラの動きをローパスフィルタにかけるために使用するフレーム数(value*2 + 1)を設定します。既定値は 10。
たとえば 10 という数は、映像の動きを滑らかにするために21フレーム(過去10フレームと未来10フレーム)が使われることを意味します。値を大きくすると映像はより滑らかになりますが、カメラの加速(パン/チルトの動き)が制限されます。0 は静止カメラをシミュレートする特別なケースです。
optalgo
カメラパスの最適化アルゴリズムを設定します。
受け付ける値は次のとおりです。
‘gauss’
カメラの動きに対するガウシアンカーネルのローパスフィルタ(既定値)
‘avg’
変換の平均化
maxshift
フレームを平行移動させる最大ピクセル数を設定します。既定値は -1 で、制限なしを意味します。
maxangle
フレームを回転させる最大角度をラジアンで設定します(degree*PI/180)。既定値は -1 で、制限なしを意味します。
crop
動き補正によって見えてしまう境界部分の扱い方を指定します。
利用可能な値は次のとおりです。
‘keep’
前フレームの画像情報を保持します(既定値)
‘black’
境界を黒で塗りつぶします
invert
1 に設定すると変換を反転します。既定値は 0。
relative
1 に設定すると変換を前フレームに対する相対値として扱い、0 に設定すると絶対値として扱います。既定値は 0。
zoom
ズームする割合(パーセント)を設定します。正の値はズームインの効果、負の値はズームアウトの効果になります。既定値は 0(ズームなし)。
optzoom
境界を避けるための最適なズームを設定します。
受け付ける値は次のとおりです。
‘0’
無効
‘1’
最適な静的ズーム値が決定されます(非常に強い動きのみが見える境界をもたらす)(既定値)
‘2’
最適な適応的ズーム値が決定されます(境界は一切見えない)。zoomspeed を参照してください
ここで zoom に指定した値は、ここで計算された値に加算される点に注意してください。
zoomspeed
各フレームで最大ズームする割合(パーセント)を設定します(optzoom を 2 に設定したときに有効)。範囲は 0〜5、既定値は 0.25。
interpol
補間の種類を指定します。
利用可能な値は次のとおりです。
‘no’
補間なし
‘linear’
水平方向のみの線形補間
‘bilinear’
両方向の線形補間(既定値)
‘bicubic’
両方向の3次補間(遅い)
tripod
1 に設定すると仮想三脚モードを有効にします。これは relative=0:smoothing=0 と等価です。既定値は 0。
vidstabdetect の tripod オプションも併用してください。
debug
1 に設定するとログの詳細度を上げます。また、検出されたグローバルな動きが一時ファイル global_motions.trf に書き込まれます。既定値は 0。
11.273.2 Examples
ffmpegを使い、既定値で一般的な手ぶれ補正を行います:ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
unsharp フィルタの使用に注意してください。これは常に推奨されます。
-
もう少しズームインし、指定ファイルから変換データを読み込みます:
vidstabtransform=zoom=5:input="mytransforms.trf" -
映像をさらに滑らかにします:
vidstabtransform=smoothing=30
11.274 vflip
入力映像を垂直方向に反転します。
たとえば ffmpeg で映像を垂直方向に反転するには次のようにします。
ffmpeg -i in.avi -vf "vflip" out.avi
11.275 vfrdet
可変フレームレートの映像を検出します。
このフィルタは入力が可変フレームレートか固定フレームレートかを検出しようとします。
最後に、可変のデルタ pts を持つと検出されたフレーム数と、一定のデルタ pts を持つフレーム数を出力します。可変デルタのフレームがあった場合は、検出されたデルタの最小・最大・平均も表示します。
11.276 vibrance
彩度を強調または変化させます。
このフィルタは以下のオプションを受け付けます。
intensity
正の値の場合は強調の強さ、負の値の場合は変化の強さを設定します。既定値は 0。許容範囲は -2〜2。
rbal
赤バランスを設定します。既定値は 1。許容範囲は -10〜10。
gbal
緑バランスを設定します。既定値は 1。許容範囲は -10〜10。
bbal
青バランスを設定します。既定値は 1。許容範囲は -10〜10。
rlum
赤の輝度係数を設定します。
glum
緑の輝度係数を設定します。
blum
青の輝度係数を設定します。
alternate
intensity が負で、これが 1 に設定されている場合、色が変化します。そうでない場合、色は彩度が下がり、よりグレーに近づきます。
11.276.1 Commands
このフィルタは上記すべてのオプションをコマンドとしてサポートします。
11.277 vif
2つの入力映像間の平均 VIF(Visual Information Fidelity)を求めます。
このフィルタは2つの入力映像を受け取ります。
このフィルタが正しく動作するには、両方の入力映像が同じ解像度と pixel format を持つ必要があります。また、両方の入力が同じフレーム数を持ち、それらが1つずつ比較されることを前提とします。
求めた平均 VIF スコアはロギングシステムを通じて出力されます。
このフィルタは各フレームで計算された VIF スコアを保存します。
このフィルタは framesync オプションもサポートします。
以下の例では、処理対象の入力ファイル main.mpg が参照ファイル ref.mpg と比較されます。
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
11.278 vignette
自然なビネット効果を作成、または逆転させます。
このフィルタは以下のオプションを受け付けます。
angle, a
レンズ角度の式をラジアン数で設定します。
値は [0,PI/2] の範囲にクリップされます。
既定値: "PI/5"
x0 y0
中心座標の式を設定します。既定ではそれぞれ "w/2" と "h/2"。
mode
順方向/逆方向モードを設定します。
利用可能なモードは次のとおりです。
‘forward’
中心点からの距離が大きいほど、画像は暗くなります。
‘backward’
中心点からの距離が大きいほど、画像は明るくなります。これはビネット効果を逆転させるのに使えますが、レンズ角度やその他の設定を抽出する自動検出は(まだ)ありません。焼き付け効果の作成にも使えます。
既定値は ‘forward’。
eval
式(angle、x0、y0)の評価モードを設定します。
以下の値を受け付けます。
‘init’
式をフィルタの初期化時に一度だけ評価します。
‘frame’
入力フレームごとに式を評価します。これはすべてのスケーラを再計算する必要があるため ‘init’ モードよりずっと遅いですが、高度な動的な式が使えます。
既定値は ‘init’。
dither
円状のバンディング効果を低減するためのディザリングを設定します。既定値は 1(有効)。
aspect
ビネットのアスペクト比を設定します。この設定によりビネットの形状を調整できます。この値を入力の SAR に設定すると、映像の寸法に沿った矩形のビネットになります。
既定値は 1/1。
11.278.1 Expressions
alpha、x0、y0 の各式には以下のパラメータを含めることができます。
w h
入力の幅と高さ
n
入力フレームの番号。0 から始まります
pts
フィルタ後の映像フレームの PTS(Presentation TimeStamp)時刻。TB 単位で表され、未定義の場合は NAN
r
入力映像のフレームレート。入力のフレームレートが不明な場合は NAN
t
フィルタ後の映像フレームの PTS(Presentation TimeStamp)。秒単位で表され、未定義の場合は NAN
tb
入力映像のタイムベース
11.278.2 Examples
-
単純で強いビネット効果を適用します:
vignette=PI/4 -
点滅するビネットを作ります:
vignette='PI/4+random(1)*PI/50':eval=frame
11.279 vmafmotion
映像の平均 VMAF モーションスコアを求めます。これは VMAF の構成メトリクスの1つです。
求めた平均モーションスコアはロギングシステムを通じて出力されます。
このフィルタは以下のオプションを受け付けます。
stats_file
指定した場合、フィルタは指定されたファイルを使って、各フレームの前フレームに対するモーションスコアを保存します。ファイル名が "-" の場合、データは標準出力へ送られます。
例:
ffmpeg -i ref.mpg -vf vmafmotion -f null -
11.280 vpp_amf
AMD Advanced Media Framework ライブラリによるハードウェアアクセラレーションを用いて、入力映像のスケーリング(リサイズ)と、色空間・伝達特性・色域(color primaries)の変換を行います。出力の幅と高さの指定方法は scale フィルタと同様に動作します。
このフィルタは以下のオプションを受け付けます。
w h
出力映像の寸法の式を設定します。既定値は入力の寸法。
scale フィルタと同じ式が使えます。
scale_type
スケーリングに使うアルゴリズムを設定します。
bilinear
Bilinear
これが既定値。
bicubic
Bicubic
format
出力の pixel format を制御します。既定では、または何も指定しない場合、入力の pixel format が使われます。
force_original_aspect_ratio force_divisible_by
scale フィルタの同名オプションと同じように動作します。
reset_sar
scale フィルタの同名オプションと同じように動作します。
in_color_range
入力の color range を上書きします。
out_color_range
出力の color range を指定します。
in_trc と out_trc が受け付ける値は次のとおりです。
‘studio’
スタジオ(または制限、または MPEG)の color range。
‘full’
フル(または JPEG)の color range。
color_profile
すべての色プロパティを一度に指定します。
受け付ける値は次のとおりです。
‘bt601’
BT.601
‘bt709’
BT.709
‘bt2020’
BT.2020
in_trc
入力の伝達特性を上書きします。
out_trc
出力の伝達特性を指定します。
in_trc と out_trc が受け付ける値は次のとおりです。
‘bt709’
BT.709
‘gamma22’
ガンマ 2.2 固定
‘gamma28’
ガンマ 2.8 固定
‘smpte170m’
SMPTE-170M
‘smpte240m’
SMPTE-240M
‘linear’
Linear
‘log’
LOG
‘log-sqrt’
LOG_SQRT
‘iec61966-2-4’
iec61966-2-4
‘bt1361-ecg’
BT1361_ECG
‘iec61966-2-1’
iec61966-2-1
‘bt2020-10’
10-bit コンテンツ向けの BT.2020
‘bt2020-12’
12-bit コンテンツ向けの BT.2020
‘smpte2084’
SMPTE2084
‘smpte428’
SMPTE428
‘arib-std-b67’
ARIB_STD_B67
in_primaries
入力の color primaries を上書きします。
out_primaries
出力の color primaries を指定します。
in_primaries と out_primaries が受け付ける値は次のとおりです。
‘bt709’
BT.709
‘bt470m’
BT.470M
‘bt470bg’
BT.470BG または BT.601-6 625
‘smpte170m’
SMPTE-170M または BT.601-6 525
‘smpte240m’
SMPTE-240M
‘film’
film
‘bt2020’
BT.2020
‘smpte428’
SMPTE-428
‘smpte431’
SMPTE-431
‘smpte432’
SMPTE-432
‘jedec-p22’
JEDEC P22 蛍光体
11.280.1 Examples
-
入力をアスペクト比を保ったまま 720p にスケールし、出力を yuv420p にします。
vpp_amf=-2:720:format=yuv420p -
4K にアップスケールし、カラープロファイルを bt2020 に変更します。
vpp_amf=4096:2160:color_profile=bt2020 -
入力の原色と入力の伝達特性を上書きし、どちらも bt709 に変更します。
vpp_amf=color_profile=bt2020:in_trc=smpte2084:in_primaries=bt2020:out_trc=bt709:out_primaries=bt709
11.281 vstack
入力映像を垂直方向に積み重ねます。
すべてのストリームは同じ pixel format かつ同じ幅でなければなりません。
このフィルタは、同じ出力を overlay フィルタと pad フィルタで作るよりも高速です。
このフィルタは次のオプションを受け付けます。
inputs
入力ストリーム数を設定します。既定値は 2。
shortest
1 に設定すると、最も短い入力が終了した時点で出力を強制的に終了させます。既定値は 0。
11.282 w3fdif
入力映像をデインターレースします(「w3fdif」は「Weston 3 Field Deinterlacing Filter」の略)。
このフィルタは BBC R&D の Martin Weston が示した処理手順に基づき、BBC R&D の Jim Easterbrook が記述したデインターレースアルゴリズムをもとに実装され、BBC R&D が算出したフィルタ係数を用います。
このフィルタはフレーム内のフィールドドミナンス情報を使って、各フィールド対のどちらを出力で先に置くかを決定します。判定を誤る場合は、w3fdif フィルタの前に setfield フィルタを使うとよいでしょう。
フィルタ係数には「simple」と「complex」と呼ばれる 2 つのセットがあります。どちらのセットを使うかは、省略可能なパラメータで設定できます。
filter
インターレース用フィルタ係数を設定します。次のいずれかの値を受け付けます。
‘simple’
単純なフィルタ係数セット。
‘complex’
より複雑なフィルタ係数セット。
既定値は ‘complex’。
mode
採用するインターレースモード。次のいずれかの値を受け付けます。
frame
各フレームに対して 1 フレームを出力します。
field
各フィールドに対して 1 フレームを出力します。
既定値は field。
parity
入力インターレース映像について想定するフィールドの優先順位(パリティ)。次のいずれかの値を受け付けます。
tff
トップフィールドが先と想定します。
bff
ボトムフィールドが先と想定します。
auto
フィールドパリティの自動検出を有効にします。
既定値は auto。インターレースが不明、またはデコーダがこの情報を出力しない場合は、トップフィールドファーストと想定します。
deint
どのフレームをデインターレースするかを指定します。次のいずれかの値を受け付けます。
‘all’
すべてのフレームをデインターレースします。
‘interlaced’
インターレースとマークされたフレームのみをデインターレースします。
既定値は ‘all’。
11.282.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.283 waveform
映像の波形モニタ。
波形モニタは色成分の強度をプロットします。既定では輝度のみ。波形の各列はソース映像のピクセル列に対応します。
次のオプションを受け付けます。
mode, m
row または column のいずれか。既定値は column。row モードでは、グラフの左側が色成分値 0、右側が値 255 を表します。column モードでは、上側が色成分値 0、下側が値 255 を表します。
intensity, i
強度を設定します。小さい値は、同じ輝度の値が入力の行/列にどれだけ分布しているかを調べるのに役立ちます。既定値は 0.04。許容範囲は [0, 1]。
mirror, r
ミラーモードを設定します。0 は非ミラー、1 はミラーを意味します。ミラーモードでは、row モードで高い値が左側に、column モードで高い値が上側に表示されます。既定値は 1(ミラー)。
display, d
表示モードを設定します。次の値を受け付けます。
‘overlay’
parade と同じ情報を示しますが、色成分を表すグラフが互いに直接重ね合わされる点が異なります。
この表示モードでは、ニュートラルな白・グレー・黒のように本来同一であるべき色成分の重なり合う領域で、相対的な違いや類似を見つけやすくなります。
‘stack’
色成分ごとのグラフを、row モードでは横並びに、column モードでは上下に分けて表示します。
‘parade’
色成分ごとのグラフを、column モードでは横並びに、row モードでは上下に分けて表示します。
この表示モードでは、各波形の上下のグラフの輪郭を比較することで、画像のハイライトとシャドウのカラーキャスト(色かぶり)を見つけやすくなります。白・グレー・黒は赤・緑・青がちょうど等量で構成されるため、画面のニュートラルな領域では幅/高さがほぼ等しい 3 つの波形が表示されるはずです。そうでない場合は、3 つの波形のレベルを調整するだけで簡単に補正できます。
既定値は stack。
components, c
表示する色成分を設定します。既定値は 1 で、輝度のみ(入力が RGB 色空間の場合は赤色成分のみ)を意味します。たとえば 7 に設定すると、利用可能であれば 3 つの色成分すべてを表示します。
envelope, e
‘none’
エンベロープなし。これが既定です。
‘instant’
瞬間エンベロープ。グラフに示される最小値と最大値が、小さな step 値でも見やすくなります。
‘peak’
グラフに示される最小値と最大値を時間をまたいで保持します。これにより、波形を常に見続けなくても範囲外の値を見つけられます。
‘peak+instant’
peak と instant のエンベロープを組み合わせたもの。
filter, f
‘lowpass’
フィルタリングなし。これが既定です。
‘flat’
輝度とクロマを組み合わせたもの。
‘aflat’
上と同様ですが、青クロマと赤クロマの差を示します。
‘xflat’
上と同様ですが、異なる色を使います。
‘yflat’
上と同様ですが、さらに異なる色を使います。
‘chroma’
クロマのみを表示します。
‘color’
波形上に実際の色の値を表示します。
‘acolor’
上と同様ですが、輝度がクロマ値の頻度を示します。
graticule, g
表示する目盛り(グラティキュール)を設定します。
‘none’
目盛りを表示しません。
‘green’
放送の適正範囲を示す緑の目盛りを表示します。
‘orange’
放送の適正範囲を示すオレンジの目盛りを表示します。
‘invert’
放送の適正範囲を示す反転目盛りを表示します。
opacity, o
目盛りの不透明度を設定します。
flags, fl
目盛りのフラグを設定します。
‘numbers’
線の上に数値を描画します。既定で有効です。
‘dots’
線の代わりにドットを描画します。
scale, s
目盛りの表示に使うスケールを設定します。
‘digital’ ‘millivolts’ ‘ire’
既定値は digital。
bgopacity, b
背景の不透明度を設定します。
tint0, t0 tint1, t1
出力の色合いを設定します。lowpass フィルタ使用時で、display が overlay 以外、かつ入力 pixel format が RGB 以外の場合にのみ使われます。
fitmode, fm
映像出力フレームのサンプルアスペクト比を設定します。波形がいずれかの方向に伸びすぎないように設定するのに使えます。
‘none’
サンプルアスペクト比を 1/1 に設定します。
‘size’
サンプルアスペクト比を映像の入力サイズに合わせます。
既定値は ‘none’。
input
フィルタが選択する入力フォーマットを設定します。利用可能なすべてのフォーマットから選ぶ ‘all’、または最初に利用可能なフォーマットを選ぶ ‘first’ を指定できます。既定値は ‘first’。
11.284 weave, doubleweave
weave はフィールドベースの映像入力を受け取り、連続する 2 つのフィールドを 1 つのフレームに結合し、高さが 2 倍でフレームレートとフレーム数が半分の新しいクリップを生成します。
doubleweave は weave と同様に動作しますが、フレームレートとフレーム数を半分にしません。
次のオプションを受け付けます。
first_field
最初のフィールドを設定します。利用可能な値は次のとおりです。
‘top, t’
フレームをトップフィールドファーストに設定します。
‘bottom, b’
フレームをボトムフィールドファーストに設定します。
11.284.1 Examples
- select フィルタと separatefields フィルタを使って映像をインターレース化します。
separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
11.285 xbr
ピクセルアート向けに設計された高品質拡大フィルタ xBR を適用します。エッジ検出ルールのセットに従います。https://forums.libretro.com/t/xbr-algorithm-tutorial/123 を参照してください。
次のオプションを受け付けます。
n
スケーリングの倍率を設定します。2xBR なら 2、3xBR なら 3、4xBR なら 4。既定値は 3。
11.286 xcorrelate
1 つ目と 2 つ目の入力映像ストリーム間で正規化相互相関を適用します。
2 つ目の入力映像ストリームの寸法は、1 つ目の入力映像ストリームより小さくなければなりません。
このフィルタは次のオプションを受け付けます。
planes
処理するプレーンを設定します。
secondary
2 つ目の入力映像ストリームのうち、どの副次フレームを処理するかを設定します。first または all を指定できます。既定値は all。
xcorrelate フィルタは framesync オプションもサポートします。
11.287 xfade
ある入力映像ストリームから別の入力映像ストリームへのクロスフェードを適用します。クロスフェードは指定した時間にわたって適用されます。
両方の入力は固定フレームレートで、解像度・pixel format・フレームレート・タイムベースが同じでなければなりません。
このフィルタは次のオプションを受け付けます。
transition
利用可能なトランジション効果のいずれかを設定します。
‘custom’ ‘fade’ ‘wipeleft’ ‘wiperight’ ‘wipeup’ ‘wipedown’ ‘slideleft’ ‘slideright’ ‘slideup’ ‘slidedown’ ‘circlecrop’ ‘rectcrop’ ‘distance’ ‘fadeblack’ ‘fadewhite’ ‘radial’ ‘smoothleft’ ‘smoothright’ ‘smoothup’ ‘smoothdown’ ‘circleopen’ ‘circleclose’ ‘vertopen’ ‘vertclose’ ‘horzopen’ ‘horzclose’ ‘dissolve’ ‘pixelize’ ‘diagtl’ ‘diagtr’ ‘diagbl’ ‘diagbr’ ‘hlslice’ ‘hrslice’ ‘vuslice’ ‘vdslice’ ‘hblur’ ‘fadegrays’ ‘wipetl’ ‘wipetr’ ‘wipebl’ ‘wipebr’ ‘squeezeh’ ‘squeezev’ ‘zoomin’ ‘fadefast’ ‘fadeslow’ ‘hlwind’ ‘hrwind’ ‘vuwind’ ‘vdwind’ ‘coverleft’ ‘coverright’ ‘coverup’ ‘coverdown’ ‘revealleft’ ‘revealright’ ‘revealup’ ‘revealdown’
既定のトランジション効果は fade。
duration
クロスフェードの継続時間を秒で設定します。範囲は 0 〜 60 秒。既定の継続時間は 1 秒。
offset
1 つ目の入力ストリームを基準としたクロスフェードの開始位置を秒で設定します。既定のオフセットは 0。
expr
custom トランジション効果用の式を設定します。
式では次の変数と関数を使えます。
X Y
現在のサンプルの座標。
W H
画像の幅と高さ。
P
トランジション効果の進行度。
PLANE
現在処理中のプレーン。
A
現在位置・現在プレーンにおける 1 つ目の入力の値を返します。
B
現在位置・現在プレーンにおける 2 つ目の入力の値を返します。
a0(x, y) a1(x, y) a2(x, y) a3(x, y)
1 つ目の入力の第 1/第 2/第 3/第 4 成分について、位置 (x,y) のピクセル値を返します。
b0(x, y) b1(x, y) b2(x, y) b3(x, y)
2 つ目の入力の第 1/第 2/第 3/第 4 成分について、位置 (x,y) のピクセル値を返します。
11.287.1 Examples
- ある入力映像から別の入力映像へ、fade トランジションで、オフセット 5 秒から始まる継続時間 2 秒のクロスフェードを行います。
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
11.288 xmedian
複数の入力映像から中央値のピクセルを選び出します。
このフィルタは次のオプションを受け付けます。
inputs
入力数を設定します。既定値は 3。許容範囲は 3 〜 255。入力数が偶数の場合、結果は 2 つの中央値の平均値になります。
planes
フィルタするプレーンを設定します。既定値は 15 で、これにより全プレーンが処理されます。
percentile
中央値のパーセンタイルを設定します。既定値は 0.5。既定値の 0.5 は常に中央値を選び、0 は最小値、1 は最大値を選びます。
11.288.1 Commands
このフィルタは、inputs オプションを除く上記すべてのオプションをコマンドとしてサポートします。
11.289 xpsnr
2 つの入力映像間の、平均(全入力フレームにわたる)および最小(全色プレーン平均にわたる)eXtended Perceptually weighted peak Signal-to-Noise Ratio(XPSNR)を求めます。
XPSNR は、2 つの映像ストリームまたは画像の差を評価する、低計算量で心理視覚的に動機づけられた歪み測定アルゴリズムです。これは、正式な主観評価テストの代替として、映像・画像 codec が引き起こす歪みを客観的に定量化するのに特に有用です。対数表記の XPSNR の出力値は従来の psnr 評価と同様の範囲にありますが、視覚的な符号化品質に対する人間の印象をより良く反映します。XPSNR は本質的に PSNR をブロックごとに重み付けした変種であり、その詳細は以下の自由に入手できる論文に記載されています。
- C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. www.ecodis.de/xpsnr.htm
- C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en
たとえばこの FFmpeg フィルタを使って得た XPSNR 評価の結果を公表する際は、上記論文を出典として参照することを強く推奨します。このフィルタは 2 つの入力映像を必要とします。1 つ目の入力は(通常は歪みのない)参照ソースとみなされ、そのまま出力へ渡されます。一方、2 つ目の入力は(歪んだ)テスト信号です。ビット深度を除き、これら 2 つの映像入力は同じ pixel format でなければなりません。さらに、最良の性能を得るには、比較する両方の入力映像が YCbCr 色フォーマットであるべきです。
上記の総合 XPSNR 値はロギングシステムを通じて出力されます。複数の色プレーンを持つ入力の場合は、最小の XPSNR 平均を報告することを推奨します。
psnr フィルタのものと同様に動作する次のパラメータを受け付けます。
stats_file, f
指定すると、フィルタは各フレームと各色プレーンの XPSNR 値を、指定した名前のファイルに保存します。ファイル名が "-" の場合、そのデータは標準出力へ送られます。
このフィルタは framesync オプションもサポートします。
11.289.1 Examples
-
2 つの 1080p HD 映像 ref_source.yuv と test_video.yuv(いずれも 24 フレーム毎秒、色フォーマット 4:2:0、ビット深度 8)の XPSNR 解析を行い、"xpsnr.log" という名前のログファイルを出力します。
ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null - -
2 つの 2160p UHD 映像 ref_source.yuv(ビット深度 8)と test_video.yuv(ビット深度 10)(いずれも 60 フレーム毎秒、色フォーマット 4:2:0)の XPSNR 解析を行い、ログファイルは出力しません。
ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate 60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
11.290 xstack
映像入力をカスタムレイアウトに積み重ねます。
すべてのストリームは同じ pixel format でなければなりません。
このフィルタは次のオプションを受け付けます。
inputs
入力ストリーム数を設定します。既定値は 2。
layout
入力のレイアウトを指定します。このオプションでは、希望するレイアウト構成をユーザーが明示的に設定する必要があります。これにより各映像入力の出力内での位置を設定します。各入力は ’|’ で区切ります。最初の数字が列、2 番目の数字が行を表します。数字は 0 から始まり、’_’ で区切ります。任意で wX や hX を使うこともでき、X は幅や高さを取る映像入力を指します。複数の値を ’+’ で区切って使うこともでき、その場合は値が合算されます。
入力のサイズが異なる場合、出力映像フレームがすべて埋まらず隙間が現れることがあります。同様に、ある映像の位置が隣接する映像のフレーム全体を収めるのに十分な余地を残さないと、映像同士が重なることがあります。
2 入力の場合、既定のレイアウト 0_0|w0_0(grid=2x1 と等価)が設定されます。それ以外のすべての場合は、ユーザーがレイアウトかグリッドを設定しなければなりません。grid と layout は同時に一方のみ指定できます。両方を指定するとエラーになります。
grid
固定サイズの入力グリッドを指定します。このオプションは入力ストリームの固定サイズグリッドを作成するために使います。グリッドサイズを COLUMNSxROWS の形式で設定します。ROWS * COLUMNS 個の入力ストリームが必要で、それらは ROWS 行 COLUMNS 列のグリッドに配置されます。このオプションを使う場合、行内の各入力ストリームは同じ高さでなければならず、すべての行は同じ幅でなければなりません。
grid が設定されると inputs オプションは無視され、暗黙的に ROWS * COLUMNS に設定されます。
2 入力の場合、既定のグリッド 2x1(layout=0_0|w0_0 と等価)が設定されます。それ以外のすべての場合は、ユーザーがレイアウトかグリッドを設定しなければなりません。grid と layout は同時に一方のみ指定できます。両方を指定するとエラーになります。
shortest
1 に設定すると、最も短い入力が終了した時点で出力を強制的に終了させます。既定値は 0。
fill
有効な色を設定すると、未使用のピクセルはすべてその色で埋められます。既定では fill は none に設定され、無効になっています。
11.290.1 Examples
- 4 つの入力を 2x2 グリッドで表示します。
レイアウト:
input1(0, 0) | input3(w0, 0)
input2(0, h0) | input4(w0, h0)
xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
入力のサイズが異なる場合、隙間や重なりが生じることがある点に注意してください。
- 4 つの入力を 1x4 グリッドで表示します。
レイアウト:
input1(0, 0)
input2(0, h0)
input3(0, h0+h1)
input4(0, h0+h1+h2)
xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
入力の幅が異なる場合、未使用の領域が現れる点に注意してください。
- 9 つの入力を 3x3 グリッドで表示します。
レイアウト:
input1(0, 0) | input4(w0, 0) | input7(w0+w3, 0)
input2(0, h0) | input5(w0, h0) | input8(w0+w3, h0)
input3(0, h0+h1) | input6(w0, h0+h1) | input9(w0+w3, h0+h1)
xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
入力のサイズが異なる場合、隙間や重なりが生じることがある点に注意してください。
- 16 個の入力を 4x4 グリッドで表示します。
レイアウト:
input1(0, 0) | input5(w0, 0) | input9 (w0+w4, 0) | input13(w0+w4+w8, 0)
input2(0, h0) | input6(w0, h0) | input10(w0+w4, h0) | input14(w0+w4+w8, h0)
input3(0, h0+h1) | input7(w0, h0+h1) | input11(w0+w4, h0+h1) | input15(w0+w4+w8, h0+h1)
input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
入力のサイズが異なる場合、隙間や重なりが生じることがある点に注意してください。
11.291 yadif
入力映像をデインターレースします(「yadif」は「yet another deinterlacing filter」を意味します)。
次のパラメータを受け付けます。
mode
採用するインターレースモード。次のいずれかの値を受け付けます。
0, send_frame
各フレームに対して 1 フレームを出力します。
1, send_field
各フィールドに対して 1 フレームを出力します。
2, send_frame_nospatial
send_frame と同様ですが、空間的インターレースチェックをスキップします。
3, send_field_nospatial
send_field と同様ですが、空間的インターレースチェックをスキップします。
既定値は send_frame。
parity
入力インターレース映像について想定するフィールドの優先順位(パリティ)。次のいずれかの値を受け付けます。
0, tff
トップフィールドが先と想定します。
1, bff
ボトムフィールドが先と想定します。
-1, auto
フィールドパリティの自動検出を有効にします。
既定値は auto。インターレースが不明、またはデコーダがこの情報を出力しない場合は、トップフィールドファーストと想定します。
deint
どのフレームをデインターレースするかを指定します。次のいずれかの値を受け付けます。
0, all
すべてのフレームをデインターレースします。
1, interlaced
インターレースとマークされたフレームのみをデインターレースします。
既定値は all。
11.292 yaepblur
エッジを保持しながらぼかしフィルタを適用します(「yaepblur」は「yet another edge preserving blur filter」を意味します)。アルゴリズムは "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980." に記載されています。
次のパラメータを受け付けます。
radius, r
ウィンドウ半径を設定します。既定値は 3。
planes, p
フィルタするプレーンを設定します。既定では最初のプレーンのみ。
sigma, s
ぼかしの強さを設定します。既定値は 128。
11.292.1 Commands
このフィルタはオプションと同じコマンドをサポートします。
11.293 zoompan
ズーム&パン効果を適用します。
このフィルタは次のオプションを受け付けます。
zoom, z
ズームを表す式を設定します。範囲は 1〜10。既定値は 1。
x y
x と y を表す式を設定します。既定値は 0。
d
効果の継続時間を表す式をフレーム数で設定します。1 枚の入力画像に対して効果が何フレーム続くかを指定します。既定値は 90。
s
出力画像のサイズを設定します。既定値は ’hd720’。
fps
出力フレームレートを設定します。既定値は ’25’。
各式には次の定数を含められます。
in_w, iw
入力の幅。
in_h, ih
入力の高さ。
out_w, ow
出力の幅。
out_h, oh
出力の高さ。
in
入力フレーム数。
on
出力フレーム数。
in_time, it
入力タイムスタンプを秒で表したもの。入力タイムスタンプが不明な場合は NAN。
out_time, time, ot
出力タイムスタンプを秒で表したもの。
x y
現在の入力フレームについて、’x’ と ’y’ の式から最後に計算された ’x’・’y’ 位置。
px py
直前の入力フレームの最後の出力フレームの ’x’・’y’。そのようなフレームがまだ存在しない場合(最初の入力フレーム)は 0。
zoom
現在の入力フレームについて、’z’ の式から最後に計算されたズーム。
pzoom
直前の入力フレームの最後の出力フレームについて、最後に計算されたズーム。
duration
現在の入力フレームに対する出力フレーム数。各入力フレームについて ’d’ の式から計算されます。
pduration
直前の入力フレームに対して生成された出力フレーム数。
a
有理数: 入力の幅 / 入力の高さ。
sar
サンプルアスペクト比。
dar
ディスプレイアスペクト比。
11.293.1 Examples
-
1.5 倍までズームインしつつ、同時に画像の中央付近のある地点までパンします。
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360 -
1.5 倍までズームインし、常に画像の中央でパンします。
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)' -
上と同じですが、一時停止しません。
zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)' -
入力動画の最初の 1 秒間だけ、画像の中央へ 2 倍ズームインします。
zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
11.294 zscale
z.lib ライブラリを使って入力映像をスケール(リサイズ)します: https://github.com/sekrit-twc/zimg。このフィルタを有効にしてコンパイルするには、FFmpeg を --enable-libzimg を付けて configure する必要があります。
zscale フィルタは出力のサンプルアスペクト比を変えることで、出力のディスプレイアスペクト比を入力と同じになるよう強制します。
入力画像のフォーマットが次のフィルタが要求するフォーマットと異なる場合、zscale フィルタは入力を要求されたフォーマットへ変換します。
11.294.1 Options
このフィルタは次のオプションを受け付けます。
width, w height, h
出力映像の寸法を表す式を設定します。既定値は入力の寸法。
width または w の値が 0 の場合、出力には入力の幅が使われます。height または h の値が 0 の場合、出力には入力の高さが使われます。
一方の値だけが -n(n >= 1)の場合、zscale フィルタは指定されたもう一方の寸法から計算した、入力画像のアスペクト比を維持する値を使います。ただしその後、計算された寸法が n で割り切れるようにし、必要であれば値を調整します。
両方の値が -n(n >= 1)の場合、挙動は前述のとおり両方の値を 0 に設定した場合と同一になります。
寸法を表す式で使える定数の一覧は後述します。
size, s
映像サイズを設定します。このオプションの構文については ffmpeg-utils マニュアルの「Video size」セクションを参照してください。
dither, d
ディザの種類を設定します。
指定できる値は次のとおりです。
none ordered random error_diffusion
既定値は none。
filter, f
リサイズフィルタの種類を設定します。
指定できる値は次のとおりです。
point bilinear bicubic spline16 spline36 spline64 lanczos
既定値は bilinear。
range, r
カラーレンジを設定します。
指定できる値は次のとおりです。
input limited full
既定値は入力と同じ。
primaries, p
カラープライマリを設定します。
指定できる値は次のとおりです。
input 709 unspecified 170m 240m 2020
既定値は入力と同じ。
transfer, t
伝達特性を設定します。
指定できる値は次のとおりです。
input 709 unspecified 601 linear 2020_10 2020_12 smpte2084 iec61966-2-1 arib-std-b67
既定値は入力と同じ。
matrix, m
色空間マトリクスを設定します。
指定できる値は次のとおりです。
input 709 unspecified 470bg 170m 2020_ncl 2020_cl
既定値は入力と同じ。
rangein, rin
入力のカラーレンジを設定します。
指定できる値は次のとおりです。
input limited full
既定値は入力と同じ。
primariesin, pin
入力のカラープライマリを設定します。
指定できる値は次のとおりです。
input 709 unspecified 170m 240m 2020
既定値は入力と同じ。
transferin, tin
入力の伝達特性を設定します。
指定できる値は次のとおりです。
input 709 unspecified 601 linear 2020_10 2020_12
既定値は入力と同じ。
matrixin, min
入力の色空間マトリクスを設定します。
指定できる値は次のとおりです。
input 709 unspecified 470bg 170m 2020_ncl 2020_cl chromal, c
出力のクロマ位置を設定します。
指定できる値は次のとおりです。
input left center topleft top bottomleft bottom chromalin, cin
入力のクロマ位置を設定します。
指定できる値は次のとおりです。
input left center topleft top bottomleft bottom npl
公称ピーク輝度を設定します。
param_a
スケーリングフィルタのパラメータ A。bicubic の場合はパラメータ "b"、lanczos の場合はフィルタタップ数。
param_b
スケーリングフィルタのパラメータ B。bicubic の場合はパラメータ "c"。
w と h オプションの値は、次の定数を含む式です。
in_w in_h
入力の幅と高さ。
iw ih
in_w と in_h と同じ。
out_w out_h
出力(スケール後)の幅と高さ。
ow oh
out_w と out_h と同じ。
a
iw / ih と同じ。
sar
入力のサンプルアスペクト比。
dar
入力のディスプレイアスペクト比。(iw / ih) * sar から計算されます。
hsub vsub
入力の水平・垂直クロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1。
ohsub ovsub
出力の水平・垂直クロマサブサンプル値。例えばピクセルフォーマット "yuv422p" では hsub は 2、vsub は 1。
11.294.2 Commands
このフィルタは次のコマンドをサポートします。
width, w height, h
出力映像の寸法を表す式を設定します。このコマンドは対応するオプションと同じ構文を受け付けます。
指定した式が無効な場合、現在の値が保持されます。
12 CUDA Video Filters
以下は、現在利用可能な Nvidia CUDA 映像フィルタの説明です。
前提条件:
- Nvidia CUDA Toolkit をインストールします。
注意: FFmpeg が configure 時に Nvidia CUDA Toolkit を検出すると、追加のフラグを必要とせず自動的に CUDA フィルタを有効にします。明示的に有効にしたい場合は、次のオプションを使います。
- FFmpeg を
--enable-cuda-nvcc --enable-nonfreeを付けて configure します。 - FFmpeg を
--enable-cuda-llvmを付けて configure します。追加要件:llvmライブラリがインストールされていること。
CUDA フィルタを実行するには、ハードウェアデバイスを初期化し、そのデバイスを任意のフィルタグラフ内のすべてのフィルタへ渡す必要があります。
-init_hw_device cuda[=name][:device[,key=value...]]
指定したデバイスパラメータを使い、name という名前の cuda 型ハードウェアデバイスを新たに初期化します。
-filter_hw_device name
name という名前のハードウェアデバイスを、任意のフィルタグラフ内のすべてのフィルタへ渡します。
より詳細な情報は https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options を参照してください。
- システム上の 2 番目の CUDA デバイスを初期化し、scale_cuda と bilateral_cuda フィルタを実行する例。
./ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -init_hw_device cuda:1 -filter_complex \ "[0:v]scale_cuda=format=yuv444p[scaled_video];[scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \ -an -sn -c:v h264_nvenc -cq 20 out.mp4
CUDA フィルタは GPU メモリ上でのみ動作するため、処理の前に、フレームデータを適切な CUDA デバイスに関連付けられたハードウェアサーフェスへアップロード(hwupload)する必要がある場合があり、また必要であれば、その後に通常メモリへダウンロード(hwdownload)する必要があります。hwupload や hwdownload が必要かどうかは、具体的なワークフローに依存します。
- 入力フレームが既に GPU メモリ上にある場合(例えば
-hwaccel cudaや-hwaccel_output_format cudaを使うとき)、データは既に適切なメモリ空間にあるため、明示的な hwupload は不要です。 - 入力フレームが CPU メモリ上にある場合(例えばソフトウェアデコードされたフレームや CPU ベースのフィルタで処理されたフレーム)、CUDA 処理のためにデータを GPU メモリへ転送する hwupload が必要です。
- CUDA フィルタの出力をさらにソフトウェアベースのフィルタで処理する必要がある場合や、GPU ベースのエンコーダがサポートしないフォーマットで保存する場合は、データを CPU メモリへ戻す hwdownload が必要です。
hwupload はソフトウェアフレームと同じレイアウトのサーフェスへデータをアップロードする点に注意してください。そのため、入力が正しいフォーマットであることを保証するために、hwupload の直前に format フィルタを追加する必要がある場合があります。同様に、hwdownload はすべての出力フォーマットをサポートしないことがあるため、互換性を保証するために、フィルタグラフ内の hwdownload の直後に追加の format フィルタを挿入する必要がある場合があります。
12.1 bilateral_cuda
CUDA で高速化されたバイラテラルフィルタ。エッジを保持するフィルタです。GPU アクセラレーションの利用により数学的に正確です。最良の出力品質を得るには、1 対 1 のクロマサブサンプリング、すなわち yuv444p フォーマットを使ってください。
このフィルタは次のオプションを受け付けます。
sigmaS
空間的な重みを計算するガウス関数のシグマを設定します。シグマ空間(sigma space)とも呼ばれます。許容範囲は 0.1〜512。既定値は 0.1。
sigmaR
カラーレンジの重みを計算するガウス関数のシグマを設定します。シグマカラー(sigma color)とも呼ばれます。許容範囲は 0.1〜512。既定値は 0.1。
window_size
バイラテラル関数のウィンドウサイズを設定し、ループする近傍の数を決めます。入力した数が偶数の場合、自動的に 1 が加算されます。許容範囲は 1〜255。既定値は 1。
12.1.1 Examples
- 動画にバイラテラルフィルタを適用します。
./ffmpeg -v verbose \ -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]scale_cuda=format=yuv444p[scaled_video]; [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \ -an -sn -c:v h264_nvenc -cq 20 out.mp4
12.2 bwdif_cuda
bwdif アルゴリズムを使って入力映像をデインターレースします。ただし CUDA で実装されており、nvdec や nvenc と組み合わせた GPU アクセラレーションパイプラインの一部として動作できます。
このフィルタは次のパラメータを受け付けます。
mode
採用するインターレースモード。次のいずれかの値を受け付けます。
0, send_frame
入力 1 フレームごとに 1 フレームを出力します。
1, send_field
入力 1 フィールドごとに 1 フレームを出力します。
既定値は send_field。
parity
入力インターレース映像について想定するピクチャのフィールドパリティ。次のいずれかの値を受け付けます。
0, tff
トップフィールドが先(top field first)であると想定します。
1, bff
ボトムフィールドが先(bottom field first)であると想定します。
-1, auto
フィールドパリティの自動検出を有効にします。
既定値は auto。インターレースが不明な場合やデコーダがこの情報を出力しない場合は、トップフィールドが先であると想定します。
deint
どのフレームをデインターレースするかを指定します。次のいずれかの値を受け付けます。
0, all
すべてのフレームをデインターレースします。
1, interlaced
インターレースとマークされたフレームのみをデインターレースします。
既定値は all。
12.3 chromakey_cuda
CUDA で高速化された YUV 色空間でのカラー/クロマキー処理。
このフィルタは通常の chromakey フィルタと同様に動作しますが、CUDA フレーム上で処理します。詳細とパラメータについては chromakey を参照してください。
12.3.1 Examples
-
入力動画内のすべての緑のピクセルを透明にし、別の動画のオーバーレイとして使います。
./ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4 \ -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \ [1:v]scale_cuda=format=yuv420p[base]; \ [base][overlay_video]overlay_cuda" \ -an -sn -c:v h264_nvenc -cq 20 output.mp4 -
2 つのソフトウェアソースを処理し、フレームを明示的にアップロードします。
./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \ -f lavfi -i color=size=800x600:color=white,format=yuv420p \ -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \ -filter_complex \ " \ [0]hwupload[under]; \ [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \ [under][over]overlay_cuda" \ -c:v hevc_nvenc -cq 18 -preset slow output.mp4
12.4 colorspace_cuda
colorspace フィルタの CUDA 高速化実装。
ソフトウェアの colorspace フィルタと比べると機能は決して完全ではなく、現時点では jpeg/full レンジと mpeg/limited レンジの間のカラーレンジ変換のみをサポートします。
このフィルタは次のオプションを受け付けます。
range
出力カラーレンジを指定します。
受け付ける値は次のとおりです。
‘tv’
TV(制限)レンジ。
‘mpeg’
MPEG(制限)レンジ。
‘pc’
PC(フル)レンジ。
‘jpeg’
JPEG(フル)レンジ。
12.5 overlay_cuda
ある映像を別の映像の上にオーバーレイします。
これは overlay フィルタの CUDA 版です。CUDA フレームのみを受け付けます。基となる入力ピクセルフォーマットが一致している必要があります。
入力は 2 つ、出力は 1 つです。最初の入力が「メイン」映像で、その上に 2 番目の入力がオーバーレイされます。
このフィルタは次のパラメータを受け付けます。
x y
メイン映像上でのオーバーレイ映像の x・y 座標を表す式を設定します。
これらには次のパラメータを含められます。
main_w, W main_h, H
メイン入力の幅と高さ。
overlay_w, w overlay_h, h
オーバーレイ入力の幅と高さ。
x y
x と y の計算値。新しいフレームごとに評価されます。
n
メイン入力フレームの序数インデックス。0 から始まります。
pos
メイン入力フレームのファイル内バイトオフセット位置。不明な場合は NAN。非推奨であり、使用しないでください。
t
メイン入力フレームのタイムスタンプ。秒で表します。不明な場合は NAN。
両方の式の既定値は "0"。
eval
x と y の式をいつ評価するかを設定します。
次の値を受け付けます。
init
フィルタの初期化時、またはコマンドが処理されたときに、式を一度だけ評価します。
frame
入力フレームごとに式を評価します。
既定値は frame。
eof_action
framesync を参照してください。
shortest
framesync を参照してください。
repeatlast
framesync を参照してください。
このフィルタは framesync オプションもサポートします。
12.6 pad_cuda
CUDA を使って入力映像ストリームにパディングを追加します。
このフィルタは pad フィルタの CUDA 高速化版です。同じオプションと式を受け付け、同じ中核機能を提供します。利用可能なオプションの詳細な説明は、pad フィルタのドキュメントを参照してください。
12.6.1 Examples
-
映像フレームの全辺に 200 ピクセルの黒い枠を追加します。
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=iw+400:h=ih+400:x=200:y=200" -c:v h264_nvenc out.mp4 -
入力映像を 16:9 のアスペクト比にパディングし、色 "blue" で埋めます。
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=ih*16/9/sar:h=ih:x=(ow-iw)/2:y=(oh-ih)/2:color=blue" -c:v h264_nvenc out.mp4
12.7 scale_cuda
高速化された CUDA カーネルを使って、入力映像をスケール(リサイズ)し、ピクセルフォーマットを変換します。出力の幅と高さの設定は scale フィルタと同じように動作します。
このフィルタは次のオプションを受け付けます。
w h
出力映像の寸法を表す式を設定します。既定値は入力の寸法。
scale フィルタと同じ式を使えます。
interp_algo
スケーリングに使うアルゴリズムを設定します。
nearest
最近傍法(Nearest neighbour)。
入力パラメータが希望する出力と一致する場合に既定で使われます。
bilinear
バイリニア(Bilinear)。
bicubic
バイキュービック(Bicubic)。
これが既定値。
lanczos
Lanczos。
format
出力ピクセルフォーマットを制御します。既定では、または何も指定しない場合は、入力ピクセルフォーマットが使われます。
このフィルタは YUV と RGB のピクセルフォーマット間の変換をサポートしません。
passthrough
0 に設定すると、変換が不要な場合でもすべてのフレームが処理されます。このモードは、限られたデコーダのフレームプールを使い尽くす下流のフレーム消費者に対し、フィルタをバッファとして使う際に役立つことがあります。
1 に設定すると、フレームが希望する出力パラメータに一致する場合はそのまま通過します。これが既定の挙動。
use_filters
1 に設定すると、固定機能のシェーダカーネルを使う代わりに、汎用の重み LUT でフィルタリングします。ハードウェアによって速くなることも遅くなることもあります。auto(既定値)にすると、縮小時に正しいアンチエイリアスのために必要なときに自動で有効になります。
param
アルゴリズム固有のパラメータ。
bicubic アルゴリズムのカーブに影響します。
force_original_aspect_ratio force_divisible_by
同名の scale フィルタオプションと同じように動作します。
reset_sar
同名の scale フィルタオプションと同じように動作します。
12.7.1 Examples
-
入力をアスペクト比を保ったまま720pにスケールし、出力をyuv420pにします。
scale_cuda=-2:720:format=yuv420p -
最近傍法を使って4Kにアップスケールします。
scale_cuda=4096:2160:interp_algo=nearest -
変換やスケーリングは一切行わず、すべての入力フレームを新たに確保したフレームへコピーします。これは、そのままではデコーダのフレームプールを使い果たしてしまうフィルタ・エンコードのチェインを扱うときに役立ちます。
scale_cuda=passthrough=0
12.8 thumbnail_cuda
連続するフレーム列の中から、CUDAを使って最も代表的なフレームを選び出します。
このフィルタは以下のオプションを受け付けます。
n
解析するフレームのバッチサイズを設定します。n枚のフレームからなる集合の中でフィルタは1枚を選び、続いて次のn枚のバッチを処理する、というのを終端まで繰り返します。既定値は 100。
このフィルタはフレーム列全体を追跡し続けるため、nの値が大きいほどメモリ使用量も増えます。したがって大きすぎる値は推奨されません。
12.8.1 Example
- n=150フレームごとのバッチからサムネイルを抽出し、バッチあたり1枚を選びます。選ばれたフレームはその後scale_cudaでスケールされます。
./ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i ./input.mp4 -vf "thumbnail_cuda=150,scale_cuda=1920:1080,hwdownload,format=nv12" ./output/out%03d.png
12.9 transpose_cuda
入力映像の行と列を入れ替え、必要に応じて反転します。より詳しい例については、ほぼ同じオプションを共有するtranspose映像フィルタを参照してください。
以下のパラメータを受け付けます。
dir
転置の方向を指定します。
以下の値を取れます。
‘cclock_flip’
反時計回りに90度回転し、垂直に反転します。(既定値)
‘clock’
時計回りに90度回転します。
‘cclock’
反時計回りに90度回転します。
‘clock_flip’
時計回りに90度回転し、垂直に反転します。
‘reversal’
180度回転します。
‘hflip’
水平に反転します。
‘vflip’
垂直に反転します。
passthrough
入力のジオメトリが指定した値に一致する場合は転置を適用しません。以下の値を受け付けます。
‘none’
常に転置を適用します。(既定値)
‘portrait’
縦長のジオメトリ(高さ >= 幅)を保ちます。
‘landscape’
横長のジオメトリ(幅 >= 高さ)を保ちます。
12.10 yadif_cuda
入力映像をyadifアルゴリズムでデインターレースします。ただしCUDAで実装されており、nvdecやnvencと組み合わせたGPUアクセラレーションのパイプラインの一部として動作できます。
以下のパラメータを受け付けます。
mode
採用するインターレース処理モードです。以下のいずれかの値を受け付けます。
0, send_frame
各フレームにつき1フレームを出力します。
1, send_field
各フィールドにつき1フレームを出力します。
2, send_frame_nospatial
send_frame と同様ですが、空間的なインターレース判定を省略します。
3, send_field_nospatial
send_field と同様ですが、空間的なインターレース判定を省略します。
既定値は send_frame。
parity
入力のインターレース映像について仮定するピクチャフィールドのパリティです。以下のいずれかの値を受け付けます。
0, tff
トップフィールドが先と仮定します。
1, bff
ボトムフィールドが先と仮定します。
-1, auto
フィールドパリティの自動検出を有効にします。
既定値は auto。インターレースが不明な場合やデコーダがこの情報を提供しない場合は、トップフィールドが先と仮定されます。
deint
どのフレームをデインターレースするかを指定します。以下のいずれかの値を受け付けます。
0, all
すべてのフレームをデインターレースします。
1, interlaced
インターレースと印が付けられたフレームのみをデインターレースします。
既定値は all。
13 OpenCL Video Filters
以下は、現在利用できるOpenCL映像フィルタの説明です。
これらのフィルタのコンパイルを有効にするには、--enable-opencl を付けてFFmpegをconfigureする必要があります。
OpenCLフィルタを実行するには、ハードウェアデバイスを初期化し、そのデバイスをフィルタグラフ内のすべてのフィルタに渡す必要があります。
-init_hw_device opencl[=name][:device[,key=value...]]
与えられたデバイスパラメータを使って、nameという名前のopencl型の新しいハードウェアデバイスを初期化します。
-filter_hw_device name
nameという名前のハードウェアデバイスを、フィルタグラフ内のすべてのフィルタに渡します。
より詳しい情報については https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options を参照してください。
- 2番目のプラットフォーム上の最初のデバイスを選び、その上でavgblur_openclフィルタを既定のパラメータで実行する例です。
-init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
OpenCLフィルタは通常のメモリ上のフレームデータにアクセスできないため、すべてのフレームデータは使用前に適切なデバイスに接続されたハードウェアサーフェスへアップロード(hwupload)し、処理後に通常のメモリへダウンロード(hwdownload)し直す必要があります。なお、hwuploadはソフトウェアフレームと同じレイアウトのサーフェスへアップロードするため、入力を正しいフォーマットにするには直前にformatフィルタを追加する必要があるかもしれません。また、hwdownloadは出力側で全フォーマットをサポートしているわけではないため、出力をサポートされたフォーマットにするにはグラフ内の直後にformatフィルタを追加で挿入する必要があるかもしれません。
13.1 avgblur_opencl
平均ぼかしフィルタを適用します。
このフィルタは以下のオプションを受け付けます。
sizeX
水平方向の半径サイズを設定します。範囲は [1, 1024] で既定値は 1。
planes
どのプレーンをフィルタするかを設定します。既定値は 0xf で、これによりすべてのプレーンが処理されます。
sizeY
垂直方向の半径サイズを設定します。範囲は [1, 1024] で既定値は 0。ゼロの場合は sizeX の値が使われます。
13.1.1 Example
- 水平・垂直のサイズを3にして平均ぼかしフィルタを適用し、出力の各ピクセルを、入力におけるそのピクセルを中心とした7x7領域の平均値にします。画像の端にあるピクセルでは領域が画像境界の外には広がらないため、範囲外の座標は計算に使われません。
-i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
13.2 boxblur_opencl
入力映像にboxblurアルゴリズムを適用します。
以下のパラメータを受け付けます。
luma_radius, lr luma_power, lp chroma_radius, cr chroma_power, cp alpha_radius, ar alpha_power, ap
受け付けるオプションの説明は以下のとおりです。
luma_radius, lr chroma_radius, cr alpha_radius, ar
対応する入力プレーンをぼかすために使う、ボックス半径のピクセル単位の式を設定します。
半径の値は非負の数でなければならず、輝度(luma)とアルファのプレーンでは式 min(w,h)/2 の値を、クロマのプレーンでは min(cw,ch)/2 の値を超えてはなりません。
luma_radiusの既定値は "2"。指定しない場合、chroma_radiusとalpha_radiusはluma_radiusに設定された対応する値が既定値となります。
式には以下の定数を含めることができます。
w h
入力の幅と高さ(ピクセル単位)。
cw ch
入力のクロマ画像の幅と高さ(ピクセル単位)。
hsub vsub
水平・垂直のクロマサブサンプル値です。例えばピクセルフォーマット "yuv422p" では、hsubは2、vsubは1です。
luma_power, lp chroma_power, cp alpha_power, ap
boxblurフィルタを対応するプレーンに何回適用するかを指定します。
luma_powerの既定値は2。指定しない場合、chroma_powerとalpha_powerはluma_powerに設定された対応する値が既定値となります。
値が0の場合は効果が無効になります。
13.2.1 Examples
boxblurフィルタを適用し、出力の各ピクセルを、各プレーンについてそれぞれボックス半径luma_radius、chroma_radius、alpha_radiusの平均値にします。フィルタは対応するプレーンにluma_power、chroma_power、alpha_power回適用されます。画像の端にあるピクセルでは半径が画像境界の外には広がらないため、範囲外の座標は計算に使われません。
-
輝度・クロマ・アルファの半径を2に、輝度・クロマ・アルファのpowerを3にしてboxblurフィルタを適用します。フィルタは画像の各プレーンについてボックス半径を2にして3回実行されます。
-i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT -
輝度の半径を2、luma_powerを1、chroma_radiusを4、chroma_powerを5、alpha_radiusを3、alpha_powerを7にしてboxblurフィルタを適用します。
輝度プレーンでは、2x2のボックス半径が1回実行されます。
クロマプレーンでは、4x4のボックス半径が5回実行されます。
アルファプレーンでは、3x3のボックス半径が7回実行されます。
-i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
13.3 colorkey_opencl
RGB色空間でのカラーキーイングです。
このフィルタは以下のオプションを受け付けます。
color
透明に置き換える色です。
similarity
キー色との類似度(パーセント)です。
0.01はキー色と完全に一致するものだけにマッチし、1.0はすべてにマッチします。
blend
ブレンドの割合(パーセント)です。
0.0はピクセルを完全に透明か、まったく透明でないかのどちらかにします。
値を大きくすると半透明のピクセルが生じ、ピクセルの色がキー色に似ているほど透明度が高くなります。
13.3.1 Examples
- 入力中のやや緑がかったピクセルを、わずかにブレンドしつつすべて透明にします。
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
13.4 convolution_opencl
3x3、5x5、7x7行列の畳み込みを適用します。
このフィルタは以下のオプションを受け付けます。
0m 1m 2m 3m
各プレーンの行列を設定します。行列は9個、25個、または49個の符号付き数値の並びです。各プレーンの既定値は 0 0 0 0 1 0 0 0 0。
0rdiv 1rdiv 2rdiv 3rdiv
各プレーンについて、計算された値に対する乗数を設定します。未設定または0の場合は、行列の全要素の和になります。オプション値は 0.0 以上の浮動小数点数でなければなりません。既定値は 1.0。
0bias 1bias 2bias 3bias
各プレーンのバイアスを設定します。この値は乗算の結果に加算されます。画像全体を明るくしたり暗くしたりするのに役立ちます。オプション値は 0.0 以上の浮動小数点数でなければなりません。既定値は 0.0。
13.4.1 Examples
-
シャープを適用します。
-i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT -
ぼかしを適用します。
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT -
エッジ強調を適用します。
-i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT -
エッジ検出を適用します。
-i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT -
対角方向も含むラプラシアンエッジ検出を適用します。
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT -
エンボスを適用します。
-i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
13.5 erosion_opencl
映像に収縮(erosion)効果を適用します。
このフィルタは、ピクセルをその局所的な(3x3)最小値で置き換えます。
以下のオプションを受け付けます。
threshold0 threshold1 threshold2 threshold3
各プレーンの最大変化量を制限します。範囲は [0, 65535] で既定値は 65535。0 の場合、そのプレーンは変更されません。
coordinates
参照するピクセルを指定するフラグです。範囲は [0, 255] で既定値は 255、すなわち8ピクセルすべてが使われます。
x を中心とした局所3x3座標領域へのフラグです。
1 2 3
4 x 5
6 7 8
13.5.1 Example
- threshold0を30、threshold1を40、threshold2を50、coordinatesを231に設定して収縮フィルタを適用し、出力の各ピクセルを、入力におけるそのピクセルを中心とした3x3領域のピクセル1, 2, 3, 6, 7, 8の中の局所最小値にします。入力ピクセルと局所最小値の差が対応するプレーンのしきい値を超える場合、出力ピクセルは「入力ピクセル - 対応するプレーンのしきい値」に設定されます。
-i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
13.6 deshake_opencl
特徴点ベースの映像手ぶれ補正フィルタです。
このフィルタは以下のオプションを受け付けます。
tripod
元のフレームからカメラの動きを一切させないことで三脚をシミュレートします。既定値は 0。
debug
追加のデバッグ情報を表示するかどうかです。処理後の出力とコンソールの両方に表示されます。
なお、コンソールのデバッグ出力を見るには、ffmpegに -v verbose も渡す必要があります。
出力映像での点のマッチングの表示は、RGB入力でのみサポートされます。
既定値は 0。
adaptive_crop
ミラーリングされたピクセルの量を減らすために、境界でごくわずかにクロップを行うかどうかです。
既定値は 1。
refine_features
特徴点をサブピクセルレベルで精緻化するかどうかです。
これをオフにすると、精度と引き換えにわずかに性能が向上します。
既定値は 1。
smooth_strength
カメラ経路に適用するスムージングの強さで、0.0 から 1.0 までです。
1.0 が最大のスムージング強度で、それより小さい値ではスムージングが弱くなります。
0.0 にすると、フィルタがフレームごとにスムージング強度を適応的に選びます。
既定値は 0.0。
smooth_window_multiplier
スムージングウィンドウのサイズ(動き情報を判断するためにバッファリングするフレーム数)を制御します。
スムージングウィンドウのサイズは、映像のフレームレートにこの数値を掛けて決まります。
許容される値の範囲は 0.1 から 10.0 です。
値を大きくすると、カメラ経路をどうスムージングするか判断するための動きデータが増え、滑らかさが向上する可能性がありますが、レイテンシとメモリ使用量も増えます。
既定値は 2.0。
13.6.1 Examples
-
固定の中程度のスムージング強度で映像を安定化します。
-i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT -
デバッグを有効にして(コンソールとレンダリングされた映像の両方で)映像を安定化します。
-i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
13.7 dilation_opencl
映像に膨張(dilation)効果を適用します。
このフィルタは、ピクセルをその局所的な(3x3)最大値で置き換えます。
以下のオプションを受け付けます。
threshold0 threshold1 threshold2 threshold3
各プレーンの最大変化量を制限します。範囲は [0, 65535] で既定値は 65535。0 の場合、そのプレーンは変更されません。
coordinates
参照するピクセルを指定するフラグです。範囲は [0, 255] で既定値は 255、すなわち8ピクセルすべてが使われます。
x を中心とした局所3x3座標領域へのフラグです。
1 2 3
4 x 5
6 7 8
13.7.1 Example
- threshold0を30、threshold1を40、threshold2を50、coordinatesを231に設定して膨張フィルタを適用し、出力の各ピクセルを、入力におけるそのピクセルを中心とした3x3領域のピクセル1, 2, 3, 6, 7, 8の中の局所最大値にします。入力ピクセルと局所最大値の差が対応するプレーンのしきい値を超える場合、出力ピクセルは「入力ピクセル + 対応するプレーンのしきい値」に設定されます。
-i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
13.8 nlmeans_opencl
OpenCLを通じたNon-local Means(非局所平均)ノイズ除去フィルタです。このフィルタはnlmeansと同じオプションを受け付けます。
13.9 overlay_opencl
ある映像を別の映像の上に重ねます。
2つの入力を取り、1つの出力を持ちます。最初の入力が「メイン」映像で、その上に2番目の入力が重ねられます。このフィルタはすべての入力で同じメモリレイアウトを必要とします。そのため、フォーマット変換が必要になる場合があります。
このフィルタは以下のオプションを受け付けます。
x
メイン映像上に重ねる映像のx座標を設定します。既定値は 0。
y
メイン映像上に重ねる映像のy座標を設定します。既定値は 0。
13.9.1 Examples
-
INPUT映像の左上隅に画像LOGOを重ねます。両方の入力はyuv420pフォーマットです。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT -
入力が色チャンネルについて同じメモリレイアウトを持ち、オーバーレイ側に追加のアルファプレーンがある場合です。例えばINPUTがyuv420pで、LOGOがyuva420pのときです。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
13.10 pad_opencl
入力画像にパディングを追加し、元の入力を指定したx, y座標に配置します。
以下のオプションを受け付けます。
width, w height, h
パディングを加えた出力画像のサイズを表す式を指定します。幅または高さの値が0の場合、出力には対応する入力サイズが使われます。
幅の式は高さの式で設定した値を参照でき、その逆も可能です。
幅と高さの既定値は0です。
x y
パディングされた領域内で入力画像を配置するオフセットを、出力画像の上端・左端を基準として指定します。
xの式はyの式で設定した値を参照でき、その逆も可能です。
xとyの既定値は0です。
xまたはyが負の数に評価された場合、入力画像がパディング領域の中央に配置されるように変更されます。
color
パディング領域の色を指定します。このオプションの構文については、(ffmpeg-utils) ffmpeg-utilsマニュアルの「Color」セクションを参照してください。
aspect
解像度ではなくアスペクト比に合わせてパディングします。
width、height、x、yの各オプションの値は、以下の定数を含む式です。
in_w in_h
入力映像の幅と高さです。
iw ih
これらはin_wおよびin_hと同じです。
out_w out_h
width式とheight式で指定された、出力の幅と高さ(パディングされた領域のサイズ)です。
ow oh
これらはout_wおよびout_hと同じです。
x y
x式とy式で指定されたxとyのオフセットです。まだ指定されていない場合はNANです。
a
iw / ih と同じです。
sar
入力のサンプルアスペクト比です。
dar
入力の表示アスペクト比です。(iw / ih) * sar と同じです。
13.11 prewitt_opencl
入力映像ストリームにPrewittオペレータ(https://en.wikipedia.org/wiki/Prewitt_operator)を適用します。
このフィルタは以下のオプションを受け付けます。
planes
どのプレーンをフィルタするかを設定します。既定値は 0xf で、これによりすべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。範囲は [0.0, 65535] で既定値は 1.0。
delta
フィルタ結果に加算する値を設定します。範囲は [-65535, 65535] で既定値は 0.0。
13.11.1 Example
- scaleを2、deltaを10に設定してPrewittオペレータを適用します。
-i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
13.12 program_opencl
OpenCLプログラムを使って映像をフィルタします。
source
OpenCLプログラムのソースファイルです。
kernel
プログラム内のカーネル名です。
inputs
フィルタへの入力数です。既定値は1です。
size, s
出力フレームのサイズです。既定値は最初の入力と同じです。
program_opencl フィルタはframesyncオプションもサポートします。
プログラムソースファイルには、与えられた名前のカーネル関数が含まれていなければならず、これは出力の各プレーンにつき1回実行されます。各プレーンでの実行は、生成すべき各ピクセルに対して1つのワークアイテムを持つ別々の2D global NDRangeとしてエンキューされます。したがって各ワークアイテムのグローバルIDオフセットは、出力先画像におけるピクセルの座標となります。
カーネル関数は以下の引数を取る必要があります。
- 出力先画像、__write_only image2d_t。
この画像が出力になります。カーネルはそのすべてを書き込むべきです。
- フレームインデックス、unsigned int。
これはゼロから始まり、フレームごとに1ずつ増えるカウンタです。
- ソース画像、__read_only image2d_t。
これらは各入力における最新の画像です。カーネルは出力を生成するためにそれらを読み取れますが、書き込むことはできません。
プログラムの例です。
-
入力を出力にコピーします(出力は入力と同じサイズでなければなりません)。
__kernel void copy(__write_only image2d_t destination, unsigned int index, __read_only image2d_t source) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE; int2 location = (int2)(get_global_id(0), get_global_id(1)); float4 value = read_imagef(source, sampler, location); write_imagef(destination, location, value); } -
単純な変換を適用し、入力をインデックスカウンタとともに増えていく量だけ回転させます。ピクセル値はサンプラによって線形補間され、出力は入力と同じ寸法である必要はありません。
__kernel void rotate_image(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float angle = (float)index / 100.0f; float2 dst_dim = convert_float2(get_image_dim(dst)); float2 src_dim = convert_float2(get_image_dim(src)); float2 dst_cen = dst_dim / 2.0f; float2 src_cen = src_dim / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); float2 dst_pos = convert_float2(dst_loc) - dst_cen; float2 src_pos = { cos(angle) * dst_pos.x - sin(angle) * dst_pos.y, sin(angle) * dst_pos.x + cos(angle) * dst_pos.y }; src_pos = src_pos * src_dim / dst_dim; float2 src_loc = src_pos + src_cen; if (src_loc.x < 0.0f || src_loc.y < 0.0f || src_loc.x > src_dim.x || src_loc.y > src_dim.y) write_imagef(dst, dst_loc, 0.5f); else write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc)); } -
2つの入力をブレンドし、各入力の使用量をインデックスカウンタとともに変化させます。
__kernel void blend_images(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src1, __read_only image2d_t src2) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst); int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst); float4 val1 = read_imagef(src1, sampler, src1_loc); float4 val2 = read_imagef(src2, sampler, src2_loc); write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend)); }
13.13 remap_opencl
2 番目の入力(Xmap)と 3 番目の入力(Ymap)の映像ストリームを使ってピクセルを再マッピングします。
出力先の位置 (X, Y) のピクセルは、x = Xmap(X, Y)、y = Ymap(X, Y) で求まる入力元の位置 (x, y) から取得されます。マッピングの値が範囲外の場合、出力先のピクセルには値 0 が使われます。
Xmap と Ymap の入力映像ストリームは同じ寸法でなければなりません。出力映像ストリームは Xmap/Ymap の映像ストリームと同じ寸法になります。Xmap と Ymap の入力映像ストリームは 32 ビット浮動小数点のピクセルフォーマットで、単一チャンネルです。
interp
ピクセル再マッピングに使う補間方法を指定します。指定できる値は near と linear です。既定値は linear です。
fill
マッピングされなかったピクセルの色を指定します。このオプションの構文については ffmpeg-utils マニュアルの「Color」セクションを参照してください。既定の色は black です。
13.14 roberts_opencl
入力映像ストリームに Roberts クロス演算子(https://en.wikipedia.org/wiki/Roberts_cross)を適用します。
このフィルタは次のオプションを受け付けます。
planes
どのプレーンをフィルタするかを設定します。既定値は 0xf で、すべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。範囲は [0.0, 65535] で、既定値は 1.0 です。
delta
フィルタ結果に加算する値を設定します。範囲は [-65535, 65535] で、既定値は 0.0 です。
13.14.1 Example
- scale を 2、delta を 10 にして Roberts クロス演算子を適用する
-i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
13.15 sobel_opencl
入力映像ストリームに Sobel 演算子(https://en.wikipedia.org/wiki/Sobel_operator)を適用します。
このフィルタは次のオプションを受け付けます。
planes
どのプレーンをフィルタするかを設定します。既定値は 0xf で、すべてのプレーンが処理されます。
scale
フィルタ結果に乗算する値を設定します。範囲は [0.0, 65535] で、既定値は 1.0 です。
delta
フィルタ結果に加算する値を設定します。範囲は [-65535, 65535] で、既定値は 0.0 です。
13.15.1 Example
- scale を 2、delta を 10 にして Sobel 演算子を適用する
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
13.16 tonemap_opencl
トーンマッピングによって HDR(PQ/HLG)から SDR への変換を行います。
次のパラメータを受け付けます。
tonemap
使用するトーンマッピング演算子を指定します。tonemap の tonemap オプションと同じです。
param
トーンマッピングアルゴリズムを調整します。tonemap の param オプションと同じです。
desat
この明るさのレベルを超えるハイライトに対して脱色を適用します。パラメータを大きくするほど、より多くの色情報が保持されます。この設定は、超ハイライト部分を(滑らかに)白へ転じさせることで、不自然に飛んだ色になるのを防ぎます。これにより、範囲外の色に関する情報は減りますが、画像はより自然に感じられるようになります。
既定値は 0.5 で、ここでのアルゴリズムは現在のところ CPU 版の tonemap とは少し異なります。0.0 に設定するとこのオプションは無効になります。
threshold
トーンマッピングアルゴリズムのパラメータはシーンごとに微調整されます。そして、シーンが変化したかどうかを検出するために閾値が使われます。現在のフレームの平均輝度と現在の移動平均との差が閾値を超えた場合、シーンの平均輝度とピーク輝度を再計算します。既定値は 0.2 です。
format
出力ピクセルフォーマットを指定します。
現在サポートされているフォーマットは次のとおりです。
p010 nv12 range, r
出力のカラーレンジを設定します。
指定できる値は次のとおりです。
tv/mpeg pc/jpeg
既定値は入力と同じです。
primaries, p
出力の色原色を設定します。
指定できる値は次のとおりです。
bt709 bt2020
既定値は入力と同じです。
transfer, t
出力の伝達特性を設定します。
指定できる値は次のとおりです。
bt709 bt2020
既定値は bt709 です。
matrix, m
出力の色空間マトリクスを設定します。
指定できる値は次のとおりです。
bt709 bt2020
既定値は入力と同じです。
13.16.1 Example
- linear 演算子を使って HDR(PQ/HLG)映像を bt2020 伝達特性の p010 フォーマットに変換する。
-i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
13.17 unsharp_opencl
入力映像をシャープ化、またはぼかします。
次のパラメータを受け付けます。
luma_msize_x, lx
輝度マトリクスの水平方向のサイズを設定します。範囲は [1, 23] で、既定値は 5 です。
luma_msize_y, ly
輝度マトリクスの垂直方向のサイズを設定します。範囲は [1, 23] で、既定値は 5 です。
luma_amount, la
輝度効果の強さを設定します。範囲は [-10, 10] で、既定値は 1.0 です。
負の値は入力映像をぼかし、正の値はシャープ化します。0 にすると効果は無効になります。
chroma_msize_x, cx
クロママトリクスの水平方向のサイズを設定します。範囲は [1, 23] で、既定値は 5 です。
chroma_msize_y, cy
クロママトリクスの垂直方向のサイズを設定します。範囲は [1, 23] で、既定値は 5 です。
chroma_amount, ca
クロマ効果の強さを設定します。範囲は [-10, 10] で、既定値は 0.0 です。
負の値は入力映像をぼかし、正の値はシャープ化します。0 にすると効果は無効になります。
すべてのパラメータは省略可能で、既定では文字列 ’5:5:1.0:5:5:0.0’ と同等になります。
13.17.1 Examples
-
強い輝度シャープ化効果を適用する:
-i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT -
輝度・クロマ両方のパラメータで強いぼかしを適用する:
-i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
13.18 xfade_opencl
OpenCL を使い、カスタムトランジション効果で 2 つの映像をクロスフェードします。
次のオプションを受け付けます。
transition
利用可能なトランジション効果のいずれかを設定します。
custom
カスタムトランジション効果を選択します。実際のトランジションの記述は source および kernel オプションから取得されます。
fade wipeleft wiperight wipeup wipedown slideleft slideright slideup slidedown
既定のトランジションは fade です。
source
カスタムトランジション用の OpenCL プログラムソースファイルです。
kernel
プログラムソースファイルからカスタムトランジションに使うカーネルの名前を設定します。
duration
映像トランジションの長さを設定します。
offset
1 つ目の映像を基準としたトランジション開始時刻を設定します。
プログラムソースファイルには、指定した名前のカーネル関数が含まれていなければなりません。この関数は出力の各プレーンに対して 1 回ずつ実行されます。プレーンごとの各実行は、生成すべき各ピクセルにつき 1 つのワークアイテムを持つ独立した 2 次元のグローバル NDRange としてキューに入れられます。したがって、各ワークアイテムのグローバル ID オフセットは、出力先画像内のピクセルの座標になります。
カーネル関数は次の引数を取る必要があります。
- 出力先画像、__write_only image2d_t。
この画像が出力になります。カーネルはその全体を書き込むべきです。
- 1 つ目の入力元画像、__read_only image2d_t。2 つ目の入力元画像、__read_only image2d_t。
これらは各入力における最新の画像です。カーネルは出力生成のためにこれらを読み取れますが、書き込むことはできません。
- トランジションの進行度、float。この値は常に 0 以上 1 以下です。
プログラム例:
- ドットカーテンのトランジション効果を適用する:
__kernel void blend_images(__write_only image2d_t dst, __read_only image2d_t src1, __read_only image2d_t src2, float progress) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); int2 p = (int2)(get_global_id(0), get_global_id(1)); float2 rp = (float2)(get_global_id(0), get_global_id(1)); float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y); rp = rp / dim; float2 dots = (float2)(20.0, 20.0); float2 center = (float2)(0,0); float2 unused; float4 val1 = read_imagef(src1, sampler, p); float4 val2 = read_imagef(src2, sampler, p); bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center)); write_imagef(dst, p, next ? val1 : val2); }
14 VAAPI Video Filters
VAAPI 映像フィルタは通常、VAAPI デコーダおよび VAAPI エンコーダと組み合わせて使われます。以下に VAAPI 映像フィルタを説明します。
これらのフィルタをコンパイルして有効にするには、FFmpeg を --enable-vaapi で configure する必要があります。
vaapi フィルタを使うには、vaapi デバイスを正しくセットアップする必要があります。詳しくは https://trac.ffmpeg.org/wiki/Hardware/VAAPI を参照してください。
14.1 overlay_vaapi
ある映像を別の映像の上に重ねます。
このフィルタは 2 つの入力を取り、1 つの出力を持ちます。1 つ目の入力が「メイン」映像で、その上に 2 つ目の入力が重ねられます。
このフィルタは次のオプションを受け付けます。
x y
メイン映像上に重ねる映像の x 座標および y 座標の式を設定します。
どちらの式も既定値は "0" です。
w h
メイン映像上に重ねる映像の幅と高さの式を設定します。
既定値は ’w’ が ’overlay_iw’、’h’ が ’overlay_ih*w/overlay_iw’ です。
これらの式には次のパラメータを含められます。
main_w, W main_h, H
メイン入力の幅と高さです。
overlay_iw overlay_ih
オーバーレイ入力の幅と高さです。
overlay_w, w overlay_h, h
オーバーレイ出力の幅と高さです。
overlay_x, x overlay_y, y
メイン内におけるオーバーレイレイヤーの位置です。
alpha
重ねる映像の透明度を設定します。指定できる範囲は 0.0 から 1.0 です。値が大きいほど透明度は低くなります。既定値は 1.0 です。
eof_action
framesync を参照してください。
shortest
framesync を参照してください。
repeatlast
framesync を参照してください。
このフィルタは framesync のオプションもサポートします。
14.1.1 Examples
-
INPUT 映像の左上隅に画像 LOGO を重ねる。このフィルタの両入力は yuv420p フォーマットです。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT -
INPUT 映像の左上隅から (200, 100) のオフセット位置に画像 LOGO を重ねる。両入力は色チャンネルのメモリレイアウトが同じで、オーバーレイには追加のアルファプレーンがある(例: INPUT が yuv420p、LOGO が yuva420p)。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
14.2 tonemap_vaapi
HDR から SDR、または HDR から HDR へのトーンマッピングを行います。現在のところ入力として HDR10 のみを受け付けます。
次のパラメータを受け付けます。
format
出力ピクセルフォーマットを指定します。
既定値は HDR から SDR へのトーンマッピングでは nv12、HDR から HDR へのトーンマッピングでは p010 です。
primaries, p
出力の色原色を設定します。
既定値は HDR から SDR へのトーンマッピングでは bt709、HDR から HDR へのトーンマッピングでは入力と同じです。
transfer, t
出力の伝達特性を設定します。
既定値は HDR から SDR へのトーンマッピングでは bt709、HDR から HDR へのトーンマッピングでは入力と同じです。
matrix, m
出力の色空間マトリクスを設定します。
既定値は HDR から SDR へのトーンマッピングでは bt709、HDR から HDR へのトーンマッピングでは入力と同じです。
display
出力のマスタリングディスプレイの色域(mastering display colour volume)を設定します。これは ’|’ 区切りの 2 つの値のリストで与え、各値は空白区切りです。G, B, R の順でディスプレイ原色の x と y を設定し、続いてホワイトポイントの x と y、ディスプレイ輝度の公称最小値と最大値を設定します。
このオプションを設定すると HDR から HDR へのトーンマッピングが行われます。
light
出力のコンテンツライトレベル情報を設定します。空白区切りの 2 つの値を受け付け、1 つ目が最大ライトレベル、2 つ目が最大平均ライトレベルです。
HDR から SDR へのトーンマッピングでは無視され、HDR から HDR へのトーンマッピングでは任意指定です。
14.2.1 Example
-
HDR(HDR10)映像を bt2020 伝達特性の p010 フォーマットに変換する
tonemap_vaapi=format=p010:t=bt2020-10 -
HDR 映像を HDR 映像に変換する
tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
14.3 hstack_vaapi
入力映像を水平方向に並べて積み重ねます。
これは hstack フィルタの VA-API 版です。各入力ストリームは高さが異なってもよく、このフィルタは元のアスペクト比を保ちつつ各入力ストリームを拡大・縮小します。
次のオプションを受け付けます。
inputs
hstack を参照してください。
shortest
hstack を参照してください。
height
出力の高さを設定します。0 に設定すると、このフィルタは出力の高さを 1 つ目の入力ストリームの高さに合わせます。既定値は 0 です。
14.4 vstack_vaapi
入力映像を垂直方向に並べて積み重ねます。
これは vstack フィルタの VA-API 版です。各入力ストリームは幅が異なってもよく、このフィルタは元のアスペクト比を保ちつつ各入力ストリームを拡大・縮小します。
次のオプションを受け付けます。
inputs
vstack を参照してください。
shortest
vstack を参照してください。
width
出力の幅を設定します。0 に設定すると、このフィルタは出力の幅を 1 つ目の入力ストリームの幅に合わせます。既定値は 0 です。
14.5 xstack_vaapi
入力映像をカスタムレイアウトで積み重ねます。
これは xstack フィルタの VA-API 版です。各入力ストリームはサイズが異なってもよく、このフィルタは各入力ストリームを指定した出力サイズ、または 1 つ目の入力ストリームのサイズに拡大・縮小します。
次のオプションを受け付けます。
inputs
xstack を参照してください。
shortest
xstack を参照してください。
layout
xstack を参照してください。さらに、各入力ストリームの出力サイズを指定できます。
xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid
xstack を参照してください。
grid_tile_size
grid を設定した場合の各入力ストリームの出力サイズを設定します。このオプションを設定しない場合、このフィルタは既定で出力サイズを 1 つ目の入力ストリームのサイズに設定します。このオプションの構文については ffmpeg-utils マニュアルの「Video size」セクションを参照してください。
fill
xstack を参照してください。
14.6 pad_vaapi
入力画像にパディングを加え、元の入力を指定した x, y 座標に配置します。
次のオプションを受け付けます。
width, w height, h
パディングを加えた後の出力画像のサイズを表す式を指定します。width または height の値が 0 の場合、対応する入力サイズが出力に使われます。
width の式は height の式で設定された値を参照でき、その逆も可能です。
width と height の既定値は 0 です。
x y
パディング領域内で、出力画像の上端・左端を基準として入力画像を配置するオフセットを指定します。
x の式は y の式で設定された値を参照でき、その逆も可能です。
x と y の既定値は 0 です。
x または y が負の値に評価された場合、入力画像がパディング領域の中央に配置されるように値が変更されます。
color
パディング領域の色を指定します。このオプションの構文については ffmpeg-utils マニュアルの「Color」セクションを参照してください。
aspect
解像度ではなくアスペクト比に合わせてパディングします。
width、height、x、y オプションの値は、次の定数を含む式です。
in_w in_h
入力映像の幅と高さです。
iw ih
in_w および in_h と同じです。
out_w out_h
width と height の式で指定される出力の幅と高さ(パディング領域のサイズ)です。
ow oh
out_w および out_h と同じです。
x y
x と y の式で指定される x および y のオフセットです。まだ指定されていない場合は NAN です。
a
iw / ih と同じです。
sar
入力のサンプルアスペクト比です。
dar
入力のディスプレイアスペクト比です。(iw / ih) * sar と同じです。
14.7 drawbox_vaapi
入力画像に色付きのボックスを描画します。
次のパラメータを受け付けます。
x y
ボックスの左上隅の座標を指定する式です。既定値は 0 です。
width, w height, h
ボックスの幅と高さを指定する式です。0 の場合は入力の幅と高さとして解釈されます。既定値は 0 です。
color, c
描画するボックスの色を指定します。このオプションの一般的な構文については ffmpeg-utils マニュアルの「Color」セクションを参照してください。
thickness, t
ボックスの枠の太さを設定する式です。値が fill の場合は塗りつぶされたボックスになります。既定値は 3 です。
受け付けられる定数の一覧は以下を参照してください。
replace
値が 1 の場合、描画したボックスのピクセルが映像の色とアルファのピクセルを上書きします。既定値は 0 で、ボックスを入力映像に合成します。
x、y、w、h、t のパラメータは、次の定数を含む式です。
in_h, ih in_w, iw
入力の幅と高さです。
x y
ボックスが描画される x および y のオフセット座標です。
w h
描画されるボックスの幅と高さです。
t
描画されるボックスの太さです。
14.7.1 Examples
-
入力画像の縁に沿って黒いボックスを描画する:
drawbox -
不透明度 50% の赤いボックスを描画する:
drawbox=10:20:200:60:red@0.5
前述の例は次のようにも指定できます:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
-
ボックスをピンク色で塗りつぶす:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill -
2 ピクセルの赤い 2.40:1 マスクを描画する:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
15 VideoToolbox Video Filters
以下に、現在利用可能な VideoToolbox 映像フィルタを説明します。
VideoToolbox フィルタは VideoToolbox フレームワークに依存し、macOS などの Apple プラットフォーム向けに ffmpeg をビルドする際に自動検出されます。自動検出が無効な場合は、configure に --enable-videotoolbox を追加してください。
15.1 scale_vt
VTPixelTransferSession を使って拡大・縮小および色パラメータの変換を行います。
このフィルタは次のオプションを受け付けます。
w h
出力映像の寸法を表す式を設定します。既定値は入力の寸法です。
color_matrix
出力の色空間マトリクスを設定します。
color_primaries
出力の色原色を設定します。
color_transfer
出力の伝達特性を設定します。
15.1.1 Examples
- HDR から SDR への変換を行い、入力の半分のサイズに拡大・縮小する
ffmpeg -hwaccel videotoolbox \ -hwaccel_output_format videotoolbox_vld \ -i hdr.mov \ -c:v hevc_videotoolbox \ -profile:v main \ -b:v 3M \ -vf scale_vt=w=iw/2:h=ih/2:color_matrix=bt709:color_primaries=bt709:color_transfer=bt709 \ -c:a copy \ -tag:v hvc1 \ sdr.mp4
15.2 transpose_vt
入力映像の行と列を入れ替え、必要に応じて反転します。より詳しい例については、ほぼ同じオプションを共有する transpose 映像フィルタを参照してください。
以下のパラメータを受け付けます。
dir
転置の方向を指定します。
以下の値を取れます。
‘cclock_flip’
反時計回りに90度回転し、さらに上下反転します。(既定値)
‘clock’
時計回りに90度回転します。
‘cclock’
反時計回りに90度回転します。
‘clock_flip’
時計回りに90度回転し、さらに上下反転します。
‘hflip’
入力映像を左右反転します。
‘vflip’
入力映像を上下反転します。
passthrough
入力のジオメトリが指定した値に一致する場合は転置を適用しません。以下の値を受け付けます。
‘none’
常に転置を適用します。(既定値)
‘portrait’
縦長のジオメトリ(height >= width のとき)を保持します。
‘landscape’
横長のジオメトリ(width >= height のとき)を保持します。
16 Vulkan Video Filters
以下は現在利用可能な Vulkan 映像フィルタの説明です。
これらのフィルタのコンパイルを有効にするには、FFmpeg を --enable-vulkan と、--enable-libglslang または --enable-libshaderc のいずれかを付けて configure する必要があります。
Vulkan フィルタを実行するには、ハードウェアデバイスを初期化し、そのデバイスをフィルタグラフ内のすべてのフィルタに渡す必要があります。
-init_hw_device vulkan[=name][:device[,key=value...]]
vulkan 型の新しいハードウェアデバイス(名前は name)を、指定したデバイスパラメータと key=value 形式のオプションを使って初期化します。以下のオプションがサポートされています。
debug
1 に設定すると検証レイヤーを有効にします。
linear_images
リニアイメージを割り当てます。デコードには適用されません。
disable_multiplane
マルチプレーンイメージを無効にします。デコードには適用されません。
avoid_host_import
動的なホストメモリインポートの使用を避け、代わりに事前にマップしたバッファへ通常の memcpy() を行います。
-filter_hw_device name
name という名前のハードウェアデバイスを、フィルタグラフ内のすべてのフィルタに渡します。
より詳しい情報は https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options を参照してください。
- 最初のデバイスを選択し、その上で nlmeans_vulkan フィルタを既定のパラメータで実行する例。
-init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
Vulkan フィルタは通常メモリ上のフレームデータにアクセスできないため、すべてのフレームデータは使用前に該当デバイスに接続されたハードウェアサーフェスへアップロード(hwupload)し、使用後に通常メモリへダウンロード(hwdownload)し直す必要があります。なお hwupload はソフトウェアフレームと同じレイアウトのフレームにアップロードするため、入力を正しい形式にするには直前に format フィルタを追加する必要がある場合があります。また hwdownload は出力側ですべての形式をサポートしているわけではないため、出力をサポートされた形式にするには通常、グラフ内の直後にもう1つ format フィルタを挿入する必要があります。
16.1 avgblur_vulkan
平均ぼかしフィルタを適用します。GPU 上で Vulkan を使って実装されています。
このフィルタは以下のオプションを受け付けます。
sizeX
水平方向の半径サイズを設定します。範囲は [1, 32] で既定値は 3 です。
sizeY
垂直方向の半径サイズを設定します。範囲は [1, 32] で既定値は 3 です。
planes
どのプレーンをフィルタするかを設定します。既定値は 0xf で、これによりすべてのプレーンが処理されます。
16.2 blend_vulkan
2 つの Vulkan フレームを互いにブレンドします。
blend フィルタは 2 つの入力ストリームを受け取り 1 つのストリームを出力します。1 番目の入力が「上」のレイヤー、2 番目の入力が「下」のレイヤーになります。既定では、最も長い入力が終了した時点で出力も終了します。
受け付けるオプションの説明は次のとおりです。
c0_mode c1_mode c2_mode c3_mode all_mode
特定のピクセル成分、または all_mode の場合はすべてのピクセル成分のブレンドモードを設定します。既定値は normal です。
成分モードに指定できる値は次のとおりです。
‘normal’ ‘multiply’
16.3 bwdif_vulkan
bwdif、すなわち「Bob Weaver Deinterlacing Filter」アルゴリズムを使ったデインターレーサーで、GPU 上で Vulkan を使って実装されています。
以下のパラメータを受け付けます。
mode
採用するインターレース処理のモードです。以下のいずれかの値を受け付けます。
0, send_frame
1 フレームにつき 1 フレームを出力します。
1, send_field
1 フィールドにつき 1 フレームを出力します。
既定値は send_field です。
parity
入力のインターレース映像で想定するフィールドの優先順位です。以下のいずれかの値を受け付けます。
0, tff
トップフィールドが先であると想定します。
1, bff
ボトムフィールドが先であると想定します。
-1, auto
フィールド優先順位の自動検出を有効にします。
既定値は auto です。インターレースが不明な場合、またはデコーダがこの情報を出力しない場合は、トップフィールドが先であると想定します。
deint
どのフレームをデインターレースするかを指定します。以下のいずれかの値を受け付けます。
0, all
すべてのフレームをデインターレースします。
1, interlaced
インターレースとしてマークされたフレームのみをデインターレースします。
既定値は all です。
16.4 chromaber_vulkan
色収差を模したエフェクトを適用します。RGB 入力で最も効果を発揮しますが、YCbCr 入力でも同様の効果が得られます。
dist_x
水平方向の変位倍率です。各クロマピクセルの位置が、画像中心を起点としてこの値だけ乗算されます。既定値は 0 です。
dist_y
同様に、垂直方向の変位倍率を設定します。既定値は 0 です。
16.5 color_vulkan
単色の Vulkan フレームを生成する映像ソースです。ベンチマークやオーバーレイに役立ちます。
以下のパラメータを受け付けます。
color
使用する色です。名前または16進値で指定します。既定値は black です。
size
出力フレームのサイズです。既定値は 1920x1080 です。
rate
出力するフレームレートです。既定値は毎秒 60 フレームです。
duration
映像の長さです。既定値は -0.000001 です。
sar
映像のサンプルアスペクト比です。既定値は 1/1 です。
format
出力する Vulkan フレームのピクセル形式です。既定値は yuv444p です。
out_range
出力する YCbCr サンプル範囲を設定します。
これにより自動検出された値を上書きできるほか、出力やエンコーダに使用する特定の値を強制できます。指定しない場合、範囲はピクセル形式に依存します。指定できる値は次のとおりです。
‘auto/unknown’
自動的に選択します。
‘jpeg/full/pc’
フルレンジ(8ビット輝度の場合は 0〜255)を設定します。
‘mpeg/limited/tv’
「MPEG」レンジ(8ビット輝度の場合は 16〜235)を設定します。
16.6 vflip_vulkan
画像を上下反転します。
16.7 hflip_vulkan
画像を左右反転します。
16.8 flip_vulkan
画像を垂直軸と水平軸の両方に沿って反転します。
16.9 gblur_vulkan
Vulkan フレームにガウシアンぼかしフィルタを適用します。
このフィルタは以下のオプションを受け付けます。
sigma
水平方向のシグマ、すなわちガウシアンぼかしの標準偏差を設定します。既定値は 0.5 です。
sigmaV
垂直方向のシグマを設定します。負の値の場合は sigma と同じになります。既定値は -1 です。
planes
どのプレーンをフィルタするかを設定します。既定ではすべてのプレーンがフィルタされます。
size
水平軸方向のカーネルサイズを設定します。既定値は 19 です。
sizeV
垂直軸方向のカーネルサイズを設定します。既定値は 0 で、これは size と同じ値を使うことを意味します。
16.10 nlmeans_vulkan
Non-Local Means アルゴリズムを使ってフレームのノイズを除去します。GPU 上で Vulkan を使って実装されています。nlmeans や nlmeans_opencl よりも多くのピクセル形式をサポートしており、アルファチャンネルにも対応しています。
このフィルタは以下のオプションを受け付けます。
s
すべての成分に対するノイズ除去の強度を設定します。既定値は 1.0 です。範囲は [0.0, 100.0] でなければなりません。
p
すべてのプレーンに対するパッチサイズを設定します。既定値は 7 です。[0, 99] の範囲の奇数でなければなりません。
r
リサーチサイズを設定します。既定値は 15 です。[0, 99] の範囲の奇数でなければなりません。
t
並列度を設定します。既定値は 8 です。[1, 64] の範囲の数値でなければなりません。値を大きくするとより多くの VRAM を使いますが、必ずしも速度向上につながるとは限りません。最適な値はハードウェアと入力に依存します。
s0 s1 s2 s3
特定の成分に対するノイズ除去の強度を設定します。既定値は 1.0 で、s と同じです。範囲は [0.0, 100.0] でなければなりません。0.0 にするとその成分のノイズ除去が無効になります。
p0 p1 p2 p3
特定の成分に対するパッチサイズを設定します。既定値は 7 で、p と同じです。[0, 99] の範囲の奇数でなければなりません。
16.11 overlay_vulkan
ある映像を別の映像の上にオーバーレイします。
2 つの入力を受け取り、1 つの出力を持ちます。1 番目の入力が「メイン」の映像で、その上に 2 番目の入力が重ねられます。このフィルタはすべての入力が同じピクセル形式を使うことを要求します。そのため、形式の変換が必要になる場合があります。
このフィルタは以下のオプションを受け付けます。
x
メイン映像上に重ねる映像の x 座標を設定します。既定値は 0 です。
y
メイン映像上に重ねる映像の y 座標を設定します。既定値は 0 です。
16.12 transpose_vulkan
入力映像の行と列を入れ替え、必要に応じて反転します。より詳しい例については、ほぼ同じオプションを共有する transpose 映像フィルタを参照してください。
以下のパラメータを受け付けます。
dir
転置の方向を指定します。
以下の値を取れます。
‘cclock_flip’
反時計回りに90度回転し、さらに上下反転します。(既定値)
‘clock’
時計回りに90度回転します。
‘cclock’
反時計回りに90度回転します。
‘clock_flip’
時計回りに90度回転し、さらに上下反転します。
passthrough
入力のジオメトリが指定した値に一致する場合は転置を適用しません。以下の値を受け付けます。
‘none’
常に転置を適用します。(既定値)
‘portrait’
縦長のジオメトリ(height >= width のとき)を保持します。
‘landscape’
横長のジオメトリ(width >= height のとき)を保持します。
17 QSV Video Filters
以下は現在利用可能な QSV 映像フィルタの説明です。
これらのフィルタのコンパイルを有効にするには、FFmpeg を --enable-libmfx または --enable-libvpl を付けて configure する必要があります。
QSV フィルタを使うには、QSV デバイスを正しくセットアップする必要があります。詳しくは https://trac.ffmpeg.org/wiki/Hardware/QuickSync を参照してください。
17.1 hstack_qsv
入力映像を水平方向に並べます。
これは hstack フィルタの QSV 版です。各入力ストリームは高さが異なっていてもよく、このフィルタは元のアスペクト比を保ちながら各入力ストリームを拡大・縮小します。
以下のオプションを受け付けます。
inputs
hstack を参照してください。
shortest
hstack を参照してください。
height
出力の高さを設定します。0 に設定すると、出力の高さを 1 番目の入力ストリームの高さに設定します。既定値は 0 です。
17.2 vstack_qsv
入力映像を垂直方向に並べます。
これは vstack フィルタの QSV 版です。各入力ストリームは幅が異なっていてもよく、このフィルタは元のアスペクト比を保ちながら各入力ストリームを拡大・縮小します。
以下のオプションを受け付けます。
inputs
vstack を参照してください。
shortest
vstack を参照してください。
width
出力の幅を設定します。0 に設定すると、出力の幅を 1 番目の入力ストリームの幅に設定します。既定値は 0 です。
17.3 xstack_qsv
映像入力をカスタムレイアウトで並べます。
これは xstack フィルタの QSV 版です。
以下のオプションを受け付けます。
inputs
xstack を参照してください。
shortest
xstack を参照してください。
layout
xstack を参照してください。さらに、各入力ストリームの出力サイズをユーザーが指定できます。
xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid
xstack を参照してください。
grid_tile_size
grid が設定されているときの各入力ストリームの出力サイズを設定します。このオプションを設定しない場合、このフィルタは既定で出力サイズを 1 番目の入力ストリームのサイズに設定します。このオプションの構文については、ffmpeg-utils マニュアルの (ffmpeg-utils)「Video size」の節を確認してください。
fill
xstack を参照してください。
18 Video Sources
以下は現在利用可能な映像ソースの説明です。
18.1 buffer
映像フレームをバッファし、フィルタチェインで利用できるようにします。
このソースは主にプログラムからの利用、特に libavfilter/buffersrc.h で定義されたインターフェイスを通じた利用を想定しています。
以下のパラメータを受け付けます。
video_size
バッファする映像フレームのサイズ(幅と高さ)を指定します。このオプションの構文については、ffmpeg-utils マニュアルの (ffmpeg-utils)「Video size」の節を確認してください。
width
入力映像の幅です。
height
入力映像の高さです。
pix_fmt
バッファする映像フレームのピクセル形式を表す文字列です。ピクセル形式に対応する番号でも、ピクセル形式名でもかまいません。
time_base
バッファするフレームのタイムスタンプが想定するタイムベースを指定します。
frame_rate
映像ストリームに期待するフレームレートを指定します。
colorspace
バッファする映像フレームの色空間を表す文字列です。色空間に対応する番号でも、色空間名でもかまいません。
range
バッファする映像フレームの色範囲を表す文字列です。色範囲に対応する番号でも、色範囲名でもかまいません。
alpha_mode
バッファする映像フレームのアルファモードを表す文字列です。アルファモードに対応する番号でも、アルファモード名でもかまいません。
pixel_aspect, sar
入力映像のサンプル(ピクセル)アスペクト比です。
hw_frames_ctx
ハードウェアピクセル形式を使う場合、これは入力フレームを記述する AVHWFramesContext への参照でなければなりません。
例えば次のコマンド:
buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
は、サイズ 320x240、形式 "yuv410p" の映像フレームを受け付けるようソースに指示します。このときタイムスタンプのタイムベースは 1/24、ピクセルは正方形(1:1 のサンプルアスペクト比)と想定されます。"yuv410p" という名前のピクセル形式は番号 6 に対応する(libavutil/pixfmt.h の enum AVPixelFormat の定義を確認してください)ため、この例は次と等価です:
buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
あるいは、オプションをフラットな文字列として指定することもできますが、この構文は非推奨です。
width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den
18.2 cellauto
初等セルオートマトンが生成するパターンを作成します。
セルオートマトンの初期状態は filename および pattern オプションで定義できます。これらのオプションを指定しない場合、初期状態はランダムに生成されます。
新しいフレームごとに、映像内の新しい1行がセルオートマトンの次世代の結果で埋められます。フレーム全体が埋まったときの挙動は scroll オプションで定義されます。
このソースは以下のオプションを受け付けます。
filename, f
セルオートマトンの初期状態、つまり開始行を、指定したファイルから読み込みます。ファイル内では、空白以外の各文字が生きたセルとみなされ、改行で行が終了し、それ以降の文字は無視されます。
pattern, p
セルオートマトンの初期状態、つまり開始行を、指定した文字列から読み込みます。
文字列内の空白以外の各文字が生きたセルとみなされ、改行で行が終了し、それ以降の文字は無視されます。
rate, r
映像のレート、つまり毎秒生成されるフレーム数を設定します。既定値は 25 です。
random_fill_ratio, ratio
セルオートマトンの初期行のランダムな充填率を設定します。0 から 1 までの浮動小数点数で、既定値は 1/PHI です。
このオプションは、ファイルまたはパターンを指定した場合は無視されます。
random_seed, seed
初期行をランダムに埋めるためのシードを設定します。0 から UINT32_MAX の間の整数でなければなりません。指定しない場合、または明示的に -1 を設定した場合、フィルタはベストエフォートで良好なランダムシードを使おうとします。
rule
セルオートマトンのルールを設定します。0 から 255 までの数値です。既定値は 110 です。
size, s
出力映像のサイズを設定します。このオプションの構文については、ffmpeg-utils マニュアルの (ffmpeg-utils)「Video size」の節を確認してください。
filename または pattern を指定した場合、サイズは既定で幅が指定した初期状態の行の幅に設定され、高さは width * PHI に設定されます。
size を設定する場合は、指定したパターン文字列の幅を含む必要があり、指定したパターンはより大きな行の中央に配置されます。
filename もパターン文字列も指定しない場合、size の値は既定で "320x518"(ランダムに生成された初期状態に使用)になります。
scroll
1 に設定すると、出力のすべての行が既に埋まったときに出力を上方向にスクロールします。0 に設定すると、最下行が埋まった直後に、新しく生成された行が最上行の上に書き込まれます。既定値は 1 です。
start_full, full
1 に設定すると、最初のフレームを出力する前に、生成した行で出力を完全に埋めます。これが既定の挙動で、無効にするには値を 0 に設定します。
stitch
1 に設定すると、行の左端と右端を縫い合わせます。これが既定の挙動で、無効にするには値を 0 に設定します。
18.2.1 Examples
-
pattern から初期状態を読み込み、サイズ 200x400 の出力を指定します。
cellauto=f=pattern:s=200x400 -
幅 200 セルのランダムな初期行を、充填率 2/3 で生成します:
cellauto=ratio=2/3:s=200x200 -
幅 100 の初期行の中央に置いた 1 つの生きたセルから始まる、ルール 18 が生成するパターンを作成します:
cellauto=p=@:s=100x400:full=0:rule=18 -
より複雑な初期パターンを指定します:
cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
18.3 coreimagesrc
OSX 上で Apple の CoreImage API を使い GPU 上で生成する映像ソースです。
この映像ソースは coreimage 映像フィルタの特殊版です。適用するフィルタチェインの先頭で core image ジェネレータを使ってコンテンツを生成します。
coreimagesrc 映像ソースは以下のオプションを受け付けます。
list_generators
利用可能なすべてのジェネレータを、それぞれのオプション、取りうる最小値・最大値、および既定値とともに一覧表示します。
list_generators=true
size, s
ソースとなる映像のサイズを指定します。このオプションの構文については、ffmpeg-utils マニュアルの (ffmpeg-utils)「Video size」の節を確認してください。既定値は 320x240 です。
rate, r
ソースとなる映像のフレームレートを、毎秒生成されるフレーム数として指定します。frame_rate_num/frame_rate_den 形式の文字列、整数、浮動小数点数、または有効な映像フレームレートの略記でなければなりません。既定値は "25" です。
sar
ソースとなる映像のサンプルアスペクト比を設定します。
duration, d
ソースとなる映像の長さを設定します。受け付ける構文については、ffmpeg-utils(1) マニュアルの (ffmpeg-utils)Time duration の節を参照してください。
指定しない場合、または表現された長さが負の場合、映像は無限に生成されるものとみなされます。
さらに、coreimage 映像フィルタのすべてのオプションを受け付けます。CPU-HOST 間の転送なしで、生成した入力をさらに処理するために完全なフィルタチェインを使えます。詳しくは coreimage のドキュメントと例を参照してください。
18.3.1 Examples
- CIQRCodeGenerator を使って FFmpeg ホームページの QR コードを作成します。Apple 標準の bash シェル向けに、完全かつエスケープ済みのコマンドラインとして示します:
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
この例は、nullsrc 映像ソースを必要としない点を除けば、coreimage の QRCode の例と等価です。
18.4 ddagrab
Desktop Duplication API を介して Windows のデスクトップをキャプチャします。
このフィルタは D3D11 ハードウェアフレームのみを返すため、GPU 上でのエンコードや処理に使えます。したがって、何らかのソフトウェア処理を行うには明示的な hwdownload が必要です。
以下のオプションを受け付けます。
output_idx
キャプチャする DXGI 出力インデックスです。
通常は Windows が画面に割り当てたインデックスから 1 を引いた値に対応するため、0 から始まります。
既定では出力 0 です。
draw_mouse
マウスカーソルを描画するかどうかです。
既定では true です。
ハードウェアカーソルにのみ影響します。ゲームやアプリケーションが独自のカーソルを描画している場合、それは常にキャプチャされます。
framerate
デスクトップをキャプチャする最大フレームレートです。連続するフレーム間の間隔は、このフレームレートの逆数より小さくなることはありません。dup_frames が true(既定値)で、かつデスクトップの更新が十分頻繁でない場合、フィルタは直前のフレームを複製します。なお、背後でのバッファリングは行われないため、フィルタが十分頻繁にポーリングされない場合、実際のフレーム間隔は大幅に大きくなることがあります。
既定では 30 FPS です。
video_size
キャプチャする映像のサイズを指定します。
既定では画面の全サイズです。
画面サイズより小さい場合は、下端・右端からクロップされます。
offset_x
キャプチャする映像の水平方向のオフセットです。
offset_y
キャプチャする映像の垂直方向のオフセットです。
output_fmt
希望するフィルタの出力形式です。既定では 8 ビット BGRA です。
以下の値を受け付けます。
‘auto’
サポートされるすべての出力形式を DDA に渡し、DDA が使うことに決めた形式を返します。
‘8bit’ ‘bgra’
8 ビット形式は常に機能し、必要に応じて DDA がそれらに変換します。
‘10bit’ ‘x2bgr10’
10 ビット形式を要求したが利用できない場合、フィルタの初期化は失敗します。
dup_frames
このオプションを true(既定値)に設定すると、フィルタはデスクトップが更新されていないときにフレームを複製し、目標フレームレートをほぼ一定に保ちます。false に設定すると、フィルタはデスクトップが更新されるまで待ちます(この場合、フレーム間隔は大幅に変動することがあります)。
18.4.1 Examples
プライマリスクリーンをキャプチャし、nvenc でエンコードする例:
ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4
lavfi デバイスを介さず、フィルタを直接使うこともできます。次の例はフレームをダウンロードして libx264 でエンコードする方法も示しています。この場合、出力フォーマットを明示的に指定する必要があります:
ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4
デスクトップの一部分だけをキャプチャしたい場合は、より小さいサイズとスクリーン内のオフセットを指定すればよいでしょう:
ddagrab=video_size=800x600:offset_x=100:offset_y=100
18.5 gfxcapture
Windows.Graphics.Capture API を使ってウィンドウやモニターをキャプチャします。
このソースはアプリケーションウィンドウやモニター全体を低オーバーヘッドでキャプチャします。フィルタは d3d11 フォーマットのハードウェアフレームを出力します。システムメモリ上のフレームが必要な場合は hwdownload,format= を使ってください。
キャプチャするウィンドウは、タイトル・クラス名・実行ファイル名に対する正規表現や、明示的なネイティブハンドル、あるいはモニターインデックスや明示的なネイティブハンドルで選択できます。ウィンドウは指定したすべての式に一致する必要があります。最初に一致したウィンドウが選ばれ、その順序は Windows が返す順に従います。
明示的なハンドル(hwnd、hmonitor)はパターンやインデックスによる選択より優先されます。ハンドルもモニターインデックスも与えられない場合、指定した正規表現に最初に一致したウィンドウがキャプチャされます。
このソースは安定した FPS を保持しません。コンポジターがフレームを提供するレートそのままで返し、max_framerate による上限のみが適用されます。安定したレートが必要な場合は、fps フィルタを追加して必要に応じてフレームを破棄・複製してください。
キャプチャ中にキャプチャ元が消失した場合(ウィンドウが閉じられた、モニターが切断された等)、フィルタは EOF を返します。
このソースは以下のオプションを受け付けます:
window_title
ウィンドウタイトルに対して照合される ECMAScript 正規表現。大文字小文字を区別しない照合のための PCRE スタイルの (?i) プレフィックスに対応します。
window_class
window_title と同様だが、ウィンドウのクラス名に対して照合されます。
window_exe
window_title と同様だが、ウィンドウのプロセスの実行ファイル名に対して照合されます。
monitor_idx
キャプチャするモニターの 0 始まりのインデックス。
window を設定することもでき、その場合はフィルタ初期化時に選択されたウィンドウが表示されているモニターをキャプチャします。
hwnd
明示的なネイティブウィンドウハンドル(HWND)。
hmonitor
明示的なネイティブモニターハンドル(HMONITOR)。
capture_cursor
マウスカーソルをキャプチャします。既定値で有効です。
capture_border
ウィンドウ装飾やボーダーを含む、ウィンドウの全領域をキャプチャします。既定値で無効です。
display_border
キャプチャ対象のウィンドウの周囲に黄色のハイライトボーダーを描画します。既定値で無効です。
max_framerate
最大キャプチャフレームレート。映像レート(例: 30、60/1、24000/1001)を受け付けます。既定値は 60 FPS です。実際のレートはコンポジターがウィンドウ/モニターをレンダリングするレートであり、このオプションで上限が設定されます。
width
出力キャンバスの幅を強制します。0(既定値)の場合は、初期にキャプチャしたソースの幅が使われます。負の数を指定した場合、幅はその数の次の倍数まで切り下げられます。
resize_mode を参照してください。
height
出力キャンバスの高さを強制します。0(既定値)の場合は、初期にキャプチャしたソースの高さが使われます。負の数を指定した場合、高さはその数の次の倍数まで切り下げられます。
resize_mode を参照してください。
crop_left
キャプチャしたフレームの左側からこのピクセル数だけ切り取ります。
crop_top
キャプチャしたフレームの左側からこのピクセル数だけ切り取ります。
crop_right
キャプチャしたフレームの左側からこのピクセル数だけ切り取ります。
crop_bottom
キャプチャしたフレームの左側からこのピクセル数だけ切り取ります。
premultiplied
1 に設定すると、乗算済みアルファのフレームを返します。既定値は 0(ストレートアルファ) です。
resize_mode
キャプチャした内容を出力キャンバスのサイズにどのように合わせるかを定義します。指定できる値:
‘crop’
キャンバスサイズに合わせて切り取ります(または黒でパディングします)。(既定値)
‘scale’
ソースをキャンバスいっぱいに拡大縮小します。アスペクト比が変わる可能性があります。
‘scale_aspect’
アスペクト比を保ったまま、ソースをキャンバス内に収まるように拡大縮小します。残りの領域は黒で埋められます。
scale_mode
リサイズが必要なときに使われるスケーリングアルゴリズム。
指定できる値:
‘point’
最近傍(ピクセル化された)スケーリング。
‘bilinear’
バイリニアフィルタリング。(既定値)
‘bicubic’
バイキュービックフィルタリング。内容によっては、よりぼやける可能性がありますが、スケーリングのアーティファクトは少なくなります。
output_fmt
D3D11 ハードウェアフレーム内での出力ピクセルフォーマットの希望値。
指定できる値:
‘bgra’ ‘8bit’
8 ビット BGRA 出力(既定値)
‘x2bgr10’ ‘10bit’
10 ビット BGR 出力
‘rgbaf16’ ‘16bit’
16 ビット浮動小数点 RGBA 出力
18.5.1 Examples
-
タイトル(大文字小文字を区別しない)でウィンドウを最大 60 fps でキャプチャします:
ffmpeg -filter_complex gfxcapture=window_title='(?i)My Application':max_framerate=60,hwdownload,format=bgra,format=yuv420p -c:v libx264 -crf 15 capture.mp4 -
モニター 1 をネイティブのリフレッシュレートで、10 ビット色深度でキャプチャし、アスペクト比を保って 1920x1080 にスケールします:
ffmpeg -filter_complex gfxcapture=monitor_idx=1:width=1920:height=1080:resize_mode=scale_aspect:output_fmt=10bit -c:v hevc_nvenc -cq 15 capture.mp4 -
実行ファイル名でウィンドウをキャプチャし、ボーダーを描画し、ポイントスケーリングを強制し、60 fps 固定でキャプチャします:
ffmpeg -filter_complex gfxcapture=window_exe='^firefox.exe$':display_border=1:scale_mode=point,fps=60 -rc qvbr -qvbr_quality_level 15 -c:v h264_amf capture.mp4
18.6 gradients
いくつかのグラデーションを生成します。
size, s
フレームサイズを設定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は "640x480" です。
rate, r
フレームレートを 1 秒あたりのフレーム数で設定します。既定値は "25" です。
c0, c1, c2, c3, c4, c5, c6, c7
8 つの色を設定します。色の既定値はランダムに 1 つ選びます。
x0, y0, y0, y1
グラデーション線の始点と終点を設定します。負の値や範囲外の場合はランダムに選ばれます。
nb_colors, n
一度に使う色の数を設定します。指定できる範囲は 2 から 8 です。既定値は 2 です。
seed
グラデーション線の点を選ぶためのシードを設定します。
duration, d
ソース映像の長さを設定します。受け付ける構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration セクションを参照してください。
指定しない場合、または指定した長さが負の場合、映像は無限に生成されるものとみなされます。
speed
グラデーション回転の速度を設定します。
type, t
グラデーションのタイプを設定します。指定できる値:
‘linear’ ‘radial’ ‘circular’ ‘spiral’ ‘square’
既定のタイプは linear です。
18.6.1 Commands
このソースは上記オプションの一部をコマンドとしてサポートします。
18.7 mandelbrot
マンデルブロ集合のフラクタルを生成し、start_x と start_y で指定した点に向けて段階的にズームします。
このソースは以下のオプションを受け付けます:
end_pts
終端の pts 値を設定します。既定値は 400 です。
end_scale
終端のスケール値を設定します。浮動小数点値でなければなりません。既定値は 0.3 です。
inner
内側の彩色モード、すなわちマンデルブロフラクタルの内部領域を描画するために使われるアルゴリズムを設定します。
以下のいずれかの値をとります:
black
黒モードを設定します。
convergence
収束までの時間を表示します。
mincol
反復の原点に最も近い点に基づいて色を設定します。
period
周期モードを設定します。
既定値は mincol です。
bailout
ベイルアウト値を設定します。既定値は 10.0 です。
maxiter
レンダリングアルゴリズムが行う反復の最大回数を設定します。既定値は 7189 です。
outer
外側の彩色モードを設定します。以下のいずれかの値をとります:
iteration_count
反復回数モードを設定します。
normalized_iteration_count
正規化反復回数モードを設定します。
既定値は normalized_iteration_count です。
rate, r
フレームレートを 1 秒あたりのフレーム数で設定します。既定値は "25" です。
size, s
フレームサイズを設定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は "640x480" です。
start_scale
初期のスケール値を設定します。既定値は 3.0 です。
start_x
初期の x 位置を設定します。-100 から 100 までの浮動小数点値でなければなりません。既定値は -0.743643887037158704752191506114774 です。
start_y
初期の y 位置を設定します。-100 から 100 までの浮動小数点値でなければなりません。既定値は -0.131825904205311970493132056385139 です。
18.8 mptestsrc
MPlayer のテストフィルタが生成するような、各種テストパターンを生成します。
生成される映像のサイズは固定で、512x512 です。このソースは特にエンコード機能のテストに役立ちます。
このソースは以下のオプションを受け付けます:
rate, r
ソース映像のフレームレートを、1 秒あたりに生成されるフレーム数として指定します。frame_rate_num/frame_rate_den の形式の文字列、整数、浮動小数点数、または有効な映像フレームレートの略記の文字列でなければなりません。既定値は "25" です。
duration, d
ソース映像の長さを設定します。受け付ける構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration セクションを参照してください。
指定しない場合、または指定した長さが負の場合、映像は無限に生成されるものとみなされます。
test, t
実行するテストの番号または名前を設定します。サポートされるテストは以下のとおりです:
dc_luma dc_chroma freq_luma freq_chroma amp_luma amp_chroma cbp mv ring1 ring2 all max_frames, m
各テストで生成されるフレームの最大数を設定します。既定値は 30 です。
既定値は "all" で、これはすべてのテストのリストを順に巡回します。
例をいくつか挙げる:
mptestsrc=t=dc_luma
これは "dc_luma" テストパターンを生成します。
18.9 frei0r_src
frei0r ソースを提供します。
このフィルタのコンパイルを有効にするには、frei0r ヘッダをインストールし、FFmpeg を --enable-frei0r で構成する必要があります。
このソースは以下のパラメータを受け付けます:
size
生成する映像のサイズ。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。
framerate
生成する映像のフレームレート。num/den の形式の文字列、またはフレームレートの略記でも構いません。
filter_name
読み込む frei0r ソースの名前。frei0r とパラメータの設定方法に関する詳細は、映像フィルタのドキュメントの frei0r セクションを参照してください。
filter_params
frei0r ソースに渡すパラメータの '|' 区切りのリスト。
例えば、サイズ 200x200、フレームレート 10 の frei0r partik0l ソースを生成し、overlay フィルタのメイン入力にオーバーレイするには:
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
18.10 life
ライフパターンを生成します。
このソースは John Conway のライフゲームを一般化したものに基づいています。
ソース入力はライフの格子を表し、各ピクセルは「生」または「死」のいずれかの状態をとるセルを表します。各セルは、水平・垂直・斜めに隣接する 8 つの近傍セルと相互作用します。
各相互作用において、格子は採用された規則に従って変化します。この規則は、セルが生き続ける、または誕生するための近傍の生セルの数を指定します。rule オプションで採用する規則を指定できます。
このソースは以下のオプションを受け付けます:
filename, f
初期格子状態を読み込むファイルを設定します。ファイル内では、空白でない文字はすべて生セルとみなされ、改行は各行の終わりを区切るために使われます。
このオプションを指定しない場合、初期格子はランダムに生成されます。
rate, r
映像レート、すなわち 1 秒あたりに生成されるフレーム数を設定します。既定値は 25 です。
random_fill_ratio, ratio
初期ランダム格子のランダム充填率を設定します。0 から 1 の範囲の浮動小数点値で、既定値は 1/PHI です。ファイルが指定されている場合は無視されます。
random_seed, seed
初期ランダム格子を埋めるためのシードを設定します。0 から UINT32_MAX までの整数でなければなりません。指定しない場合、または明示的に -1 に設定した場合、フィルタはベストエフォートで良好なランダムシードを使おうとします。
rule
ライフの規則を設定します。
規則は "SNS/BNB" という種類のコードで指定できます。ここで NS と NB は 0-8 の範囲の数字の列で、NS は生セルを生き続けさせる近傍生セルの数を、NB は死セルを生に変える(すなわち「誕生」させる)近傍生セルの数を指定します。"S" と "B" の代わりにそれぞれ "s" と "b" を使ってもかまいません。
あるいは、規則を 18 ビットの整数で指定することもできます。上位 9 ビットは、各近傍生セル数に対してセルが生のときの次の状態を符号化するために使われ、下位ビットは新しいセルを「誕生」させる規則を指定します。上位のビットほど近傍セル数が大きい場合を符号化します。例えば 6153 = (12<<9)+9 という数は、生き続ける規則 12 と誕生規則 9 を指定し、これは "S23/B03" に対応します。
既定値は "S23/B3" で、これはオリジナルの Conway のライフゲームの規則であり、近傍に 2 つまたは 3 つの生セルがあればセルを生かし続け、死セルの周りに 3 つの生セルがあれば新しいセルを誕生させます。
size, s
出力映像のサイズを設定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。
filename が指定されている場合、サイズは既定で入力ファイルと同じサイズに設定されます。size が設定されている場合は、入力ファイルで指定されたサイズを含んでいなければならず、そのファイルで定義された初期格子は、より大きな結果領域の中央に配置されます。
filename が指定されていない場合、size 値は既定で "320x240" になります(ランダムに生成された初期格子に使われます)。
stitch
1 に設定すると、格子の左右の端どうし、および上下の端どうしを縫い合わせます。既定値は 1。
mold
セルのカビ化速度を設定します。設定すると、死セルは mold のステップで death_color から mold_color へと変化します。mold は 0 から 255 までの値をとれます。
life_color
生きている(または新たに誕生した)セルの色を設定します。
death_color
死セルの色を設定します。mold が設定されている場合、これは死セルを表すために使われる最初の色となります。
mold_color
完全に死んでカビの生えたセルのカビ色を設定します。
これら 3 つの色オプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」セクションを参照してください。
18.10.1 Examples
-
pattern から格子を読み込み、300x300 ピクセルの格子の中央に配置します:
life=f=pattern:s=300x300 -
充填率 2/3 で 200x200 のランダム格子を生成します:
life=ratio=2/3:s=200x200 -
ランダムに生成した格子を変化させるためのカスタム規則を指定します:
life=rule=S14/B34 -
ffplayを使った、ゆるやかな死の効果(mold)付きの完全な例:ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
18.11 perlin
パーリンノイズを生成します。
パーリンノイズは空間的に局所連続性を持つ一種のノイズです。これは空間および時間に連続性を持つパターンの生成に使えます。例えば煙、流体、地形のシミュレーションなどです。
octaves オプションで複数のオクターブを指定した場合、パーリンノイズは各成分の周波数を倍にした成分の和として生成されます。この場合 persistence オプションは、前の成分に対する振幅の比を指定します。オクターブ成分を増やすと、生成されるノイズにより高い周波数のディテール(例えば生成された地形において、岩による小さなサイズの変化など)を指定できます。
18.11.1 Options
size, s
バッファされる映像フレームのサイズ(幅と高さ)を指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 320x240 です。
rate, r
映像ストリームに期待されるフレームレートを、1 秒あたりのフレーム数として指定します。既定値は 25 です。
octaves
ノイズを構成する成分の総数を指定します。各成分は周波数が倍になります。既定値は 1 です。
persistence
前のオクターブ成分の振幅に対して、次のオクターブ成分の振幅を計算するために使う比を設定します。既定値は 1 です。
xscale yscale
x, y 座標に乗じるスケール係数を定義します。これは x 軸または y 軸に沿ってパターンを引き伸ばした効果を定義するのに役立ちます。既定値は 1 です。
tscale
時間座標に乗じるスケール係数を定義します。これは時間変化の速度を変えるのに役立ちます。既定値は 1 です。
random_mode
初期パターンを計算するために使われるランダムモードを設定します。
サポートされる値:
random
ランダムシードを計算して使います。
ken
Ken Perlin がオリジナルの論文で定義した、あらかじめ定義された初期パターンを使います。他のソースと出力を比較するのに役立ちます。
seed
random_seed オプションで指定した値を使います。
既定値は random です。
random_seed, seed
random_mode が random_seed に設定されている場合、この値を使って初期パターンを計算します。既定値は 0 です。
18.11.2 Examples
-
単一成分を生成します:
perlin -
7 成分のパーリンノイズを使い、各成分の総振幅への寄与を半分にします:
perlin=octaves=7:persistence=0.5 -
パーリンノイズを lutyuv と連結して白黒効果を生成します:
perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)' -
ノイズを y 軸に沿って引き伸ばし、グレーレベルを赤のみの信号に変換します:
perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
18.12 qrencodesrc
libqrencode ライブラリを使って QR コードを生成する(https://fukuchi.org/works/qrencode/ を参照)。
このソースのコンパイルを有効にするには、FFmpeg を --enable-libqrencode で構成する必要があります。
QR コードは、与えられたテキストまたはテキストパターンから生成されます。生成された QR コードは、指定された出力サイズオプションに従ってスケールされ、映像出力に配置されます。
テキストが指定されない場合、QR コードは生成されず、代わりに単色で塗られた空の出力が返されます。
このソースは以下のオプションを受け付けます:
qrcode_width, q padded_qrcode_width, Q
レンダリングされる QR コードの幅を、パディングありとパディングなしで表す式を指定します。qrcode_width の式は padded_qrcode_width の式で設定された値を参照でき、その逆も可能です。既定では padded_qrcode_width は qrcode_width に設定され、パディングがないことを意味します。
これらの式は、ソースの初期化時に一度だけ評価されます。詳細は qrencode Expressions セクションを参照してください。
定数の一部はこのソースには存在しないことに注意してください(例えば x や t や ¸n)。これらは初期化時ではなくフレームごとに式を評価するときにのみ意味を持つためです。
rate, r
ソース映像のフレームレートを、1 秒あたりに生成されるフレーム数として指定します。frame_rate_num/frame_rate_den の形式の文字列、整数、浮動小数点数、または有効な映像フレームレートの略記の文字列でなければなりません。既定値は "25" です。
case_sensitive, cs
libqrencode に大文字小文字を区別する符号化を使うよう指示します。既定値で有効です。QR 符号化のサイズを減らすために無効にできます。
level, l
QR 符号化の誤り訂正レベルを指定します。訂正レベルを高くすると符号化サイズは増えますが、コードは破損に対してより頑健になります。最も低いレベルは L です。
以下の値を受け付けます:
‘L’ ‘M’ ‘Q’ ‘H’ expansion
入力テキストをどのように展開するかを選択します。none または normal(既定値)のいずれかを指定できます。詳細は qrencode Text expansion セクションを参照してください。
text textfile
レンダリングするテキストを定義します。いずれも指定されない場合、QR は符号化されません(単色で塗られた空のフレームになるだけです)。
expansion が有効な場合、テキストはテキストテンプレートとして扱われ、qrencode の展開機構が使われます。詳細は qrencode Text expansion セクションを参照してください。
background_color, bc foreground_color, fc
QR コードと背景の色を設定します。foreground_color の既定値は "black"、background_color の既定値は "white" です。
色オプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」セクションを参照してください。
18.12.1 Examples
-
指定したテキストを符号化した QR コードを既定のサイズで生成します:
qrencodesrc=text=www.ffmpeg.org -
上と同様だが、ピンク地に青の色を選ぶ:
qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue -
幅 200 ピクセルでパディング付きの QR コードを生成し、パディング後の幅を QR コード幅の 4/3 にします:
qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q -
パディング後の幅が 200 ピクセルでパディング付きの QR コードを生成し、QR コード幅をパディング後の幅の 3/4 にします:
qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q -
フレーム番号を符号化した QR コードを生成します:
qrencodesrc=text=%{n} -
GMT タイムスタンプを符号化した QR コードを生成します:
qrencodesrc=text=%{gmtime} -
浮動小数点で表されたタイムスタンプを符号化した QR コードを生成します:
qrencodesrc=text=%{pts}
18.13 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
allrgb ソースは、すべての rgb 色を含む 4096x4096 のフレームを返します。
allyuv ソースは、すべての yuv 色を含む 4096x4096 のフレームを返します。
color ソースは、一様な色で塗られた入力を提供します。
colorchart ソースは、カラーチェッカーチャートを提供します。
colorspectrum ソースは、色スペクトルの入力を提供します。
haldclutsrc ソースは、恒等 Hald CLUT を提供します。haldclut フィルタも参照してください。
nullsrc ソースは、未処理の映像フレームを返します。主に解析/デバッグツールで使ったり、入力データを無視するフィルタのソースとして使うのに役立ちます。
pal75bars ソースは、EBU PAL 勧告に基づき、色レベル 75% のカラーバーパターンを生成します。
pal100bars ソースは、EBU PAL 勧告に基づき、色レベル 100% のカラーバーパターンを生成します。
rgbtestsrc ソースは、RGB と BGR の問題を検出するのに役立つ RGB テストパターンを生成します。上から下へ赤・緑・青の縞が見えるはずです。
smptebars ソースは、SMPTE Engineering Guideline EG 1-1990 に基づくカラーバーパターンを生成します。
smptehdbars ソースは、SMPTE RP 219-2002 に基づくカラーバーパターンを生成します。
testsrc ソースは、カラーパターン、スクロールするグラデーション、タイムスタンプを表示するテスト映像パターンを生成します。これは主にテスト目的を意図しています。
testsrc2 ソースは testsrc と似ていますが、rgb24 だけでなく、より多くのピクセルフォーマットをサポートします。これにより、フォーマット変換を必要とせずに他のテストの入力として使えます。
yuvtestsrc ソースは YUV テストパターンを生成します。上から下へ y・cb・cr の縞が見えるはずです。
これらのソースは以下のパラメータを受け付けます:
level
Hald CLUT のレベルを指定します。haldclutsrc ソースでのみ利用可能です。レベル N は、3D ルックアップテーブルの恒等行列として使う N*N*N × N*N*N ピクセルの画像を生成します。各成分は 1/(N*N) のスケールで符号化されます。
color, c
ソースの色を指定します。color ソースでのみ利用可能です。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Color」セクションを参照してください。
size, s
ソース映像のサイズを指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 320x240 です。
このオプションは allrgb、allyuv、haldclutsrc の各フィルタでは利用できません。
rate, r
ソース映像のフレームレートを、1 秒あたりに生成されるフレーム数として指定します。frame_rate_num/frame_rate_den の形式の文字列、整数、浮動小数点数、または有効な映像フレームレートの略記の文字列でなければなりません。既定値は "25" です。
duration, d
ソース映像の長さを設定します。受け付ける構文については (ffmpeg-utils)ffmpeg-utils(1) マニュアルの Time duration セクションを参照してください。
指定しない場合、または指定した長さが負の場合、映像は無限に生成されるものとみなされます。
フレームレートがタイムベースとして使われるため、最後のフレームを含むすべてのフレームが完全な長さを持ちます。指定した長さがフレーム長の倍数でない場合は、切り上げられます。
sar
ソース映像のサンプルアスペクト比を設定します。
alpha
背景のアルファ(不透明度)を指定します。testsrc2 ソースでのみ利用可能です。値は 0(完全に透明)から 255(完全に不透明、既定値)の間でなければなりません。
decimals, n
タイムスタンプに表示する小数桁数を設定します。testsrc ソースでのみ利用可能です。
表示されるタイムスタンプ値は、元のタイムスタンプ値に、指定した値の 10 のべき乗を掛けたものに相当します。既定値は 0 です。
type
色スペクトルのタイプを設定します。colorspectrum ソースでのみ利用可能です。以下のいずれかを指定できます:
‘black’ ‘white’ ‘all’ patch_size
単色パッチのパッチサイズを設定します。colorchart ソースでのみ利用可能です。既定値は 64x64 です。
preset
カラーチェッカーの色のプリセットを設定します。colorchart ソースでのみ利用可能です。
指定できる値:
‘reference’ ‘skintones’
既定値は reference です。
18.13.1 Examples
-
長さ5.3秒、サイズ176x144、フレームレート10フレーム毎秒の映像を生成します:
testsrc=duration=5.3:size=qcif:rate=10 -
次のグラフ記述は、不透明度0.2、サイズ "qcif"、フレームレート10フレーム毎秒の赤いソースを生成します:
color=c=red@0.2:s=qcif:r=10 -
入力内容を無視したい場合は
nullsrcを使えます。次のコマンドはgeqフィルタを用いて輝度プレーンにノイズを生成します:nullsrc=s=256x256, geq=random(1)*255:128:128
18.13.2 Commands
color ソースは次のコマンドをサポートします:
c, color
生成する画像の色を設定します。対応する color オプションと同じ構文を受け付けます。
18.14 openclsrc
OpenCL プログラムを使って映像を生成します。
source
OpenCL プログラムのソースファイル。
kernel
プログラム内のカーネル名。
size, s
生成するフレームのサイズ。必ず設定しなければなりません。
format
生成するフレームに使う pixel format。必ず設定しなければなりません。
rate, r
毎秒生成するフレーム数。既定値は ’25’。
プログラムの読み込み方法の詳細は、program_opencl フィルタを参照してください。
プログラム例:
-
出力画像内のピクセル位置からピクセル値を設定して、カラーランプを生成します。(これはすべての pixel format で動作しますが、生成される出力は同一にはならない点に注意してください。)
__kernel void ramp(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 val; val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst)); write_imagef(dst, loc, val); } -
シェルピンスキーのカーペット模様を生成し、フレームごとに1ピクセルずつパンします。
__kernel void sierpinski_carpet(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 value = 0.0f; int x = loc.x + index; int y = loc.y + index; while (x > 0 || y > 0) { if (x % 3 == 1 && y % 3 == 1) { value = 1.0f; break; } x /= 3; y /= 3; } write_imagef(dst, loc, value); }
18.15 sierpinski
シェルピンスキーのカーペット/三角形フラクタルを生成し、ランダムにパンします。
このソースは次のオプションを受け付けます:
size, s
フレームサイズを設定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は "640x480"。
rate, r
フレームレートを毎秒のフレーム数で設定します。既定値は "25"。
seed
ランダムなパンに用いるシードを設定します。
jump
1回のパン先までの最大ジャンプ量を設定します。指定できる範囲は1から10000まで。
type
フラクタルの種類を設定します。既定の carpet か triangle を指定できます。
18.16 zoneplate
ゾーンプレートのテスト映像パターンを生成します。
このソースは次のオプションを受け付けます:
size, s
フレームサイズを設定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は "320x240"。
rate, r
フレームレートを毎秒のフレーム数で設定します。既定値は "25"。
duration, d
生成する映像の長さを設定します。受け付ける構文は (ffmpeg-utils) ffmpeg-utils(1) マニュアルの Time duration 節 を参照してください。
指定しない場合、または指定された長さが負の場合、映像は無限に生成されます。
sar
生成する映像の sample aspect ratio を設定します。
precision
サイン計算のルックアップテーブルの精度をビット数で設定します。既定値は10。指定できる範囲は4から16まで。
xo
出力信号の水平軸オフセットを設定します。既定値は0。
yo
出力信号の垂直軸オフセットを設定します。既定値は0。
to
出力信号の時間軸オフセットを設定します。既定値は0。
k0
信号の位相に加える0次の定数を設定します。既定値は0。
kx
水平軸に対する1次の位相係数の乗数を設定します。既定値は0。
ky
垂直軸に対する1次の位相係数の乗数を設定します。既定値は0。
kt
時間軸に対する1次の位相係数の乗数を設定します。既定値は0。
kxt, kyt, kxy
空間軸と時間軸の組み合わせに対する位相係数の乗数を設定します。既定値は0。
kx2
水平軸に対する2次の位相係数の乗数を設定します。既定値は0。
ky2
垂直軸に対する2次の位相係数の乗数を設定します。既定値は0。
kt2
時間軸に対する2次の位相係数の乗数を設定します。既定値は0。
ku
信号のクロマ青成分を生成するために最終位相に加える定数を設定します。既定値は0。
kv
信号のクロマ赤成分を生成するために最終位相に加える定数を設定します。既定値は0。
18.16.1 Commands
このソースは上記オプションの一部をコマンドとしてサポートします。
18.16.2 Examples
-
水平方向のカラーサインスイープを生成します:
zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11 -
垂直方向のカラーサインスイープを生成します:
zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11 -
円形のゾーンプレートを生成します:
zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
19 Video Sinks
以下は現在利用できる映像シンクの説明です。
19.1 buffersink
映像フレームをバッファリングし、フィルタグラフの末尾で利用できるようにします。
このシンクは主にプログラムからの利用、特に libavfilter/buffersink.h で定義されたインターフェイスやオプションシステムを通じた利用を想定しています。
初期化のため、入力バッファのフォーマットを定義する AVBufferSinkContext 構造体へのポインタを受け取り、これを avfilter_init_filter に opaque パラメータとして渡します。
19.2 nullsink
ヌル映像シンク: 入力映像に対して一切何もしません。主にテンプレートとして、また解析/デバッグツールでの利用に役立ちます。
20 Multimedia Filters
以下は現在利用できるマルチメディアフィルタの説明です。
20.1 a3dscope
入力音声を3Dスコープの映像出力に変換します。
このフィルタは次のオプションを受け付けます:
rate, r
フレームレートを毎秒のフレーム数で設定します。既定値は "25"。
size, s
出力する映像のサイズを指定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は hd720。
fov
カメラの視野角を設定します。既定値は90度。指定できる範囲は40から150まで。
roll
カメラのロールを設定します。
pitch
カメラのピッチを設定します。
yaw
カメラのヨーを設定します。
xzoom
カメラのX軸方向のズームを設定します。
yzoom
カメラのY軸方向のズームを設定します。
zzoom
カメラのZ軸方向のズームを設定します。
xpos
カメラのX軸上の位置を設定します。
ypos
カメラのY軸上の位置を設定します。
zpos
カメラのZ軸上の位置を設定します。
length
表示する音声波形の長さをフレーム数で設定します。
20.1.1 Commands
このフィルタは上記オプションの一部をコマンドとしてサポートします。
20.2 abitscope
入力音声を、音声ビットスコープを表示する映像出力に変換します。
このフィルタは次のオプションを受け付けます:
rate, r
フレームレートを毎秒のフレーム数で設定します。既定値は "25"。
size, s
出力する映像のサイズを指定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は 1024x256。
colors
チャンネルの描画に使う色を、スペースまたは ’|’ で区切ったリストで指定します。認識されない色や欠けている色は白色で代用されます。
mode, m
出力モードを設定します。bars か trace を指定できます。既定値は bars。
20.3 adrawgraph
入力音声のメタデータを使ってグラフを描画します。
drawgraph を参照してください。
20.4 agraphmonitor
graphmonitor を参照してください。
20.5 ahistogram
入力音声を、音量ヒストグラムを表示する映像出力に変換します。
このフィルタは次のオプションを受け付けます:
dmode
ヒストグラムの計算方法を指定します。
次の値を受け付けます:
‘single’
すべてのチャンネルに単一のヒストグラムを使います。
‘separate’
チャンネルごとに別々のヒストグラムを使います。
既定値は single。
rate, r
フレームレートを毎秒のフレーム数で設定します。既定値は "25"。
size, s
出力する映像のサイズを指定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は hd720。
scale
表示スケールを設定します。
次の値を受け付けます:
‘log’
対数
‘sqrt’
平方根
‘cbrt’
立方根
‘lin’
線形
‘rlog’
逆対数
既定値は log。
ascale
振幅スケールを設定します。
次の値を受け付けます:
‘log’
対数
‘lin’
線形
既定値は log。
acount
ヒストグラムに蓄積するフレーム数を設定します。既定値は1。これを -1 に設定すると全フレームを蓄積します。
rheight
ウィンドウ高さに対するヒストグラムの比率を設定します。
slide
ソノグラムのスライドを設定します。
次の値を受け付けます:
‘replace’
古い行を新しい行で置き換えます。
‘scroll’
上から下へスクロールします。
既定値は replace。
hmode
ヒストグラムのモードを設定します。
次の値を受け付けます:
‘abs’
サンプルの絶対値を使います。
‘sign’
サンプルの値をそのまま使います。
既定値は abs。
20.6 aphasemeter
入力音声の位相を測定し、メタデータ lavfi.aphasemeter.phase として出力します。これは現在の音声フレームの平均位相を表します。映像出力も生成でき、既定で有効になっています。音声は第1出力としてそのまま通過します。
音声のチャンネルレイアウトが異なる場合は、ステレオにリマトリクスされます。位相の値は [-1, 1] の範囲で、-1 は左右のチャンネルが完全に逆位相であること、1 はチャンネルが同位相であることを意味します。
このフィルタは次のオプションを受け付けます。いずれも映像出力に関するものです:
rate, r
出力フレームレートを設定します。既定値は 25。
size, s
出力する映像のサイズを設定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は 800x400。
rc gc bc
赤、緑、青のコントラストを指定します。既定値はそれぞれ 2、7、1。指定できる範囲は [0, 255]。
mpc
中央位相の描画に使う色を設定します。既定値である none の場合、中央位相値は描画されません。
video
映像出力を有効にします。既定では有効。
20.6.1 phasing detection
このフィルタは、ステレオストリーム中の逆位相区間やモノラル区間も検出します。区間が設定した最小値以上続いた場合に、その開始・終了・継続時間をログに記録します。
このフィルタは、この検出のために次のオプションを受け付けます:
phasing
モノラルおよび逆位相の検出を有効にします。既定では無効。
tolerance, t
モノラル検出の位相許容量を振幅比で設定します。既定値は 0。指定できる範囲は [0, 1]。
angle, a
逆位相検出の角度しきい値を度で設定します。既定値は 170。指定できる範囲は [90, 180]。
duration, d
通知までのモノラルまたは逆位相の継続時間を秒で設定します。既定値は 2。
20.6.2 Examples
ffmpegで、位相許容量0.001で1秒のモノラルを検出する完全な例:ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
20.7 avectorscope
入力音声を、音声ベクトルスコープを表す映像出力に変換します。
このフィルタは、ステレオ音声ストリームのチャンネル間の差を測定するために使います。左右が同一信号からなるモノラル信号は、まっすぐな垂直線になります。ステレオの分離はこの線からのずれとして見え、リサジュー図形を描きます。直線(またはそこからのずれ)が水平に現れる場合、左右のチャンネルが逆位相であることを示します。
このフィルタは次のオプションを受け付けます:
mode, m
ベクトルスコープのモードを設定します。
指定できる値は次のとおり:
‘lissajous’
45度回転させたリサジュー。
‘lissajous_xy’
上と同じですが回転させません。
‘polar’
半円に似た形状。
既定値は ‘lissajous’。
size, s
出力する映像のサイズを設定します。このオプションの構文は (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」節 を参照してください。既定値は 400x400。
rate, r
出力フレームレートを設定します。既定値は 25。
rc gc bc ac
赤、緑、青、アルファのコントラストを指定します。既定値はそれぞれ 40、160、80、255。指定できる範囲は [0, 255]。
rf gf bf af
赤、緑、青、アルファのフェードを指定します。既定値はそれぞれ 15、10、5、5。指定できる範囲は [0, 255]。
zoom
ズーム係数を設定します。既定値は 1。指定できる範囲は [0, 10]。1より小さい値を指定すると、可能な最大値までズーム係数を自動調整します。
draw
ベクトルスコープの描画モードを設定します。
指定できる値は次のとおり:
‘dot’
サンプルごとに点を描画します。
‘line’
直前のサンプルと現在のサンプルの間に線を描画します。
‘aaline’
直前のサンプルと現在のサンプルの間にアンチエイリアスされた線を描画します。
既定値は ‘dot’。
scale
音声サンプルの振幅スケールを指定します。
指定できる値は次のとおり:
‘lin’
線形。
‘sqrt’
平方根。
‘cbrt’
立方根。
‘log’
対数。
swap
左チャンネル軸と右チャンネル軸を入れ替えます。
mirror
軸を反転します。
‘none’
反転しません。
‘x’
x軸のみ反転します。
‘y’
y軸のみ反転します。
‘xy’
両方の軸を反転します。
20.7.1 Examples
ffplayを使った完全な例:ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
20.7.2 Commands
このフィルタは、size と rate を除く上記すべてのオプションをコマンドとしてサポートします。
20.8 bench, abench
フィルタグラフの一部をベンチマークします。
このフィルタは次のオプションを受け付けます:
action
タイマーを開始または停止します。
指定できる値は次のとおり:
‘start’
現在時刻を取得してフレームのメタデータ(キー lavfi.bench.start_time を使用)に設定し、フレームを次のフィルタへ転送します。
‘stop’
現在時刻を取得し、入力フレームのメタデータから lavfi.bench.start_time メタデータを取り出して時間差を求めます。続いて時間差・平均・最大・最小の時間(それぞれ t、avg、max、min)を出力します。タイムスタンプは秒で表されます。
20.8.1 Examples
- selectivecolor フィルタをベンチマークします:
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
20.9 concat
音声ストリームと映像ストリームを連結し、次々とつなぎ合わせます。
このフィルタは、同期した映像ストリームと音声ストリームのセグメントを対象に動作します。すべてのセグメントは種類ごとに同じ本数のストリームを持たなければならず、それが出力のストリーム数にもなります。
このフィルタは次のオプションを受け付けます:
n
セグメント数を設定します。既定値は2。
v
出力する映像ストリーム数、すなわち各セグメント内の映像ストリーム数を設定します。既定値は1。
a
出力する音声ストリーム数、すなわち各セグメント内の音声ストリーム数を設定します。既定値は0。
unsafe
アンセーフモードを有効にします: セグメントのフォーマットが異なっていても失敗しません。
このフィルタは v+a 個の出力を持ちます: 最初に v 個の映像出力、続いて a 個の音声出力。
入力は nx(v+a) 個あります: 最初に1番目のセグメントの入力が、出力と同じ順序で並び、続いて2番目のセグメントの入力、という順序になります。
関連するストリームは、codec のフレームサイズやずさんなオーサリングなどさまざまな理由で、必ずしも全く同じ長さになるとは限りません。そのため、関連する同期ストリーム(例えば映像とその音声トラック)は一度にまとめて連結すべきです。concat フィルタは各セグメント(最後のセグメントを除く)で最も長いストリームの長さを使い、必要であれば短い音声ストリームを無音でパディングします。
このフィルタが正しく動作するには、すべてのセグメントがタイムスタンプ0で始まらなければなりません。
すべての対応するストリームは、全セグメントで同じパラメータを持たなければなりません。フィルタリングシステムは映像ストリームには共通の pixel format を、音声ストリームには共通の sample format・sample rate・channel layout を自動で選択しますが、解像度などその他の設定はユーザーが明示的に変換しなければなりません。
異なるフレームレートも許容されますが、その場合は出力が可変フレームレートになります。出力ファイルがそれを扱えるよう設定しておいてください。
20.9.1 例
-
オープニング、本編、エンディングを、いずれもバイリンガル版(映像はストリーム 0、音声はストリーム 1 と 2)で連結する例:
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \ '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2] concat=n=3:v=1:a=2 [v] [a1] [a2]' \ -map '[v]' -map '[a1]' -map '[a2]' output.mkv -
音声と映像を別々に扱い、(a)movie ソースを使い、解像度を調整しながら 2 つのパートを連結する例:
movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ; movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ; [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
最初のファイルで音声ストリームと映像ストリームの長さが厳密に一致していないと、つなぎ目で同期ずれが発生する点に注意してください。
20.9.2 コマンド
このフィルタは以下のコマンドに対応しています:
next
現在のセグメントを閉じ、次のセグメントへ進みます
20.10 ebur128
EBU R128 スキャナフィルタ。このフィルタは音声ストリームを受け取り、そのラウドネスレベルを解析します。既定では 10Hz の頻度でメッセージをログに出力し、Momentary ラウドネス(M で識別)、Short-term ラウドネス(S)、Integrated ラウドネス(I)、Loudness Range(LRA)を表示します。
このフィルタが解析できるのは、サンプルフォーマットが倍精度浮動小数点のストリームのみです。必要に応じて入力ストリームはこの仕様に変換されます。元のパラメータを得るには、このフィルタの後段に aformat や aresample フィルタを挿入する必要がある場合があります。
このフィルタは映像出力(video オプションを参照)も備えており、ラウドネスの推移をリアルタイムのグラフで観察できます。グラフには上記のログメッセージが含まれるため、このオプションを設定するとメッセージは出力されなくなります(verbose ロギングを設定した場合を除く)。グラフの主要描画領域には Short-term ラウドネス(3 秒間の解析)が表示され、右側のゲージは Momentary ラウドネス(400 ミリ秒)を表します。ただしゲージは、代わりに Short-term ラウドネスを表示するよう設定することもできます(gauge を参照)。
緑色の領域は、目標ラウドネス(既定では -23LUFS。target で変更しない限り)を中心とした +/- 1LU のターゲット範囲を示します。
Loudness Recommendation EBU R128 についての詳細は http://tech.ebu.ch/loudness を参照してください。
このフィルタは以下のオプションを受け付けます:
video
映像出力を有効にします。このオプションを設定するかどうかにかかわらず、音声ストリームはそのまま通過します。有効にした場合、映像ストリームが最初の出力ストリームになります。既定値は 0。
size
映像サイズを設定します。このオプションは映像専用です。構文については (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」セクション を参照してください。既定かつ最小の解像度は 640x480。
meter
EBU スケールメータを設定します。既定値は 9。よく使われる値は 9 と 18 で、それぞれ EBU スケールメータ +9 と EBU スケールメータ +18 に対応します。この範囲内であれば他の任意の整数値も指定できます。
metadata
メタデータの注入を設定します。1 に設定すると、音声入力は 100ms の出力フレームに分割され、各フレームのメタデータにさまざまなラウドネス情報が格納されます。すべてのメタデータキーには lavfi.r128. という接頭辞が付きます。
既定値は 0。
framelog
フレームのロギングレベルを強制します。
指定できる値は以下のとおり:
‘quiet’
ロギング無効
‘info’
情報レベルのロギング
‘verbose’
詳細レベルのロギング
既定ではロギングレベルは info に設定されます。video または metadata オプションを設定すると、verbose に切り替わります。
peak
ピークモードを設定します。
指定できるモードは累積できます(このオプションは flag 型)。指定可能な値は以下のとおり:
‘none’
ピークモードを無効にします(既定)。
‘sample’
サンプルピークモードを有効にします。
最も高いサンプル値を探す単純なピークモードです。サンプルピークについてメッセージをログに出力します(SPK で識別)。
‘true’
トゥルーピークモードを有効にします。
有効にすると、ピーク検出はピーク精度を高めるためにオーバーサンプリングした入力ストリームに対して行われます。トゥルーピークについてのメッセージ(TPK で識別)と、フレームごとのトゥルーピーク(FTPK で識別)をログに出力します。このモードには libswresample を含むビルドが必要です。
dualmono
モノラル入力ファイルを「デュアルモノ」として扱います。モノラルファイルがステレオシステムでの再生を想定している場合、その EBU R128 測定値は知覚的に正しくなくなります。true に設定すると、このオプションがその影響を補正します。マルチチャンネル入力ファイルはこのオプションの影響を受けません。
panlaw
デュアルモノファイルの測定に使う特定のパンルールを設定します。このパラメータは省略可能で、既定値は -3.01dB。
target
可視化において相対的なゼロ点として使う特定のターゲットレベル(LUFS 単位)を設定します。このパラメータは省略可能で、既定値は EBU R128 が定める -23LUFS。ただし、オンラインで公開される素材では -16LUFS のレベルが好まれることもあります(たとえばポッドキャストや動画プラットフォーム向け)。
gauge
ゲージが表示する値を設定します。有効な値は momentary と shortterm。既定では momentary 値が使われますが、状況によっては short term 値を観察するほうが有用な場合もあります(たとえばライブミキシング)。
scale
ラウドネスの表示スケールを設定します。有効なパラメータは absolute(LUFS 単位)または target を基準とした relative(LU 単位)。これは映像出力にのみ影響し、サマリや連続ログ出力には影響しません。
integrated
測定された Integrated ラウドネス(LUFS 単位)の読み取り専用エクスポート値。
range
測定されたラウドネスレンジ(LU 単位)の読み取り専用エクスポート値。
lra_low
測定された LRA low(LUFS 単位)の読み取り専用エクスポート値。
lra_high
測定された LRA high(LUFS 単位)の読み取り専用エクスポート値。
sample_peak
測定されたサンプルピーク(dBFS 単位)の読み取り専用エクスポート値。
true_peak
測定されたトゥルーピーク(dBFS 単位)の読み取り専用エクスポート値。
20.10.1 例
-
ffplayを使い、EBU スケールメータ +18 でリアルタイムグラフを表示する例:ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]" -
ffmpegで解析を実行する例:ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
20.11 interleave, ainterleave
複数の入力からのフレームを時間的にインターリーブします。
interleave は映像入力に、ainterleave は音声に対して動作します。
これらのフィルタは複数の入力からフレームを読み込み、キューに溜まったフレームのうち最も古いものを出力へ送ります。
入力ストリームは、明確に定義された単調増加のフレームタイムスタンプ値を持つ必要があります。
出力へ 1 フレームを送るためには、これらのフィルタは各入力につき少なくとも 1 フレームをキューに溜める必要があります。そのため、いずれかの入力がまだ終了しておらず、かつ新たなフレームを受け取らない場合には動作できません。
たとえば、ある入力が常に入力フレームを破棄する select フィルタである場合を考えてみましょう。interleave フィルタはその入力から読み込み続けますが、その入力がストリーム終端(end-of-stream)の信号を送るまで、新たなフレームを出力へ送ることはできません。
また、入力同士の同期状況によっては、ある入力が他より多くのフレームを受け取り、かつキューがすでに満杯になっている場合、フィルタはフレームを破棄します。
これらのフィルタは以下のオプションを受け付けます:
nb_inputs, n
異なる入力の数を設定します。既定では 2。
duration
ストリーム終端をどう判定するか。
longest
最も長い入力の長さ。(既定)
shortest
最も短い入力の長さ。
first
最初の入力の長さ。
20.11.1 例
-
ffmpegを使って異なるストリームに属するフレームをインターリーブする例:ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi -
ちらつくぼかし効果を加える例:
select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
20.12 latency, alatency
フィルタリングの遅延(レイテンシ)を測定します。
直前のフィルタのフィルタリング遅延を、音声フィルタでは音声サンプル数、映像フィルタでは映像フレーム数による遅延として報告します。
入力ストリームの終端で、フィルタはフィルタグラフ内の直前のフィルタについて測定された最小・最大の遅延を報告します。
20.13 metadata, ametadata
フレームのメタデータを操作します。
このフィルタは以下のオプションを受け付けます:
mode
フィルタの動作モードを設定します。
以下のいずれかを指定できます:
‘select’
value と key の両方が設定されている場合、そのようなメタデータを持つフレームを選択します。key のみが設定されている場合、メタデータにそのキーを持つすべてのフレームを選択します。
‘add’
新しいメタデータの key と value を追加します。キーがすでに存在する場合は何もしません。
‘modify’
すでに存在するキーの値を変更します。
‘delete’
value が設定されている場合、その値を持つキーのみを削除します。そうでなければキーを削除します。key が設定されていない場合、フレーム内のすべてのメタデータ値を削除します。
‘print’
メタデータが見つかった場合、キーとその値を出力します。key が設定されていない場合、フレーム内で利用可能なすべてのメタデータ値を出力します。
key
すべてのモードで使用するキーを設定します。print と delete を除くすべてのモードで設定が必須です。
value
使用するメタデータ値を設定します。このオプションは modify および add モードで必須です。
function
メタデータ値と value を比較する際にどの関数を使うか。
以下のいずれかを指定できます:
‘same_str’
値は文字列として解釈され、メタデータ値が value と同じであれば true を返します。
‘starts_with’
値は文字列として解釈され、メタデータ値が value オプションの文字列で始まれば true を返します。
‘less’
値は浮動小数点として解釈され、メタデータ値が value 未満であれば true を返します。
‘equal’
値は浮動小数点として解釈され、value がメタデータ値と等しければ true を返します。
‘greater’
値は浮動小数点として解釈され、メタデータ値が value より大きければ true を返します。
‘expr’
値は浮動小数点として解釈され、オプション expr の式が true に評価されれば true を返します。
‘ends_with’
値は文字列として解釈され、メタデータ値が value オプションの文字列で終われば true を返します。
expr
function が expr に設定されているときに使う式を設定します。式は eval API を通じて評価され、以下の定数を含めることができます:
VALUE1, FRAMEVAL
メタデータキーの value の浮動小数点表現。
VALUE2, USERVAL
ユーザが value オプションで指定した value の浮動小数点表現。
file
print モードで指定された場合、出力は指定したファイルへ書き込まれます。ファイル名の代わりに、書き込み可能な任意の URL を指定できます。ファイル名 “-” は標準出力を表す省略表記です。file オプションが設定されていない場合、出力は AV_LOG_INFO のログレベルでログへ書き込まれます。
direct
file で設定した URL へ出力を書き込む print モードにおいて、バッファリングを抑えます。
20.13.1 例
-
キー
lavfi.signalstats.YDIFの値が 0 から 1 の間にあるフレームについて、すべてのメタデータ値を出力します。signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)' -
silencedetect の出力をファイル metadata.txt に出力します。
silencedetect,ametadata=mode=print:file=metadata.txt -
すべてのメタデータをファイルディスクリプタ 4 のパイプへ送ります。
metadata=mode=print:file='pipe\:4'
20.14 perms, aperms
出力フレームの読み書き権限を設定します。
これらのフィルタは主に、フィルタグラフ内で後段のフィルタのダイレクトパスをテストするための、開発者向けのものです。
これらのフィルタは以下のオプションを受け付けます:
mode
権限モードを選択します。
以下の値を受け付けます:
‘none’
何もしません。これが既定です。
‘ro’
すべての出力フレームを読み取り専用にします。
‘rw’
すべての出力フレームを直接書き込み可能にします。
‘toggle’
書き込み可能なフレームは読み取り専用に、読み取り専用のフレームは書き込み可能にします。
‘random’
各出力フレームをランダムに読み取り専用または書き込み可能にします。
seed
random モードのシードを設定します。0 から UINT32_MAX までの整数でなければなりません。指定しない場合、または明示的に -1 に設定した場合、フィルタはベストエフォートで良好なランダムシードを使おうとします。
注意: 権限フィルタと後段のフィルタの間にフィルタが自動挿入された場合、その後段のフィルタで権限が期待どおりに受け取られないことがあります。perms/aperms フィルタの前に format または aformat フィルタを挿入すると、この問題を回避できます。
20.15 realtime, arealtime
フィルタリングを遅くして、おおよそ実時間に合わせます。
これらのフィルタは、出力レートを入力タイムスタンプに合わせるために、可変の時間だけフィルタリングを一時停止します。ffmpeg の re オプションに似ています。
これらのフィルタは以下のオプションを受け付けます:
limit
一時停止の時間上限。これより長い一時停止はタイムスタンプの不連続とみなされ、タイマがリセットされます。既定値は 2 秒。
speed
処理の速度係数。値はゼロより大きい浮動小数点でなければなりません。1.0 より大きい値は実時間より速い処理になり、小さい値は処理を遅くします。limit はそれに応じて自動的に調整されます。既定値は 1.0。
これらのフィルタなしで達成できる以上の処理速度を実現することはできません。
20.15.1 コマンド
どちらのフィルタも、上記のすべてのオプションをコマンドとして利用できます。
20.16 segment, asegment
単一の入力ストリームを複数のストリームに分割します。
このフィルタは concat フィルタの逆の動作を行います。
segment は映像フレームに対して、asegment は音声サンプルに対して動作します。
このフィルタは以下のオプションを受け付けます:
timestamps
’|’ で区切られた、出力セグメントのタイムスタンプ。最初のセグメントは入力ストリームの先頭から始まります。最後のセグメントは入力ストリームの末尾まで続きます
frames, samples
セグメントを分割する正確なフレーム数/サンプル数。
いずれの場合も、各セグメントの先頭に ’+’ を付けると、直前のセグメントからの相対指定になります。
20.16.1 例
- 入力音声ストリームを 3 つの出力音声ストリームに分割する例。入力音声ストリームの先頭から始めて 1 番目の出力音声ストリームに格納し、次に 60 秒目から始めて 2 番目の出力音声ストリームに格納し、最後に入力音声ストリームの 150 秒目以降を 3 番目の出力音声ストリームに格納します:
asegment=timestamps="60|150"
20.17 select, aselect
出力に通すフレームを選択します。
このフィルタは以下のオプションを受け付けます:
expr, e
各入力フレームに対して評価される式を設定します。
式がゼロに評価された場合、そのフレームは破棄されます。
評価結果が負または NaN の場合、そのフレームは最初の出力へ送られます。そうでなければ、インデックス ceil(val)-1 の出力へ送られます(入力インデックスは 0 から始まると仮定)。
たとえば値 1.2 はインデックス ceil(1.2)-1 = 2-1 = 1 の出力、すなわち 2 番目の出力に対応します。
outputs, n
出力の数を設定します。選択されたフレームをどの出力へ送るかは、評価結果に基づきます。既定値は 1。
式には以下の定数を含めることができます:
n
フィルタリングされたフレームの(連番の)番号。0 から始まります。
selected_n
選択されたフレームの(連番の)番号。0 から始まります。
prev_selected_n
最後に選択されたフレームの連番。未定義の場合は NAN。
TB
入力タイムスタンプのタイムベース。
pts
フィルタリングされたフレームの PTS(Presentation TimeStamp)。TB 単位で表されます。未定義の場合は NAN。
t
フィルタリングされたフレームの PTS。秒単位で表されます。未定義の場合は NAN。
prev_pts
直前にフィルタリングされたフレームの PTS。未定義の場合は NAN。
prev_selected_pts
最後にフィルタリングされたフレームの PTS。未定義の場合は NAN。
prev_selected_t
最後に選択されたフレームの PTS。秒単位で表されます。未定義の場合は NAN。
start_pts
ストリーム中で NAN でない最初の PTS。見つからない場合は NAN のまま。
start_t
ストリーム中で NAN でない最初の PTS(秒単位)。見つからない場合は NAN のまま。
pict_type (映像のみ)
フィルタリングされたフレームの種類。以下のいずれかの値をとります:
I P B S SI SP BI interlace_type (映像のみ)
フレームのインターレース種別。以下のいずれかの値をとります:
PROGRESSIVE
フレームはプログレッシブ(非インターレース)です。
TOPFIRST
フレームはトップフィールドファーストです。
BOTTOMFIRST
フレームはボトムフィールドファーストです。
consumed_sample_n (音声のみ)
現在のフレームより前に選択されたサンプル数
samples_n (音声のみ)
現在のフレーム内のサンプル数
sample_rate (音声のみ)
入力のサンプリングレート
key
フィルタリングされたフレームがキーフレームであれば 1、そうでなければ 0。
pos
フィルタリングされたフレームのファイル内での位置。情報が得られない場合(たとえば合成映像)は -1。非推奨につき使用しないこと
scene (映像のみ)
新しいシーンであることを示す 0 から 1 の値。低い値は現在のフレームが新しいシーンを導入する確率が低いことを反映し、高い値ほど現在のフレームが新しいシーンである可能性が高いことを意味します(後述の例を参照)。
concatdec_select
concat デマルチプレクサは、inpoint と outpoint を設定することで concat 入力ファイルの一部だけを選択できますが、出力パケットが選択区間に完全に収まっているとは限りません。この変数を使うと、選択区間に正確に収まっていない concat デマルチプレクサ生成フレームをスキップできます。
これは、フレームの pts を、デコードされたフレームにも存在する lavf.concat.start_time および lavf.concat.duration のパケットメタデータ値と比較することで動作します。
concatdec_select 変数は、フレームの pts が start_time 以上であり、かつ duration メタデータが欠落しているかフレームの pts が start_time + duration 未満であれば -1、そうでなければ 0、start_time メタデータが欠落していれば NaN になります。
これは要するに、入力フレームはその pts が concat デマルチプレクサが設定した区間内にあれば選択される、ということです。
iw (映像のみ)
入力映像フレームの幅を表します。
ih (映像のみ)
入力映像フレームの高さを表します。
view (映像のみ)
多視点映像のビュー ID。
select 式の既定値は "1"。
20.17.1 例
- 入力のすべてのフレームを選択します:
select
上の例は次と同じです:
select=1
-
すべてのフレームをスキップします:
select=0 -
I フレームのみを選択します:
select='eq(pict_type\,I)' -
100 フレームごとに 1 フレームを選択します:
select='not(mod(n\,100))' -
10〜20 の時間区間に含まれるフレームのみを選択します:
select=between(t\,10\,20) -
10〜20 の時間区間に含まれる I フレームのみを選択します:
select=between(t\,10\,20)*eq(pict_type\,I) -
最低 10 秒間隔のフレームを選択します:
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)' -
aselect を使い、サンプル数が 100 を超える音声フレームのみを選択します:
aselect='gt(samples_n\,100)' -
最初のいくつかのシーンのモザイクを作成します:
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
scene を 0.3 から 0.5 の間の値と比較するのが、一般に妥当な選択です。
-
偶数フレームと奇数フレームを別々の出力へ送り、それらを合成します:
select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h -
inpoint と outpoint を使っているが、ソースファイルがイントラフレームのみではない ffconcat ファイルから、有用なフレームを選択します。
ffmpeg -copyts -segment_time_metadata 1 -i input.ffconcat -fps_mode passthrough -vf select=concatdec_select -af aselect=concatdec_select output.avi
20.18 sendcmd, asendcmd
フィルタグラフ内のフィルタへコマンドを送ります。
これらのフィルタは、フィルタグラフ内の他のフィルタへ送るコマンドを読み込みます。
sendcmd は 2 つの映像フィルタの間に、asendcmd は 2 つの音声フィルタの間に挿入する必要がありますが、それ以外の動作は同じです。
コマンドの指定は、commands オプションを使ってフィルタ引数で与えるか、filename オプションで指定したファイルで与えることができます。
これらのフィルタは以下のオプションを受け付けます:
commands, c
読み込んで他のフィルタへ送るコマンドを設定します。
filename, f
読み込んで他のフィルタへ送るコマンドのファイル名を設定します。
20.18.1 コマンドの構文
コマンドの記述は、一連の区間(インターバル)指定からなります。各区間指定は、その区間に関連する特定のイベントが発生したときに実行するコマンドのリストを含みます。発生するイベントは通常、現在のフレーム時刻が指定の時間区間に入る、または出ることです。
区間は以下の構文で指定します:
START[-END] COMMANDS;
時間区間は START と END の時刻で指定します。END は省略可能で、既定では最大時刻になります。
現在のフレーム時刻は、区間 [START, END) に含まれる場合、すなわち時刻が START 以上かつ END 未満である場合に、指定区間内とみなされます。
COMMANDS は、その区間に関する 1 つ以上のコマンド指定の並びからなり、各指定は "," で区切られます。コマンド指定の構文は以下のとおり:
[FLAGS] TARGET COMMAND ARG
FLAGS は省略可能で、指定コマンドの送信を有効にする、時間区間に関連するイベントの種類を指定します。null でない識別子フラグの並びでなければならず、各フラグは "+" または "|" で区切り、"[" と "]" で囲みます。
認識されるフラグは以下のとおり:
enter
現在のフレームのタイムスタンプが指定区間に入ったときにコマンドが送られます。言い換えると、直前のフレームのタイムスタンプが指定区間になく、現在のものが区間内にあるときにコマンドが送られます。
leave
現在のフレームのタイムスタンプが指定区間を出たときにコマンドが送られます。言い換えると、直前のフレームのタイムスタンプが指定区間にあり、現在のものが区間外にあるときにコマンドが送られます。
expr
コマンドの ARG が式として解釈され、その式の結果が ARG として渡されます。
式は eval API を通じて評価され、以下の定数を含めることができます:
POS
フレームのファイル内での元の位置。現在のフレームで未定義の場合は undefined。非推奨につき使用しないこと。
PTS
入力での presentation timestamp。
N
映像または音声の入力フレームの数。0 から始まります。
T
現在のフレームの時刻(秒単位)。
TS
現在のコマンド区間の開始時刻(秒単位)。
TE
現在のコマンド区間の終了時刻(秒単位)。
TI
現在のコマンド区間の補間された時刻。TI = (T - TS) / (TE - TS)。
W
映像フレームの幅。
H
映像フレームの高さ。
FLAGS が指定されない場合、既定値として [enter] が想定されます。
TARGET はコマンドの対象を指定します。通常はフィルタクラス名、または特定のフィルタインスタンス名。
COMMAND は対象フィルタへのコマンド名を指定します。
ARG は省略可能で、指定した COMMAND の任意の引数リストを指定します。
区間指定と区間指定の間では、空白文字、または # で始まり行末までの文字列は無視され、コメントの記述に使えます。
コマンド指定構文の簡略化した BNF 記述を以下に示します:
COMMAND_FLAG ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS ::= COMMAND [,COMMANDS]
INTERVAL ::= START[-END] COMMANDS
INTERVALS ::= INTERVAL[;INTERVALS]
20.18.2 例
-
4 秒の時点で音声のテンポを変更する:
asendcmd=c='4.0 atempo tempo 1.5',atempo -
特定のフィルタインスタンスを対象にする:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my -
drawtext と hue のコマンド一覧をファイルに記述します。
# show text in the interval 5-10 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world', [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text='; # desaturate the image in the interval 15-20 15.0-20.0 [enter] hue s 0, [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor', [leave] hue s 1, [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color'; # apply an exponential saturation fade-out effect, starting from time 25 25 [enter] hue s exp(25-t)
上記のコマンド一覧をファイル test.cmd に保存して読み込み、処理する filtergraph は次のように指定できます。
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
20.19 setpts, asetpts
入力フレームの PTS(presentation timestamp)を変更します。
setpts は映像フレームに、asetpts は音声フレームに作用します。
このフィルタは次のオプションを受け付けます。
expr
各フレームのタイムスタンプを構築するために評価される式です。
strip_fps (映像のみ)
元のフレームレートとフレーム長のメタデータを解除するかどうかを決めるブール値オプションです。true に設定する場合、出力を固定フレームレートの muxer に送るなら妥当なフレームレートを明示的に指定しておくこと。既定値は false です。
式は eval API を通じて評価され、次の定数を含められます。
FRAME_RATE, FR
フレームレートです。固定フレームレートの映像でのみ定義されます。
PTS
入力での presentation timestamp です。
N
映像では入力フレームの番号、音声では現在のフレームを含まない消費済みサンプル数です。0 から始まります。
NB_CONSUMED_SAMPLES
現在のフレームを含まない消費済みサンプル数(音声のみ)です。
NB_SAMPLES, S
現在のフレームのサンプル数(音声のみ)です。
SAMPLE_RATE, SR
音声のサンプリングレートです。
STARTPTS
最初のフレームの PTS です。
STARTT
最初のフレームの時刻(秒)です。
INTERLACED
現在のフレームがインターレースかどうかを表します。
T
現在のフレームの時刻(秒)です。
POS
ファイル内でのフレームの元の位置です。現在のフレームで未定義の場合は undefined です。非推奨につき使用しないこと。
PREV_INPTS
直前の入力 PTS です。
PREV_INT
直前の入力時刻(秒)です。
PREV_OUTPTS
直前の出力 PTS です。
PREV_OUTT
直前の出力時刻(秒)です。
RTCTIME
実時間(RTC)をマイクロ秒で表したものです。非推奨につき、代わりに time(0) を使うこと。
RTCSTART
動画開始時点の実時間(RTC)をマイクロ秒で表したものです。
TB
入力タイムスタンプのタイムベースです。
T_CHANGE
コマンドが適用された後の最初のフレームの時刻です。コマンドがない場合は最初のフレームの時刻です。
20.19.1 例
-
PTS をゼロから数え始める:
setpts=PTS-STARTPTS -
早送り効果を適用する:
setpts=0.5*PTS -
スローモーション効果を適用する:
setpts=2.0*PTS -
25 フレーム毎秒の固定レートに設定する:
setpts=N/(25*TB) -
±100 TB 単位のランダムなジッタ効果を適用する:
setpts=PTS+randomi(0, -100\,100) -
多少のジッタを伴う 25fps の固定レートに設定する:
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))' -
入力 PTS に 10 秒のオフセットを適用する:
setpts=PTS+10/TB -
「ライブソース」からタイムスタンプを生成し、現在のタイムベースに合わせ直す:
setpts='(RTCTIME - RTCSTART) / (TB * 1000000)' -
サンプルを数えてタイムスタンプを生成する:
asetpts=N/SR/TB
20.19.2 コマンド
どちらのフィルタも、上記すべてのオプションをコマンドとしてサポートします。
20.20 setrange
出力映像フレームのカラーレンジを強制します。
setrange フィルタは出力フレームのカラーレンジ属性を設定します。入力フレームは変更せず、対応する属性を設定するだけですが、これにより後続のフィルタでのフレームの扱い方が変わります。
このフィルタは次のオプションを受け付けます。
range
指定できる値は次のとおりです。
‘auto’
カラーレンジ属性をそのまま保ちます。
‘unspecified, unknown’
カラーレンジを unspecified(指定なし)に設定します。
‘limited, tv, mpeg’
カラーレンジを limited に設定します。
‘full, pc, jpeg’
カラーレンジを full に設定します。
20.21 settb, asettb
出力フレームのタイムスタンプに使うタイムベースを設定します。主にタイムベース設定のテストに役立ちます。
次のパラメータを受け付けます。
expr, tb
出力タイムベースへと評価される式です。
tb の値は有理数を表す算術式です。式には定数 "AVTB"(既定のタイムベース)、"intb"(入力タイムベース)、"sr"(サンプリングレート、音声のみ)を含められます。既定値は "intb" です。
20.21.1 例
-
タイムベースを 1/25 に設定する:
settb=expr=1/25 -
タイムベースを 1/10 に設定する:
settb=expr=0.1 -
タイムベースを 1001/1000 に設定する:
settb=1+0.001 -
タイムベースを 2*intb に設定する:
settb=2*intb -
既定のタイムベース値に設定する:
settb=AVTB
20.22 showcqt
入力音声を、Brown-Puckette の定数 Q 変換アルゴリズムで周波数領域の係数を直接計算し、周波数スペクトルを対数的に表す映像出力へ変換します(ただし変換そのものは実際には定数 Q ではなく、Q 係数は可変/クランプされます)。音階は E0 から D#10 までです。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。偶数でなければなりません。このオプションの構文は ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 1920x1080 です。
fps, rate, r
出力フレームレートを設定します。既定値は 25 です。
bar_h
バーグラフの高さを設定します。偶数でなければなりません。既定値は -1 で、バーグラフの高さを自動計算します。
axis_h
軸の高さを設定します。偶数でなければなりません。既定値は -1 で、軸の高さを自動計算します。
sono_h
ソノグラムの高さを設定します。偶数でなければなりません。既定値は -1 で、ソノグラムの高さを自動計算します。
fullhd
フル HD 解像度を設定します。このオプションは非推奨で、代わりに size, s を使うこと。既定値は 1 です。
sono_v, volume
ソノグラムの音量式を指定します。次の変数を含められます。
bar_v
評価された bar_v の式です。
frequency, freq, f
評価される周波数です。
timeclamp, tc
timeclamp オプションの値です。
また次の関数を含められます。
a_weighting(f)
等ラウドネスの A 特性です。
b_weighting(f)
等ラウドネスの B 特性です。
c_weighting(f)
等ラウドネスの C 特性です。
既定値は 16 です。
bar_v, volume2
バーグラフの音量式を指定します。次の変数を含められます。
sono_v
評価された sono_v の式です。
frequency, freq, f
評価される周波数です。
timeclamp, tc
timeclamp オプションの値です。
また次の関数を含められます。
a_weighting(f)
等ラウドネスの A 特性です。
b_weighting(f)
等ラウドネスの B 特性です。
c_weighting(f)
等ラウドネスの C 特性です。
既定値は sono_v です。
sono_g, gamma
ソノグラムのガンマを指定します。ガンマが低いほどスペクトルのコントラストが強くなり、高いほどスペクトルの範囲が広くなります。既定値は 3 です。指定できる範囲は [1, 7] です。
bar_g, gamma2
バーグラフのガンマを指定します。既定値は 1 です。指定できる範囲は [1, 7] です。
bar_t
バーグラフの透明度を指定します。値が低いほどバーグラフがくっきりします。既定値は 1 です。指定できる範囲は [0, 1] です。
timeclamp, tc
変換の timeclamp を指定します。低周波では時間領域の精度と周波数領域の精度がトレードオフの関係にあります。timeclamp が低いほど時間領域のイベント(速いバスドラムなど)が正確に表現され、逆だと周波数領域のイベント(ベースギターなど)が正確に表現されます。指定できる範囲は [0.002, 1] です。既定値は 0.17 です。
attack
アタック時間を秒で設定します。既定値は 0(無効)です。0 以外では時間領域で非対称な窓関数を適用して未来のサンプルを制限します。低レイテンシが必要なときに有用です。指定できる範囲は [0, 1] です。
basefreq
変換の基準周波数を指定します。既定値は 20.01523126408007475 で、これは E0 より 50 セント低い周波数です。指定できる範囲は [10, 100000] です。
endfreq
変換の終端周波数を指定します。既定値は 20495.59681441799654 で、これは D#10 より 50 セント高い周波数です。指定できる範囲は [10, 100000] です。
coeffclamp
このオプションは非推奨で無視されます。
tlength
時間領域での変換長を指定します。各周波数サンプルで時間領域と周波数領域の精度のトレードオフを制御するために使います。次の変数を含められます。
frequency, freq, f
評価される周波数です。
timeclamp, tc
timeclamp オプションの値です。
既定値は 384*tc/(384+tc*f) です。
count
映像フレームごとの変換回数を指定します。既定値は 6 です。指定できる範囲は [1, 30] です。
fcount
1 ピクセルごとの変換回数を指定します。既定値は 0 で、自動計算されます。指定できる範囲は [0, 10] です。
fontfile
軸を描画する際に freetype で使うフォントファイルを指定します。指定しない場合は埋め込みフォントを使います。フォントファイルや埋め込みフォントによる描画は、basefreq や endfreq をカスタム指定した場合には実装されていないので、その場合は axisfile オプションを使うこと。
font
fontconfig のパターンを指定します。fontfile より優先度は低いです。パターン中の : は、不要なエスケープを避けるため | に置き換えても構いません。
fontcolor
フォント色の式を指定します。これは整数値 0xRRGGBB を返すべき算術式です。次の変数を含められます。
frequency, freq, f
評価される周波数です。
timeclamp, tc
timeclamp オプションの値です。
また次の関数を含められます。
midi(f)
周波数 f の midi 番号です。midi 番号の例: E0(16)、C1(24)、C2(36)、A4(69)。
r(x), g(x), b(x)
強度 x に対する赤・緑・青の値です。
既定値は st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1)) です。
axisfile
軸を描画する画像ファイルを指定します。このオプションは fontfile と fontcolor オプションを上書きします。
axis, text
軸へのテキスト描画を有効/無効にします。0 に設定すると軸への描画が無効になり、fontfile と axisfile オプションは無視されます。既定値は 1 です。
csp
色空間を設定します。指定できる値は次のとおりです。
‘unspecified’
Unspecified(既定)です。
‘bt709’
BT.709 です。
‘fcc’
FCC です。
‘bt470bg’
BT.470BG または BT.601-6 625 です。
‘smpte170m’
SMPTE-170M または BT.601-6 525 です。
‘smpte240m’
SMPTE-240M です。
‘bt2020ncl’
非定輝度の BT.2020 です。
cscheme
スペクトログラムのカラースキームを設定します。これは left_r|left_g|left_b|right_r|right_g|right_b という形式の浮動小数点値のリストです。既定値は 1|0.5|0|0|0.5|1 です。
20.22.1 例
-
スペクトルを表示しながら音声を再生する:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]' -
上記と同じだが、フレームレート 30fps:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]' -
1280x720 で再生する:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]' -
ソノグラム表示を無効にする:
sono_h=0 -
A1 とその倍音: A1、A2、(ほぼ)E3、A3:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt [out0]' -
上記と同じだが、周波数領域の精度をより高める:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]' -
カスタム音量:
bar_v=10:sono_v=bar_v*a_weighting(f) -
カスタムガンマ。スペクトルが振幅に対して線形になります。
bar_g=2:sono_g=2 -
カスタム tlength の式:
tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))' -
カスタム fontcolor と fontfile。C の音は緑、それ以外は青で色付けする:
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf -
fontconfig を使うカスタムフォント:
font='Courier New,Monospace,mono|bold' -
画像ファイルによるカスタム軸を使ったカスタム周波数範囲:
axisfile=myaxis.png:basefreq=40:endfreq=10000
20.23 showcwt
入力音声を、連続ウェーブレット変換と Morlet ウェーブレットを使って周波数スペクトルを表す映像出力へ変換します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文は ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 640x512 です。
rate, r
出力フレームレートを設定します。既定値は 25 です。
scale
使用する周波数スケールを設定します。指定できる値は次のとおりです。
linear log bark mel erbs sqrt cbrt qdrt fm
既定値は linear です。
iscale
使用する強度スケールを設定します。指定できる値は次のとおりです。
linear log sqrt cbrt qdrt
既定値は log です。
min
出力で使われる最小周波数を設定します。既定値は 20 Hz です。
max
出力で使われる最大周波数を設定します。既定値は 20000 Hz です。実際の周波数の上限は入力音声のサンプリングレートに依存し、ナイキスト周波数より大きい値を設定した場合はその上限に制限されます。
imin
出力で使われる最小強度を設定します。
imax
出力で使われる最大強度を設定します。
logb
計算した振幅値をピクセル値へマッピングする際の、明るさの強さに対する対数の底を設定します。指定できる範囲は 0 から 1 です。既定値は 0.0001 です。
deviation
周波数の偏差を設定します。1 より低い値は周波数寄り、1 より高い値は時間寄りになります。指定できる範囲は 0 から 10 です。既定値は 1 です。
pps
1 行あたり 1 秒ごとに出力するピクセル数を設定します。指定できる範囲は 1 から 1024 です。既定値は 64 です。
mode
出力の表示モードを設定します。指定できる値は次のとおりです。
magnitude
振幅を表示します。
phase
位相のみを表示します。
magphase
振幅と位相を組み合わせて表示します。振幅は明るさに、位相は色にマッピングされます。
channel
チャンネルごとの振幅を固有の色で表示します。
stereo
ステレオ差を固有の色で表示します。
既定値は magnitude です。
slide
出力のスライド方式を設定します。指定できる値は次のとおりです。
replace scroll frame direction
出力のスライド方式に対する方向を設定します。指定できる値は次のとおりです。
lr
左から右への方向です。
rl
右から左への方向です。
ud
上から下への方向です。
du
下から上への方向です。
bar
表示サイズに対するバーグラフ表示の比率を設定します。既定値は 0 です。
rotation
色の回転を設定します。[-1.0, 1.0] の範囲でなければなりません。既定値は 0 です。
20.24 showfreqs
入力音声を、音声のパワースペクトルを表す映像出力へ変換します。Y 軸が音声の振幅、X 軸が周波数を表します。
このフィルタは次のオプションを受け付けます。
size, s
映像のサイズを指定します。このオプションの構文は ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 1024x512 です。
rate, r
映像レートを設定します。既定値は 25 です。
mode
表示モードを設定します。各周波数ビンをどう表現するかを決めます。
次の値を受け付けます。
‘line’ ‘bar’ ‘dot’
既定値は bar です。
ascale
振幅スケールを設定します。
次の値を受け付けます。
‘lin’
線形スケールです。
‘sqrt’
平方根スケールです。
‘cbrt’
立方根スケールです。
‘log’
対数スケールです。
既定値は log です。
fscale
周波数スケールを設定します。
次の値を受け付けます。
‘lin’
線形スケールです。
‘log’
対数スケールです。
‘rlog’
逆対数スケールです。
既定値は lin です。
win_size
窓サイズを設定します。指定できる範囲は 16 から 65536 です。
既定値は 2048 です。
win_func
窓関数を設定します。
次の値を受け付けます。
‘rect’ ‘bartlett’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hanning です。
overlap
窓のオーバーラップを設定します。範囲は [0, 1] です。既定値は 1 で、選択した窓関数に最適なオーバーラップが選ばれます。
averaging
時間平均を設定します。0 に設定すると現在の最大ピークを表示します。既定値は 1 で、時間平均は無効になります。
colors
チャンネルの周波数を描画するのに使う色のリストを、空白または '|' で区切って指定します。認識されない色や欠けた色は白に置き換えられます。
cmode
チャンネルの表示モードを設定します。
次の値を受け付けます。
‘combined’ ‘separate’
既定値は combined です。
minamp
log 振幅スケーラーで使う最小振幅を設定します。
data
データの表示モードを設定します。
次の値を受け付けます。
‘magnitude’ ‘phase’ ‘delay’
既定値は magnitude です。
channels
音声を処理する際に使うチャンネルを設定します。既定ではすべてが処理されます。
20.25 showspatial
ステレオ入力音声を映像出力に変換し、2チャンネル間の空間的な関係を表現します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」節を参照してください。既定値は 512x512 です。
win_size
窓サイズを設定します。指定できる範囲は 1024 から 65536 までです。既定のサイズは 4096 です。
win_func
窓関数を設定します。
次の値を受け付けます。
‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hann です。
rate, r
出力フレームレートを設定します。
20.26 showspectrum
入力音声を映像出力に変換し、音声の周波数スペクトルを表現します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」節を参照してください。既定値は 640x512 です。
slide
スペクトルが窓に沿ってどのようにスライドするかを指定します。
次の値を受け付けます。
‘replace’
サンプルが右端に達すると、左端から再び始まります。
‘scroll’
サンプルが右から左へスクロールします。
‘fullframe’
サンプルが右端に達したときにのみフレームが生成されます。
‘rscroll’
サンプルが左から右へスクロールします。
‘lreplace’
サンプルが左端に達すると、右端から再び始まります。
既定値は replace です。
mode
表示モードを指定します。
次の値を受け付けます。
‘combined’
すべてのチャンネルが同じ行に表示されます。
‘separate’
すべてのチャンネルが別々の行に表示されます。
既定値は ‘combined’ です。
color
表示の色モードを指定します。
次の値を受け付けます。
‘channel’
各チャンネルが別々の色で表示されます。
‘intensity’
各チャンネルが同じカラースキームで表示されます。
‘rainbow’
各チャンネルが rainbow カラースキームで表示されます。
‘moreland’
各チャンネルが moreland カラースキームで表示されます。
‘nebulae’
各チャンネルが nebulae カラースキームで表示されます。
‘fire’
各チャンネルが fire カラースキームで表示されます。
‘fiery’
各チャンネルが fiery カラースキームで表示されます。
‘fruit’
各チャンネルが fruit カラースキームで表示されます。
‘cool’
各チャンネルが cool カラースキームで表示されます。
‘magma’
各チャンネルが magma カラースキームで表示されます。
‘green’
各チャンネルが green カラースキームで表示されます。
‘viridis’
各チャンネルが viridis カラースキームで表示されます。
‘plasma’
各チャンネルが plasma カラースキームで表示されます。
‘cividis’
各チャンネルが cividis カラースキームで表示されます。
‘terrain’
各チャンネルが terrain カラースキームで表示されます。
既定値は ‘channel’ です。
scale
強度の色値を計算するために用いるスケールを指定します。
次の値を受け付けます。
‘lin’
線形です。
‘sqrt’
平方根(既定)です。
‘cbrt’
立方根です。
‘log’
対数です。
‘4thrt’
4乗根です。
‘5thrt’
5乗根です。
既定値は ‘sqrt’ です。
fscale
周波数スケールを指定します。
次の値を受け付けます。
‘lin’
線形です。
‘log’
対数です。
既定値は ‘lin’ です。
saturation
表示色の彩度の調整値を設定します。負の値は別のカラースキームを与えます。0 は彩度なしを意味します。彩度は [-10.0, 10.0] の範囲でなければなりません。既定値は 1 です。
win_func
窓関数を設定します。
次の値を受け付けます。
‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hann です。
orientation
時間軸と周波数軸の向きを設定します。vertical または horizontal を指定できます。既定は vertical です。
overlap
オーバーラップ窓の比率を設定します。既定値は 0 です。値が 1 のとき、現在使用している窓関数に推奨されるサイズにオーバーラップが設定されます。
gain
強度の色値を計算するためのスケールゲインを設定します。既定値は 1 です。
data
どのデータを表示するかを設定します。magnitude(既定)、phase、またはアンラップした位相 uphase を指定できます。
rotation
色の回転を設定します。[-1.0, 1.0] の範囲でなければなりません。既定値は 0 です。
start
スペクトログラムの表示を開始する周波数を設定します。既定は 0 です。
stop
スペクトログラムの表示を終了する周波数を設定します。既定は 0 です。
fps
フレームレートの上限を設定します。既定は auto(無制限)です。
legend
時間軸と周波数軸、および凡例を描画します。既定では無効です。
drange
強度の色値を計算するために用いるダイナミックレンジを設定します。既定は 120 dBFS です。指定できる範囲は 10 から 200 までです。
limit
入力音声サンプルの音量の上限を dBFS で設定します。既定は 0 dBFS です。指定できる範囲は -100 から 100 までです。
opacity
アルファ成分を持つピクセルフォーマットで出力する際の不透明度の強さを設定します。
使い方は showwaves フィルタとよく似ています。その節の例を参照してください。
20.26.1 Examples
-
対数の色スケーリングを用いた大きな窓:
showspectrum=s=1280x480:scale=log -
ffplayを用いた、チャンネルごとに色付けしてスライドするスペクトルの完全な例:ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
20.27 showspectrumpic
入力音声を1枚の映像フレームに変換し、音声の周波数スペクトルを表現します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」節を参照してください。既定値は 4096x2048 です。
mode
表示モードを指定します。
次の値を受け付けます。
‘combined’
すべてのチャンネルが同じ行に表示されます。
‘separate’
すべてのチャンネルが別々の行に表示されます。
既定値は ‘combined’ です。
color
表示の色モードを指定します。
次の値を受け付けます。
‘channel’
各チャンネルが別々の色で表示されます。
‘intensity’
各チャンネルが同じカラースキームで表示されます。
‘rainbow’
各チャンネルが rainbow カラースキームで表示されます。
‘moreland’
各チャンネルが moreland カラースキームで表示されます。
‘nebulae’
各チャンネルが nebulae カラースキームで表示されます。
‘fire’
各チャンネルが fire カラースキームで表示されます。
‘fiery’
各チャンネルが fiery カラースキームで表示されます。
‘fruit’
各チャンネルが fruit カラースキームで表示されます。
‘cool’
各チャンネルが cool カラースキームで表示されます。
‘magma’
各チャンネルが magma カラースキームで表示されます。
‘green’
各チャンネルが green カラースキームで表示されます。
‘viridis’
各チャンネルが viridis カラースキームで表示されます。
‘plasma’
各チャンネルが plasma カラースキームで表示されます。
‘cividis’
各チャンネルが cividis カラースキームで表示されます。
‘terrain’
各チャンネルが terrain カラースキームで表示されます。
既定値は ‘intensity’ です。
scale
強度の色値を計算するために用いるスケールを指定します。
次の値を受け付けます。
‘lin’
線形です。
‘sqrt’
平方根(既定)です。
‘cbrt’
立方根です。
‘log’
対数です。
‘4thrt’
4乗根です。
‘5thrt’
5乗根です。
既定値は ‘log’ です。
fscale
周波数スケールを指定します。
次の値を受け付けます。
‘lin’
線形です。
‘log’
対数です。
既定値は ‘lin’ です。
saturation
表示色の彩度の調整値を設定します。負の値は別のカラースキームを与えます。0 は彩度なしを意味します。彩度は [-10.0, 10.0] の範囲でなければなりません。既定値は 1 です。
win_func
窓関数を設定します。
次の値を受け付けます。
‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’
既定値は hann です。
orientation
時間軸と周波数軸の向きを設定します。vertical または horizontal を指定できます。既定は vertical です。
gain
強度の色値を計算するためのスケールゲインを設定します。既定値は 1 です。
legend
時間軸と周波数軸、および凡例を描画します。既定では有効です。
rotation
色の回転を設定します。[-1.0, 1.0] の範囲でなければなりません。既定値は 0 です。
start
スペクトログラムの表示を開始する周波数を設定します。既定は 0 です。
stop
スペクトログラムの表示を終了する周波数を設定します。既定は 0 です。
drange
強度の色値を計算するために用いるダイナミックレンジを設定します。既定は 120 dBFS です。指定できる範囲は 10 から 200 までです。
limit
入力音声サンプルの音量の上限を dBFS で設定します。既定は 0 dBFS です。指定できる範囲は -100 から 100 までです。
opacity
アルファ成分を持つピクセルフォーマットで出力する際の不透明度の強さを設定します。
20.27.1 Examples
ffmpegを用いて、音声トラック全体の音声スペクトログラムを 1024x1024 の画像として抽出します:ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
20.28 showvolume
入力音声の音量を映像出力に変換します。
このフィルタは次のオプションを受け付けます。
rate, r
映像レートを設定します。
b
枠線の幅を設定します。指定できる範囲は [0, 5] です。既定は 1 です。
w
チャンネルの幅を設定します。指定できる範囲は [80, 8192] です。既定は 400 です。
h
チャンネルの高さを設定します。指定できる範囲は [1, 900] です。既定は 20 です。
f
フェードを設定します。指定できる範囲は [0, 1] です。既定は 0.95 です。
c
音量の色の式を設定します。
この式では次の変数を使用できます。
VOLUME
チャンネルの現在の最大音量(dB)です。
PEAK
現在のピークです。
CHANNEL
現在のチャンネル番号(0 から始まる)です。
t
設定すると、チャンネル名を表示します。既定では有効です。
v
設定すると、音量値を表示します。既定では有効です。
o
向きを設定します。水平 h または垂直 v を指定でき、既定は h です。
s
ステップサイズを設定します。指定できる範囲は [0, 5] です。既定は 0 で、これはステップを無効にすることを意味します。
p
背景の不透明度を設定します。指定できる範囲は [0, 1] です。既定は 0 です。
m
メータリングモードを設定します。peak p または rms r を指定でき、既定は p です。
ds
表示スケールを設定します。線形 lin または対数 log を指定でき、既定は lin です。
dm
秒単位です。> 0. に設定すると、直前の秒数における最大レベルを示す線を表示します。既定では無効: 0.
dmc
最大レベル線の色です。dm オプションを > 0 に設定したときに使用します。既定は: orange
20.29 showwaves
入力音声を映像出力に変換し、サンプル波形を表現します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文については (ffmpeg-utils)ffmpeg-utils マニュアルの「Video size」節を参照してください。既定値は 600x240 です。
mode
表示モードを設定します。
指定できる値は次のとおりです。
‘point’
各サンプルに点を描画します。
‘line’
各サンプルに垂直線を描画します。
‘p2p’
各サンプルに点を描画し、点と点の間に線を引きます。
‘cline’
各サンプルに中央揃えの垂直線を描画します。
既定値は point です。
n
同じ列に表示するサンプル数を設定します。値が大きいほどフレームレートは低下します。正の整数でなければなりません。このオプションは rate の値が明示的に指定されていない場合にのみ設定できます。
rate, r
(おおよその)出力フレームレートを設定します。これはオプション n を設定することで行われます。既定値は "25" です。
split_channels
チャンネルを別々に描画するか重ねて描画するかを設定します。既定値は 0 です。
colors
各チャンネルの描画に使用する色を ’|’ で区切って設定します。
scale
振幅スケールを設定します。
指定できる値は次のとおりです。
‘lin’
線形です。
‘log’
対数です。
‘sqrt’
平方根です。
‘cbrt’
立方根です。
既定は線形です。
draw
描画モードを設定します。これは主に n が大きい場合に設定すると役立ちます。
指定できる値は次のとおりです。
‘scale’
描画する各サンプルでピクセル値をスケーリングします。
‘full’
各サンプルを直接描画します。
既定値は scale です。
20.29.1 例
-
入力ファイルの音声と、それに対応する映像表現を同時に出力します:
amovie=a.mp3,asplit[out0],showwaves[out1] -
合成信号を生成し、フレームレートを毎秒30フレームに固定して showwaves で表示します:
aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
20.30 showwavespic
入力音声をサンプルの波形を表す1枚の映像フレームに変換します。
このフィルタは次のオプションを受け付けます。
size, s
出力の映像サイズを指定します。このオプションの構文については (ffmpeg-utils) ffmpeg-utils マニュアルの「Video size」セクションを参照してください。既定値は 600x240 です。
split_channels
チャンネルを別々に描画するか重ねて描画するかを設定します。既定値は 0 です。
colors
各チャンネルの描画に使用する色を ’|’ で区切って設定します。
scale
振幅のスケールを設定します。
選択できる値は次のとおりです。
‘lin’
線形。
‘log’
対数。
‘sqrt’
平方根。
‘cbrt’
立方根。
既定値は線形です。
draw
描画モードを設定します。
選択できる値は次のとおりです。
‘scale’
描画する各サンプルに対してピクセル値をスケールします。
‘full’
各サンプルをそのまま描画します。
既定値は scale です。
filter
フィルタモードを設定します。
選択できる値は次のとおりです。
‘average’
描画する各サンプルにサンプル値の平均を用います。
‘peak’
描画する各サンプルにサンプル値のピークを用います。
既定値は average です。
20.30.1 例
ffmpegを使って、音声トラック全体の波形をチャンネルごとに分割した表現を 1024x800 の画像に抽出します:ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
20.31 sidedata, asidedata
フレームのサイドデータを削除する、またはそれに基づいてフレームを選択します。
このフィルタは次のオプションを受け付けます。
mode
フィルタの動作モードを設定します。
次のいずれかを指定できます。
‘select’
type のサイドデータを持つフレームをすべて選択します。
‘delete’
type のサイドデータを削除します。type が設定されていない場合は、フレーム内のすべてのサイドデータを削除します。
type
すべてのモードで使用するサイドデータの種類を設定します。select モードでは必ず設定しなければなりません。
指定できる値は次のとおりです。
‘PANSCAN’ ‘A53_CC’ ‘STEREO3D’ ‘MATRIXENCODING’ ‘DOWNMIX_INFO’ ‘REPLAYGAIN’ ‘DISPLAYMATRIX’ ‘AFD’ ‘MOTION_VECTORS’ ‘SKIP_SAMPLES’ ‘AUDIO_SERVICE_TYPE’ ‘MASTERING_DISPLAY_METADATA’ ‘GOP_TIMECODE’ ‘SPHERICAL’ ‘CONTENT_LIGHT_LEVEL’ ‘ICC_PROFILE’ ‘S12M_TIMECODE’ ‘DYNAMIC_HDR_PLUS’ ‘REGIONS_OF_INTEREST’ ‘VIDEO_ENC_PARAMS’ ‘SEI_UNREGISTERED’ ‘FILM_GRAIN_PARAMS’ ‘DETECTION_BOUNDING_BOXES’ ‘DETECTION_BBOXES’ ‘DOVI_RPU_BUFFER’ ‘DOVI_METADATA’ ‘DYNAMIC_HDR_VIVID’ ‘AMBIENT_VIEWING_ENVIRONMENT’ ‘VIDEO_HINT’
20.32 spectrumsynth
2つの入力映像スペクトルから音声を合成します。1つ目の入力ストリームは時間にわたる振幅を、2つ目は時間にわたる位相を表します。このフィルタは、映像として表示された周波数領域を、音声出力として提示される時間領域へと逆変換します。
このフィルタは主に、処理済みの showspectrum フィルタ出力を逆変換するために作られていますが、他のスペクトログラムから音を合成することもできます。ただしその場合、位相データが利用できないと結果は貧弱になります。位相データを再生成する必要があるためで、通常は単にランダムノイズから再生成されます。最良の結果を得るには、グレースケールのみの出力(showspectrum フィルタの channel カラーモード)を用い、振幅映像には log スケールを、位相映像には lin スケールを使うとよいでしょう。位相を生成するには、2つ目の映像で data オプションを使います。入力映像には一般的に fullframe のスライドモードを使うべきで、映像のデコードに必要なリソースを節約できます。
このフィルタは次のオプションを受け付けます。
sample_rate
出力音声のサンプリングレートを指定します。スペクトルの生成元となった音声のサンプリングレートとは異なっても構いません。
channels
入力映像スペクトルに表されているチャンネル数を設定します。
scale
振幅入力スペクトルの生成時に使用したスケールを設定します。lin または log を指定できます。既定値は log です。
slide
入力スペクトルの生成時に使用したスライドを設定します。replace、scroll、fullframe、rscroll のいずれかを指定できます。既定値は fullframe です。
win_func
再合成に使用する窓関数を設定します。
overlap
窓のオーバーラップを設定します。範囲は [0, 1] です。既定値は 1 で、選択した窓関数に最適なオーバーラップが選ばれることを意味します。
orientation
入力映像の向きを設定します。vertical または horizontal を指定できます。既定値は vertical です。
20.32.1 例
- まず音声から振幅映像と位相映像を生成し(音声はサンプリングレート 44100 のステレオと仮定)、続いて spectrumsynth で映像を音声に再合成します:
ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
20.33 split, asplit
入力を同一内容の複数の出力に分割します。
asplit は音声入力に、split は映像に対して動作します。
このフィルタは出力の数を指定する単一のパラメータを受け付けます。指定しない場合は 2 になります。
20.33.1 例
-
同じ入力から2つの別々の出力を作ります:
[in] split [out0][out1] -
3つ以上の出力を作るには、次のように出力数を指定する必要があります:
[in] asplit=3 [out0][out1][out2] -
同じ入力から2つの別々の出力を作り、一方はクロップ、もう一方はパディングします:
[in] split [splitout1][splitout2]; [splitout1] crop=100:100:0:0 [cropout]; [splitout2] pad=200:200:100:100 [padout]; -
ffmpegで入力音声のコピーを5つ作ります:ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
20.34 zmq, azmq
libzmq クライアント経由で送られたコマンドを受け取り、filtergraph 内のフィルタへ転送します。
zmq と azmq はパススルーフィルタとして動作します。zmq は2つの映像フィルタの間に、azmq は2つの音声フィルタの間に挿入しなければなりません。どちらも任意の種類のフィルタへメッセージを送ることができます。
これらのフィルタを有効にするには、libzmq ライブラリとヘッダをインストールし、FFmpeg を --enable-libzmq で configure する必要があります。
libzmq の詳細については次を参照してください: http://www.zeromq.org/
zmq および azmq フィルタは libzmq サーバとして動作し、bind_address オプション(省略形は "b")で定義されたネットワークインタフェース経由で送られたメッセージを受信します。このオプションの既定値は tcp://localhost:5555 です。必要に応じてこの値を変更しても構いませんが、’:’ 記号のエスケープを忘れないでください(filtergraph のエスケープを参照)。
受信するメッセージは次の形式でなければなりません:
TARGET COMMAND [ARG]
TARGET はコマンドの対象を指定します。通常はフィルタクラスの名前か、特定のフィルタインスタンス名です。既定のフィルタインスタンス名は ‘Parsed_
COMMAND は対象フィルタに対するコマンドの名前を指定します。
ARG は省略可能で、指定した COMMAND に対する任意の引数リストを指定します。
受信すると、メッセージが処理され、対応するコマンドが filtergraph に注入されます。結果に応じて、フィルタは次の形式でクライアントへ応答を返します:
ERROR_CODE ERROR_REASON
MESSAGE
MESSAGE は省略可能です。
20.34.1 例
これらのフィルタが処理するコマンドの送信に使える zmq クライアントの例については tools/zmqsend を参照してください。
ffplay によって生成された次の filtergraph を考えます。この例では最後の overlay フィルタにインスタンス名が付いています。その他のフィルタはすべて既定のインスタンス名を持ちます。
ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l] overlay [bg+l];
[bg+l][r] overlay@my=x=100 "
映像の左側の色を変えるには、次のコマンドが使えます:
echo Parsed_color_0 c yellow | tools/zmqsend
右側を変えるには:
echo Parsed_color_1 c pink | tools/zmqsend
右側の位置を変えるには:
echo overlay@my x 150 | tools/zmqsend
21 マルチメディアソース
以下に、現在利用できるマルチメディアソースを説明します。
21.1 amovie
movie ソースと同じだが、既定で音声ストリームを選択する点が異なります。
21.2 avsynctest
音声/映像の同期テストを生成します。
生成されるストリームは、定期的にフラッシュ映像フレームを表示し、音声でビープ音を発します。A/V 同期の問題を調べるのに便利です。
次のオプションを受け付けます。
size, s
出力の映像サイズを設定します。既定値は hd720 です。
framerate, fr
出力映像のフレームレートを設定します。既定値は 30 です。
samplerate, sr
出力音声のサンプリングレートを設定します。既定値は 44100 です。
amplitude, a
出力音声のビープ音の振幅を設定します。既定値は 0.7 です。
period, p
出力音声のビープ音の周期を秒単位で設定します。既定値は 3 です。
delay, dl
出力映像のフラッシュ遅延をフレーム数で設定します。既定値は 0 です。
cycle, c
映像遅延の循環を有効にします。既定では無効です。
duration, d
ストリーム出力の長さを設定します。既定では長さは無制限です。
fg, bg, ag
前景/背景/追加の色を設定します。
21.2.1 コマンド
このソースは上記オプションの一部をコマンドとしてサポートします。
21.3 movie
movie コンテナから音声・映像ストリームを読み込みます。
次のパラメータを受け付けます。
filename
読み込むリソースの名前(必ずしもファイルとは限らず、デバイスや何らかのプロトコル経由でアクセスするストリームでも構いません)。
format_name, f
読み込む movie に想定するフォーマットを指定します。container の名前または入力デバイスのいずれかを指定できます。指定しない場合、フォーマットは movie_name から推測されるか、プローブによって判定されます。
seek_point, sp
シークポイントを秒単位で指定します。フレームはこのシークポイントから出力されます。パラメータは av_strtod で評価されるため、数値に IS 接尾辞を付けても構いません。既定値は "0" です。
streams, s
読み込むストリームを指定します。複数のストリームを "+" で区切って指定できます。ソースはその数だけ、同じ順序で出力を持ちます。構文は (ffmpeg) ffmpeg マニュアルの「Stream specifiers」セクションで説明されています。"dv" と "da" という2つの特別な名前は、それぞれ既定の(最も適した)映像ストリームと音声ストリームを指定します。既定値は "dv"、フィルタが "amovie" として呼ばれた場合は "da" です。
stream_index, si
読み込む映像ストリームのインデックスを指定します。値が -1 の場合、最も適した映像ストリームが自動的に選択されます。既定値は "-1" です。非推奨です。フィルタが "amovie" として呼ばれた場合は、映像の代わりに音声を選択します。
loop
ストリームを連続して何回読み込むかを指定します。値が 0 の場合、ストリームは無限にループします。既定値は "1" です。
movie をループする際、ソースのタイムスタンプは変更されないため、単調増加しないタイムスタンプが生成される点に注意してください。
discontinuity
これを超えるとフレーム間の時間差がタイムスタンプの不連続とみなされ、以降のタイムスタンプを調整して除去される、その閾値となる時間差を指定します。
dec_threads
デコードに使うスレッド数を指定します。
format_opts
開いたファイルに対するフォーマットオプションを指定します。フォーマットオプションは ’:’ で区切った key=value のペアのリストとして指定できます。次の例は protocol_whitelist と protocol_blacklist オプションを追加する方法を示します:
ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"
これにより、次のグラフのように、filtergraph の主入力の上に2つ目の映像を重ねることができます:
input -----------> deltapts0 --> overlay --> output
^
|
movie --> scale--> deltapts1 -------+
21.3.1 例
-
AVI ファイル in.avi の先頭から 3.2 秒スキップし、"in" とラベル付けされた入力の上に重ねます:
movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out] -
video4linux2 デバイスから読み込み、"in" とラベル付けされた入力の上に重ねます:
movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out] -
dvd.vob から最初の映像ストリームと id 0x81 の音声ストリームを読み込みます。映像は "video" という名前のパッドに、音声は "audio" という名前のパッドに接続されます:
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
21.3.2 コマンド
movie と amovie はどちらも次のコマンドをサポートします。
seek
"av_seek_frame" を使ってシークを実行します。構文は次のとおりです: seek stream_index|timestamp|flags
- stream_index: stream_index が -1 の場合、既定のストリームが選択され、timestamp は AV_TIME_BASE 単位からストリーム固有の time_base へ自動的に変換されます。
- timestamp: AVStream.time_base 単位のタイムスタンプです。ストリームを指定しない場合は AV_TIME_BASE 単位です。
- flags: 方向とシークモードを選択するフラグです。
get_duration
movie の長さを AV_TIME_BASE 単位で取得します。
22 関連項目
ffmpeg, ffplay, ffprobe, libavfilter
23 著者
FFmpeg 開発者たちです。
著者の詳細については、プロジェクトの Git 履歴を参照してください(https://git.ffmpeg.org/ffmpeg)。たとえば FFmpeg のソースディレクトリで git log コマンドを実行するか、オンラインリポジトリ https://git.ffmpeg.org/ffmpeg を閲覧すればよいでしょう。
各コンポーネントのメンテナは、ソースコードツリー内の MAINTAINERS ファイルに記載されています。
ホスティングは telepoint.bg によって提供されています。