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

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= の出力で ’T’ と記されます。コマンドの名前はオプションの名前であり、引数が新しい値になります。

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_offsetlavfi.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

相互相関のアルゴリズムを設定します。slowfastbest のいずれかを指定できます。既定値は 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_Imeasured_LRAmeasured_TPmeasured_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_gaintrack_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 を指定できます。既定値は downwardupward モードに設定すると、信号の大きい部分が増幅され、ダイナミックレンジが上方向に拡張されます。一方 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

仮想スピーカーの位置をカスタム指定します。このオプションの構文は次のとおりです: [| |...]。各仮想スピーカーは、短いチャンネル名に続けて方位角と仰角を度単位で記述します。各仮想スピーカーの記述は ’|’ で区切ります。例として、左前と右前のチャンネル位置を上書きするには次のように指定します: ’speakers=FL 45 15|FR 345 15’。認識されないチャンネル名を含む記述は無視されます。

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
    
  • flitelavfi デバイスを使って 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

rcgmby オプション値の重みを設定します。既定値は 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.flv
    

    11.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'
    
  • ffmpeggnuplot を使って 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’ です。

周囲の画素を単純に補間してテレビ局のロゴを消します。ロゴを覆う矩形を設定するだけで消えてくれます(ときにはもっと醜いものが現れることもあります。結果は環境次第です)。

次のパラメータを受け付けます。

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 手法を適用して、入力画像/映像から雨を除去します。サポートするモデルは次のとおりです。

学習スクリプトおよびモデル生成スクリプトは、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 実行プロバイダ(例: cudadml)が使用するデバイスインデックスを設定します。既定値は 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/darh=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/darh=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

テキストの展開方法を選びます。nonestrftime(非推奨)、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

scriptfile のどちらかを必ず設定します。

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 なら 23xEPX なら 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

ノイズ除去の手法を設定します。既定は wienerhard も指定できます。

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

absoluterelativepattern のいずれか。既定は absolutepattern モードは 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_durationlavfi.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

グレーワールド仮定に基づいて色補正を行う色恒常性フィルタです。

参照: https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

このアルゴリズムはリニアライト(線形光)を使うため、入力データは事前に線形化しておく必要があります(可能であれば正しくタグ付けしておきます)。

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 を指定できます。既定値は offoff の場合は入力が 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

アンチバンディングのレベルを設定します。有効にすると、フィルタはヒストグラムのバンディングを避けるため、出力ピクセルの輝度をわずかにランダムに変動させます。指定できる値は noneweakstrong です。既定値は 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 には 2hq3x には 3hq4x には 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" で記録)。メーカー、カメラのモデル、レンズのモデルは必須なので、必ず指定してください。

利用可能なメーカーとモデルの一覧を取得するには、makemodel のオプションの一方または両方を省略します。フィルタは完全な一覧をログレベル 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

出力映像の寸法を表す式を設定します。既定値は iwih です。

scale フィルタと同じ式を使えます。

crop_x crop_y

入力のクロップ x/y を表す式を設定します。既定値は (iw-cw)/2(ih-ch)/2 です。

crop_w crop_h

入力のクロップ幅/高さを表す式を設定します。既定値は iwih です。

pos_x pos_y

出力の配置 x/y を表す式を設定します。既定値は (ow-pw)/2(oh-ph)/2 です。

pos_w pos_h

出力の配置幅/高さを表す式を設定します。既定値は owoh です。

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/ypos_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

アップスケーリングとダウンスケーリングに使うフィルタカーネルを設定します。それぞれの既定値は spline36mitchell です。指定できる値の完全な一覧を見るには、これらのオプションに 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

色覚異常のシミュレーションに使う錐体モデルです。lms の任意の組み合わせを受け付けます。いくつか例を挙げます。

‘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.03.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.24reinhard にいくぶん似ています。

‘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 の計算に使用するプール方式を設定します。指定できるのは minharmonic_meanmean(既定値)です。

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

マクロブロックサイズです。サポートされるのは 816 のみです。既定値は 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_rationb_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.cclavfi.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 に類似しています。

画像ファイルを使ってどのピクセルがロゴを構成しているかを判定し、テレビ局のロゴを抑制します。ロゴを構成するピクセルを近傍ピクセルで埋めることで動作します。

このフィルタは次のオプションを受け付けます。

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=360w=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 フィルタは、出力フレームにインターレースのフィールド種別を表すマークを付けます。入力フレーム自体は変更せず、対応するプロパティを設定するだけですが、これは後続のフィルタ(fieldorderyadif など)がそのフレームをどう扱うかに影響します。

このフィルタは次のオプションを受け付けます。

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 色分のエントリを表す枠のサイズを設定します。既定は 3030x30 ピクセルの枠)です。

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

畳み込みニューラルネットワークに基づく超解像手法のいずれかを適用して入力をスケーリングします。サポートするモデルは次のとおりです。

学習スクリプトおよびモデルファイル(.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 モデルのスケール係数を設定します。指定できる値は 234 です。既定値は 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’

グレー値をグラフ上に表示します。映像フレームに存在しない周辺ピクセルの値は、オプション xy で設定された2つの色成分のグラデーションで描画されます。3つ目の色成分は固定です。

‘color2’

映像フレームに実際に存在する色成分の値をグラフ上に表示します。

‘color3’

color2 と似ていますが、グラフ上で同じ xy の値の出現頻度が高くなるほど、別の色成分(xy の既定値では輝度)の値が増加します。

‘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 倍でフレームレートとフレーム数が半分の新しいクリップを生成します。

doubleweaveweave と同様に動作しますが、フレームレートとフレーム数を半分にしません。

次のオプションを受け付けます。

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 なら 23xBR なら 34xBR なら 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_0grid=2x1 と等価)が設定されます。それ以外のすべての場合は、ユーザーがレイアウトかグリッドを設定しなければなりません。gridlayout は同時に一方のみ指定できます。両方を指定するとエラーになります。

grid

固定サイズの入力グリッドを指定します。このオプションは入力ストリームの固定サイズグリッドを作成するために使います。グリッドサイズを COLUMNSxROWS の形式で設定します。ROWS * COLUMNS 個の入力ストリームが必要で、それらは ROWSCOLUMNS 列のグリッドに配置されます。このオプションを使う場合、行内の各入力ストリームは同じ高さでなければならず、すべての行は同じ幅でなければなりません。

grid が設定されると inputs オプションは無視され、暗黙的に ROWS * COLUMNS に設定されます。

2 入力の場合、既定のグリッド 2x1layout=0_0|w0_0 と等価)が設定されます。それ以外のすべての場合は、ユーザーがレイアウトかグリッドを設定しなければなりません。gridlayout は同時に一方のみ指定できます。両方を指定するとエラーになります。

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] で既定値は 655350 の場合、そのプレーンは変更されません。

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] で既定値は 655350 の場合、そのプレーンは変更されません。

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

ピクセル再マッピングに使う補間方法を指定します。指定できる値は nearlinear です。既定値は 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

最大キャプチャフレームレート。映像レート(例: 3060/124000/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 です。

このオプションは allrgballyuvhaldclutsrc の各フィルタでは利用できません。

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

フラクタルの種類を設定します。既定の carpettriangle を指定できます。

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

出力モードを設定します。barstrace を指定できます。既定値は 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

赤、緑、青のコントラストを指定します。既定値はそれぞれ 271。指定できる範囲は [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

赤、緑、青、アルファのコントラストを指定します。既定値はそれぞれ 4016080255。指定できる範囲は [0, 255]

rf gf bf af

赤、緑、青、アルファのフェードを指定します。既定値はそれぞれ 151055。指定できる範囲は [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

このフィルタは、sizerate を除く上記すべてのオプションをコマンドとしてサポートします。

20.8 bench, abench

フィルタグラフの一部をベンチマークします。

このフィルタは次のオプションを受け付けます:

action

タイマーを開始または停止します。

指定できる値は次のとおり:

‘start’

現在時刻を取得してフレームのメタデータ(キー lavfi.bench.start_time を使用)に設定し、フレームを次のフィルタへ転送します。

‘stop’

現在時刻を取得し、入力フレームのメタデータから lavfi.bench.start_time メタデータを取り出して時間差を求めます。続いて時間差・平均・最大・最小の時間(それぞれ tavgmaxmin)を出力します。タイムスタンプは秒で表されます。

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。よく使われる値は 918 で、それぞれ 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

ゲージが表示する値を設定します。有効な値は momentaryshortterm。既定では 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’

valuekey の両方が設定されている場合、そのようなメタデータを持つフレームを選択します。key のみが設定されている場合、メタデータにそのキーを持つすべてのフレームを選択します。

‘add’

新しいメタデータの keyvalue を追加します。キーがすでに存在する場合は何もしません。

‘modify’

すでに存在するキーの値を変更します。

‘delete’

value が設定されている場合、その値を持つキーのみを削除します。そうでなければキーを削除します。key が設定されていない場合、フレーム内のすべてのメタデータ値を削除します。

‘print’

メタデータが見つかった場合、キーとその値を出力します。key が設定されていない場合、フレーム内で利用可能なすべてのメタデータ値を出力します。

key

すべてのモードで使用するキーを設定します。printdelete を除くすべてのモードで設定が必須です。

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

functionexpr に設定されているときに使う式を設定します。式は 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

入力スペクトルの生成時に使用したスライドを設定します。replacescrollfullframerscroll のいずれかを指定できます。既定値は 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 内のフィルタへ転送します。

zmqazmq はパススルーフィルタとして動作します。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__’ というパターンを用いますが、‘filter_name@id’ 構文を使ってこれを上書きできます(Filtergraph syntax を参照)。

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 によって提供されています。