一般的な構文は次のとおりです:
avconv [global options] [[infile options][‘-i’ infile]]... {[outfile options] outfile}...
avconv はとても高速なビデオ およびオーディオコンバーターです。 またライブのオーディオ/ビデオのソースを捕捉(grab)することもできます。 また任意のサンプルレートから他の任意のサンプルレートへ変換することができ、 そして高品質のポリフェーズフィルターで動的に映像をリサイズすることができます。
avconv は、-i
オプションで指定されている任意の数の入力"ファイル"
(これらは通常のファイル、パイプ、ネットワークストリーム、捕捉しているデバイス
などがあり得ます)を読み取り、単純な出力ファイル名でしてい されている任意の
数の出力"ファイル"に書き出します。コマンドライン上にあるオプションとして
解釈されないものは全て、1つの出力ファイル名と見なされます。
各入力または出力ファイルは原則として異なる種類(映像/音声/字幕/アタッチメント/データ)
のストリームを複数含むことが可能です。含まれるストリームの数や種類はコンテナフォーマット
によって制限されます。どのストリームが入力から出力へ行くかの選択は、自動または
-map
オプションでなされます(ストリーム選択の章を見てください)。
オプションで入力ファイルを参照するには、それらの(0から始まる)インデックスを
用いなければなりません。例えば、最初の入力ファイルは0
、次の入力ファイルは
1
などです。同様に、ファイル内のストリームもそれらのインデックスによって
参照されます。例えば、2:3
は3番目の入力ファイルの中の4番目のストリームを
指します。ストリーム指定子の章も見てください。
一般的な規則として、オプションは次に並ぶ指定されたファイルに 適用されます。したがって、順序は重要であり、コマンドラインに 複数回同じオプションを与えることができます。それぞれ出てくる ごとに次にくる入力または出力ファイルに適用されます。 この規則の例外はグローバルオプション(例えば、ログの詳細度のレベル)で、 これらは最初に指定されるべきです。
入力と出力ファイルを混ぜないようにしてください – 最初に全ての入力ファイルを 指定し、それから出力ファイルを指定してください。また異なるファイルに属する オプションを混ぜないようにしてください。全てのオプションは次の入力もしくは 出力ファイルにのみ適用され、ファイルの間でリセットされます。
avconv -i input.avi -b 64k output.avi
avconv -i input.avi -r 24 output.avi
avconv -r 1 -i input.m2v -r 24 output.avi
未加工の入力ファイルにはフォーマットオプションが必要になってくるでしょう。
avconv
における各出力のトランスコーディング過程は以下の図によって
表されます:
_______ ______________ _________ ______________ ________ | | | | | | | | | | | input | demuxer | encoded data | decoder | decoded | encoder | encoded data | muxer | output | | file | ---------> | packets | ---------> | frames | ---------> | packets | -------> | file | |_______| |______________| |_________| |______________| |________|
avconv
は、入力ファイルを読み取ってそれらからエンコードされた
データを含むパケットを得るために libavformat ライブラリ(デミュクサーを含む)を
呼び出します。複数の入力ファイルがある場合には、avconv
はアクティブ
な入力ストリームの最も低いタイムスタンプを追跡することによって、それらが同期を
維持しようとします。
エンコードされたパケットは次にデコーダーに渡されます(そのストリームについて streamcopy が選択されていなければ。詳しくはのちほどの説明を読んでください)。 デコーダーは圧縮されていないフレーム(raw 映像/PCM 音声/...)を生成し、フィルタリング でさらに処理(次の節を見てください)できるようにします。フィルタリングののち、 フレームはエンコーダーに渡され、ここで再度エンコードされエンコードされたパケット として出力されます。最後にこれらはミュクサーに渡され、そこでエンコードされた パケットは出力ファイルに書き出されます。
エンコーディングされる前に、avconv
はlibavfilter ライブラリのフィルター
を使って raw 音声および映像フレームを処理できます。いくつか鎖状になったフィルターが
1つのフィルターグラフを構成します。avconv
は2種類のフィルターグラフを
区別します - 単純なものと複雑なものです。
単純フィルターグラフはただ1つの入力とただ1つの出力を、どちらも同じ種類でもつものです。 上記の図でこれらは単にデコーディングとエンコーディングの間に追加のステップを 挿入することで表現できます:
_________ __________ ______________ | | | | | | | decoded | simple filtergraph | filtered | encoder | encoded data | | frames | -------------------> | frames | ---------> | packets | |_________| |__________| |______________|
単純フィルターグラフはストリームごとの ‘-filter’ オプションで構成されます (それぞれ映像向けおよび音声向けの ‘-vf’ および ‘-af’ という別名と ともに)。例えば映像向けの単純フィルターグラフは以下のように見えます:
_______ _____________ _______ _____ ________ | | | | | | | | | | | input | ---> | deinterlace | ---> | scale | ---> | fps | ---> | output | |_______| |_____________| |_______| |_____| |________|
フィルターによってはフレームの内容でなくフレームの属性を変更することに注意
してください。例えば、上の例の中の fps
フィルターはフレームの個数を
変ますが、フレームの内容には触れません。もう1つの例としては setpts
フィルターがあり、これはタイムスタンプだけを設定しフレームを変更せずに渡し
ます。
複雑フィルターグラフは、単に直列な処理のつながりを1つのストリームに適用する だけでは表現できないものです。これは例えばグラフが複数の入力もしくは出力を もつ場合、あるいは出力ストリームが入力と種類が異なる場合に該当します。 これらは次のような図で表現できます:
_________ | | | input 0 |\ __________ |_________| \ | | \ _________ /| output 0 | \ | | / |__________| _________ \| complex | / | | | |/ | input 1 |---->| filter |\ |_________| | | \ __________ /| graph | \ | | / | | \| output 1 | _________ / |_________| |__________| | | / | input 2 |/ |_________|
複雑フィルターグラフは ‘-filter_complex’ オプションで構成されます。 このオプションはグローバルであることに注意してください、というのも複雑フィルター グラフは本来的に単一のストリームまたはファイルに曖昧さなしに関連づけることが できないからです。
複雑フィルターグラフの自明な例としては、overlay
フィルターがあります。
これは2つの映像入力を1つの映像出力をもち、出力では一方の映像の上に他方の映像が
オーバーレイされます。音声でこれに対応するのが amix
フィルターです。
ストリームコピーは ‘-codec’ オプションにパラメーター copy
を与えて
選択するモードです。こうすると avconv
はその指定されたストリームに
対するデコーディングおよびエンコーディングのステップを省略します。これはコンテナ
の形式を変更したりコンテナレベルのメタデータを修正する際に便利です。
上記の図はこの場合次のように単純になります:
_______ ______________ ________ | | | | | | | input | demuxer | encoded data | muxer | output | | file | ---------> | packets | -------> | file | |_______| |______________| |________|
デコーディングもエンコーディングもないため、高速そのものでかつ品質のロスが ありません。しかし多くの要因でうまく動作しない場合もあります。また、フィルター は圧縮されていないデータを扱うため、フィルターを適用することも明らかに不可能 です。
既定では avconv は入力ファイルにある各種のストリームのうち"最善"のものを取り出し、 各出力ファイルに追加しようとします。映像については、これは最高の解像度のもの を意味し、音声については最高のチャンネル数のものを意味します。字幕については 単に最初の字幕ストリームです。
-vn/-an/-sn
オプションを使ってこれらの既定値のいくつかを無効にすること
ができます。完全なマニュアル操作のためには、-map
オプションを使って
ください、これは上に書いた既定値を無効にします。
数値のオプションは全て(そうではないと明記していない限り) 1つの数を表す入力文字列を受け取ります。それには国際単位系の接頭辞 (例えば ’K’、’M’、’G’)を1つ含めてもかまいません。 この接頭辞の直後に ’i’ を付け加えると、10の累乗の代わりに2の累乗 が使われます。 ’B’ という接尾辞は値を8倍し、また他の接尾辞に付け加えても単独でも どちらでも使えます。これによって例えば ’KB’、’MiB’、’G’ や ’B’ が接尾辞として許されます。
引数をとらないオプションはブール値のオプションであり、対応する値を true にします。オプション名の前に "no" をつけることで false に できます。例えば、コマンドラインで "-nofoo" とすることで "foo" という 名前のブール値のオプションが false になります。
オプションには、例えばビットレートやコーデックのように、ストリームごとに適用されるものがあります。 ストリーム指定子は与えられたオプションがどのストリームに属するかを正確に指定するために使われます。
ストリーム指定子は文字列で、コロンによって区切られた省略可能なオプションの名前を追加されます。
例えば -codec:a:1 ac3
というオプションは a:1
というストリーム指定子を含み、
これは2番目の音声ストリームに対応します。したがってこのオプションは2番目の音声ストリームの
ac3 コーデックを選択します。
ストリーム指定子はいくつかのストリームにマッチし、その場合それら全てにそのオプションは
適用されます。例えば -b:a 128k
でのストリーム指定子は全ての音声ストリームに
マッチします。
空のストリーム指定子は全てのストリームにマッチし、例えば -codec copy
あるいは
-codec: copy
は再エンコーディングすることなしに全てのストリームをコピーします。
可能なストリーム指定子の形は以下のとおりです:
このインデックスを持つストリームにマッチします。例えば -threads:1 4
は
2番目のストリームのスレッドカウントを4に設定します。
stream_type は次のいずれかです: 映像のための ’v’、音声のための ’a’、 字幕のための ’s’、データのための ’d’、アタッチメントのための’t’。 stream_index が与えられていれば、その種類のストリーム番号 stream_index のものにマッチします。 さもなくばその種類の全てのストリームにマッチします。
stream_index が与えられていれば、id program_id を持つプログラムの ストリーム番号 stream_index のものにマッチします。さもなくば そのプログラムの全てのストリームにマッチします。
これらのオプションは av* ツールの間で共有されます。
ライセンスを表示します。
ヘルプを表示します。省略可能なパラメーターで特定の項目についての ヘルプを表示するように指定できます。
arg に可能な値は:
decoder_name という名前のデコーダーについての詳細な情報を表示します。 全てのデコーダーの一覧を取得するには ‘-decoders’ オプションを使ってください。
encoder_name という名前のエンコーダーについての詳細な情報を表示します。 全てのエンコーダーの一覧を取得するには ‘-encoders’ オプションを使ってください。
demuxer_name という名前のデミュクサーについての詳細な情報を表示します。 全てのミュクサーおよびデミュクサーの一覧を取得するには ‘-formats’ オプションを使ってください。
muxer_name という名前のミュクサーについての詳細な情報を表示します。 全てのミュクサーおよびデミュクサーの一覧を取得するには ‘-formats’ オプションを使ってください。
バージョンを表示します。
利用可能なフォーマットを表示します。
フォーマット名の前にあるフィールドは次のような意味があります:
デコーディングが利用できる
エンコーディングが利用できる
libavcodec に認識される全てのコーデックを表示します。
この文書では’コーデック’という用語はより正確にはメディアビットストリーム形式 とよぶべきものの短縮名であることに注意してください。
利用可能なデコーダーを表示します。
利用可能なエンコーダーを表示します。
利用可能な bitstream フィルターを表示します。
利用可能なプロトコルを表示します。
利用可能な libavfilter フィルターを表示します。
利用可能な pixel フォーマットを表示します。
利用可能なサンプルフォーマットを表示します。
そのライブラリで使用されるログの冗長さを設定します。 loglevel は以下の値の1つを含んだ数値または文字列:
既定ではプログラムは標準エラー出力にログを出力し、端末が色付けに
対応していれば、エラーと警告に印をつけるように色が使われます。
ログの色付けは環境変数
AV_LOG_FORCE_NOCOLOR
または NO_COLOR
をセットすることで無効にでき、
また環境変数 AV_LOG_FORCE_COLOR
をセットすることで強制できます。
環境変数 NO_COLOR
の利用は非推奨で、今後の Libav のバージョンでは
なくなる予定です。
これらのオプションは libavformat、libavdevice および libavcodec によって 直接提供されています。利用できる AVOptions の一覧を見るには、‘-help’ オプションを使ってください。これらは2つのカテゴリーに分けられます:
これらのオプションはどのコンテナ、コーデック、またはデバイスでも設定できます。 Generic オプションはコンテナ/デバイスについては AVFormatContext オプションの 下に、コーデックについては AVCodecContext オプションの下にあります。
これらのオプションは特定のコンテナ、デバイス、またはコーデック専用のものです。 Private オプションは対応するコンテナ/デバイス/コーデックの下にあります。
例えば既定の ID3v2.4 の代わりに ID3v2.3 ヘッダを MP3 ファイルに書き込むには、 MP3 ミュクサーの ‘id3v2_version’ という private オプションを使って ください:
avconv -i input.flac -id3v2_version 3 out.mp3
全てのコーデックの AVOptions は明らかにストリームごとなので、ここには ストリーム指定子のチャプターの説明が適用されます。
注意として、‘-nooption’ 構文はブール値の AVOptions では使えないので、 ‘-option 0’/‘-option 1’ を使ってください。
注意2として、v/a/s をオプション名の前に付けてストリームごとの AVOption を 指定するという、従来の文書化されていない方法は、現在非推奨で近いうちに削除されます。
入力もしくは出力ファイルの形式を強制します。通常なら形式は、入力ファイル については自動で検出され、出力ファイルについてはファイルの拡張子から推測 されます。そのため大抵の場合にはこのオプションは必要ありません。
入力のファイル名
確認することなく出力ファイルを上書きします。
1つまたはそれ以上のストリームについて(出力ファイルの前で使われる場合)
エンコーダー、または(入力ファイルの前に使われる場合)デコーダーを選択します。
codec はデコーダー/エンコーダーの名前、もしくは(出力の場合のみ)
そのストリームを再エンコードしないことを指示する特殊な値 copy
です。
stream_type は映像なら ’v’、音声なら ’a’、字幕なら ’s’、そして
データストリームなら ’d’ です。stream_index は、stream_type
が与えられていない場合、0から始まるグローバルなストリームインデックスで、
与えられている場合はその種類のストリームのみをカウントしたインデックスです。
stream_index が省略された場合、このオプションは与えられた種類の
全てのストリーム、または stream_type もない場合にはあらゆる種類の
ストリームに適用されます(これは全てのストリームが同じ種類のときか、
codec が copy
のときのみ意味があります)。
例えば
avconv -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
は全ての映像ストリームを libx264 でエンコードし、全ての音声ストリームをコピーします。
各ストリームに対し、最後にマッチする c
オプションが適用されるので、
avconv -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
では、libx264 でエンコードされる2番目の映像と、libvorbis でエンコードされる138番目 の音声を除き、これら以外の全てのストリームはコピーされます。
時間が duration に達した時点で出力を書き出すのを止めます。
duration は秒単位での数値か、hh:mm:ss[.xxx]
という形です。
ファイルサイズの上限を設定します。
入力オプションとして(-i
の前で)利用された場合には、この入力ファイル
に対し position へシークします。出力オプションとして(出力ファイルの前で)
利用された場合には、タイムスタンプが position に到達するまでの入力を
デコードしますが捨てます。これはより遅くなりますが、より正確です。
position は秒、または hh:mm:ss[.xxx]
という形です。
秒単位で入力時間のオフセットを設定します。
[-]hh:mm:ss[.xxx]
という構文もサポートされています。
オフセットは入力ファイルのタイムスタンプに加えられます。
正のオフセットを指定するということは offset 秒だけ
対応するストリームが遅延させられることを意味します。
メタデータ key/value の組を設定します。
省略可能な metadata_specifier はストリームもしくはチャプターに
メタデータを設定するために与えられます。詳しくは -map_metadata
のドキュメンテーションを見てください。
このオプションは -map_metadata
で設定されるメタデータにより
上書きされます。空の値を使ってメタデータを削除することもできます。
例えば、出力ファイルにタイトルを設定するには:
avconv -i in.avi -metadata title="my title" out.flv
最初の音声ストリームの言語を設定するには:
avconv -i INPUT -metadata:s:a:0 language=eng OUTPUT
目標のファイルの型(vcd
、svcd
、dvd
、dv
、
dv50
)を指定します。type には pal-
、ntsc-
および
film-
を前につけることで、対応する標準を使うことができます。
そのとき全てのフォーマットのオプション(ビットレート、コーデック、バッファサイズ)
は自動的に設定されます。単に次のようにタイプできます:
avconv -i myfile.avi -target vcd /tmp/vcd.mpg
ですが、標準のものと衝突しない限り追加のオプションを指定すること ができ、次のようになります:
avconv -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
録画録音されるデータフレームの数を設定します。これは -frames:d
の別名です。
framecount フレーム以降ストリームに書き込むのを止めます。
固定品質スケール(VBR)を使います。q の意味はコーデック依存 です。
filter_graph はストリームに適用されるフィルターグラフの説明です。
(ソースやシンクを含めて)利用できる全てのフィルターを表示するには
-filters
を使ってください。
複数の入力または出力でフィルターグラフを作成する場合、‘-filter_complex’ オプションも見てください。
合致したストリームのプリセットを指定します。
エンコーディングの進捗や統計を表示します。既定では有効です。
出力ファイルにアタッチメントを追加します。これは、例えば字幕を表示するために
使われるフォントのために、Matroska など限られたフォーマットでサポートされて
います。アタッチメントは特殊な種類のストリームとして実装されており、このため
このオプションはファイルに新しいストリームを追加します。そこでこのストリーム
に対して、いつものようにストリームごとのオプションを使うことができます。
このオプションで作成されるアタッチメントのストリームは他のあらゆるストリーム
(つまり、-map
または自動マッピングで作成されたもの)の後で作成されます。
Matroska について mimetype のメタデータタグも設定しなければならないことに 注意してください:
avconv -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
(出力ファイルの3番目がアタッチメントのストリームになると仮定しています)。
合致するアタッチメントのストリームを filename という名前のファイルに
取り出します。filename が空なら、filename
メタデータタグの値
が使われます。
例えば、最初のアタッチメントを ’out.ttf’ というファイルに取り出すには:
avconv -dump_attachment:t:0 out.ttf INPUT
全てのアタッチメントを filename
タグによって決まるファイルに取り出す
には:
avconv -dump_attachment:t "" INPUT
技術的な注意 – アタッチメントはコーデックのエクストラデータとして実装 されており、そのためこのオプションで実際には、アタッチメントだけでなく、 あらゆるストリームからエクストラデータを抽出するために使うことができます。
録画するビデオフレームの数を設定します。これは -frames:v
の別名です。
フレームレート(Hz での値、分数または省略形)を設定します。
入力ストリームとしては、ファイルに保存されているタイムスタンプをどれも無視し、 代わりに定数フレームレート fps を仮定してタイムスタンプを生成します。
出力ストリームとしては、入力フレームを重複させる、もしくは落とすなどして
定数フレームレート fps にしようとします(これは実際には、対応するフィルター
グラフの末尾に fps
フィルターを挿入することに注意してください)。
フレームサイズを設定します。
入力オプションとしては、これは ‘video_size’ プライベートオプションの ショートカットであり、フレームサイズがファイルに保存されているわけでも構成可能でも ないようなデミュクサーによって認識されます。例えば、生の映像や映像グラバーなどです。
出力オプションとしては、これは対応するフィルターグラフの末尾に scale
映像フィルターを挿入します。最初あるいは別のところで scale
フィルターを直接
使ってください。
書式は ‘wxh’ です(既定では、ソースと同じです)。以下の省略形が認識されます:
128x96
176x144
352x288
704x576
1408x1152
160x120
320x240
640x480
800x600
1024x768
1600x1200
2048x1536
1280x1024
2560x2048
5120x4096
852x480
1366x768
1600x1024
1920x1200
2560x1600
3200x2048
3840x2400
6400x4096
7680x4800
320x200
640x350
852x480
1280x720
1920x1080
aspect によって映像画面アスペクト比を設定します。
aspect は浮動小数点数の文字列、または num:den の形の 文字列、ただし num および den はアスペクト比の分子および 分母です。例えば、"4:3"、"16:9"、"1.3333"、および "1.7777" は適正な引数の 値です。
映像の録画を無効にします。
映像コーデックを設定します。これは -codec:v
の別名です。
ソースと同じ量子化器を使います(暗に VBR になります)。
注意: これは同じ品質ではありません。必要だと分かっているとき以外は 使わないでください。
パス数(1または2)を選択します。2パスビデオエンコーディングをするのに 使われます。映像の統計情報が最初のパスでログファイル(オプション -passlogfile も参照してください)に記録されます。そして2番目のパスでこのログファイルを使って 正確に要求されたビットレートに映像が生成されます。 パス1では、ちょうど音声を無効にし出力を null にすることもできます。 Windows や Unix での例:
avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
2パスのログファイル名の接頭辞を prefix に設定します。既定の名前の 接頭辞は “av2pass” です。完全なファイル名は ‘PREFIX-N.log’ で、 ただし N は出力ストリーム別の番号です。
filter_graph は入力映像に適用されるフィルターグラフの
説明です。
(ソースとシンクを含んだ)利用可能な全てのフィルターを表示するには
"-filters" オプションを使ってください。これは -filter:v
の別名です。
ピクセルフォーマットを設定します。全てのサポートされているピクセルフォーマットを表示する
ためには、-pix_fmts
を使ってください。
SwScaler フラグを設定します。
出発点を破棄します。
特定のインターバルに対するレート制御の変更
画像のインターレースを外します。
このデインターレースはとても低い品質のため、このオプションは非推奨です。
-filter:v yadif
のようにして yadif フィルターを使ってください。
映像のコーディング統計情報を ‘vstats_HHMMSS.log’ にダンプします。
映像のコーディング統計情報を file にダンプします。
top=1/bottom=0/auto=-1 領域を最初に
イントラ DC 精度。
ビデオタグ/fourcc を強制します。これは -tag:v
の別名です。
QP 棒グラフを見せます。
キーフレームを指定されたタイムスタンプに強制します、より正確には その最初のフレームを指定された各タイムスタンプの後に強制します。 このオプションはチャプターマークやその他の出力ファイルの中で 指示された場所にシークポイントが示されることを保証するために便利 となります。このタイムスタンプは昇順に指定される必要があります。
ストリームのコピーをする際に、、最初に見つかった non-key フレーム もコピーします。
録音するオーディオフレームの数を設定します。これは -frames:a
の別名です。
オーディオサンプリング頻度を設定します。出力ストリームに対しては 既定では入力ストリームの頻度が設定されます。入力ストリームに対しては このオプションは音声グラブデバイスおよび生のデミュクサーに対してのみ 意味があり、対応するデミュクサーオプションにマップされます。
オーディオ品質を設定します(コーデック別、VBR)。これは -q:a の別名です。
オーディオチャンネルの数を設定します。出力ストリームについては、 既定では入力にあるオーディオチャンネルと同じ数に設定されます。 入力ストリームについては、このオプションは音声グラブデバイスおよび 生のデミュクサーに対してのみ意味があり、対応するデミュクサーに マップされます。
音声の録音を無効にします。
音声コーデックを設定します。これは -codec:a
の別名です。
音声サンプルフォーマットを設定します。サポートされているサンプルフォーマットの
一覧を得るには -sample_fmts
を使ってください。
filter_graph は入力音声に適用されるフィルターグラフの表現です。
(ソースやシンクを含め)利用できる全てのフィルターを表示するためにはオプション
"-filters" を使ってください。これは -filter:a
の別名です。
オーディオのタグ/fourcc を強制します。これは -tag:a
の別名です。
サブタイトルのコーデックを設定します。これは -codec:s
の別名です。
サブタイトルの記録を無効にします。
出力ファイルのソースとして1つ以上の入力ストリームを指定します。各入力ストリームは 入力ファイルインデックス input_file_id と、その入力ファイル内の入力 ストリームインデックス input_stream_id によって識別されます。 それぞれのインデックスは0から始まります。指定されていれば、 sync_file_id:stream_specifier はプレゼンテーションシンク参照として どの入力ストリームが使われるかを設定します。
input_stream_type が指定されている場合(映像には ’v’、音声には ’a’、字幕には ’s’、データには ’d’)、input_stream_id はその種類のストリームだけカウント します。 sync_stream_type についても同じです。
input_stream_id は省略でき、その場合与えられた種類の全てのストリームがマップ されます(種類が指定されていない場合は、そのファイルの全てのストリームがマップされます)。
コマンドライン上の最初の -map
オプションは出力ストリーム0のソースを
指定し、その次の -map
オプションは出力ストリーム1のソースを指定する、
というようになります。
ストリーム識別子の前に -
があると、"ネガティブ"マッピングを作成します。
これは既に作成されているマッピングからマッチするストリームを無効にします。
[linklabel] による別の形では、出力を複雑なフィルターグラフ(‘-filter_complex’ を見てください)から出力ファイルへマップします。 linklabel はグラフ内の定義された出力リンクラベルと対応していなければ なりません。
例えば、最初の入力ファイルから出力へ全てのストリームをマップするには
avconv -i INPUT -map 0 output
例えば、最初の出力ファイル内に2つの音声ストリームがある場合、これらの
ストリームは "0:0" および "0:1" として識別されます。-map
を使って
どのストリームが出力ファイルに配置されるか選びます。
例えば:
avconv -i INPUT -map 0:1 out.wav
は ‘INPUT’ 内の "0:1" で識別される入力ストリームを ‘out.wav’ 内の(単一の)出力ストリームにマップします。
例えば、入力ファイル ‘a.mov’ から(識別子 "0:2" を指定することによって) インデックス2のストリームを選択し、かつ(識別子 "1:6" を指定することによって) 入力 ‘b.mov’ のインデックス6のストリームを選択して、それらを 出力ファイル ‘out.mov’ にコピーするには:
avconv -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
入力ファイルから全ての映像と3番目の音声ストリームを選択するには:
avconv -i INPUT -map 0:v -map 0:a:2 OUTPUT
2番目の音声以外の全てのストリームをマップするには、ネガティブマッピングを使います
avconv -i INPUT -map 0 -map -0:a:1 OUTPUT
注意として、このオプションを使うとこの出力ファイルに対する既定のマッピングが無効になります。
infile の次の出力ファイルのメタデータ情報を設定します。これらは (0から始まる)ファイルのインデックスであり、ファイル名ではないことに注意してください。 省略可能な metadata_spec_in/out パラメータはどのメタデータをコピーするかを指定します。 メタデータ指定子は以下のいずれかの形が可能です:
グローバルメタデータ、つまりファイル全体に適用されるメタデータ
ストリームごとのメタデータ。stream_spec は Stream specifiers の章で説明 されているストリーム指定子です。入力メタデータの指定子では、最初に合致したストリームが そこからコピーされます。出力メタデータ指定子では、合致した全てのストリームがそこにコピー されます。
チャプターごとのメタデータ。chapter_index は0から始まるチャプターのインデックスです。
プログラムごとのメタデータ。program_index は0から始まるプログラムのインデックスです。
メタデータ指定子が省略された場合、既定では global になります。
既定では、global メタデータは最初の入力ファイルからコピーされ、 per-stream および per-chapter メタデータは stream/chapter に合わせてコピーされます。 これらの既定のマッピングは関連する種類のマッピングを作成することで無効になります。 自動的なコピーを無効にするだけのダミーのマッピングを作成するために、負のファイルインデックスが利用できます。
例えばメタデータを入力ファイルの最初のストリームから出力ファイルの global メタデータ にコピーするには:
avconv -i in.ogg -map_metadata 0:s:0 out.mp3
逆をする、つまりグローバルなメタデータを全ての音声ストリームへコピーするには:
avconv -i in.mkv -map_metadata:s:a 0:g out.mkv
この例では単に0
とすることでうまくいくことに注意してください。なぜなら
既定でグローバルメタデータが仮定されるからです。
インデックス input_file_index を持つ入力ファイルから次の出力ファイルへ チャプターをコピーします。チャプターマッピングが指定されていなければ、 少なくとも1つチャプターがある最初の入力ファイルからコピーされます。チャプターのコピーを 一切無効にするには負のファイルインデックスを使ってください。
特定のデバグ情報を印字します。
エンコードの終了時にベンチマーク情報を表示します。 CPU 時間と最大メモリ消費を表示します。 最大メモリ消費は全てのシステムでサポートされているわけではなく、 サポートされていない場合にはたいてい 0 として表示します。
avconv が duration 秒間実行された時点で終了します。
各入力パケットを標準エラー出力にダンプします。
パケットをダンプする際に、ペイロードもダンプします。
ネイティブのフレームレートで入力を読み込みます。主にグラブデバイスをシミュレートするために使います。
ビデオ同期方式。
demuxer から muxer へタイムスタンプとともに各フレームを渡します。
要求された定数フレームレートを実現するためにフレームを重複させたり 抜かしたりします。
フレームはタイムスタンプとともに渡されますが、同じタイムスタンプの2つの フレームがあれば抜かします。
muxer の能力に応じて 1 か 2 を選択する。 これが既定の方法です。
-map を併用することでどのストリームからタイムスタンプを取得するべきか選択できます。 ビデオまたはオーディオを変更せずにおいておくことができ、その変更しないものに対し 残りのストリームを同期することができます。
オーディオ同期方式。タイムスタンプに合わせて音声ストリームを“伸長/圧縮”し、
パラメーターは音声を変更するときに用いられる秒間最大サンプル数です。
-async 1 は音声ストリームの開始のみを補正し以後補正しないという特殊な場合です。
このオプションは廃れています。代わりに asyncts
音声フィルターを使ってください。
入力から出力へタイムスタンプをコピーします。
ストリームをコピーする際入力ストリームのタイムベースを入力から出力へコピーします。
最も短い入力ストリームが終わり次第エンコーディングを終えます。
タイムスタンプを不連続差分閾値にする。
demux-デコード遅延の最大値を設定する。
初期 demux-デコード遅延を設定する。
出力ストリームに新しい stream-id の値を割り当てます。このオプションは これが適用される出力ファイル名より先に指定されるべきです。 複数の出力ファイルがある場合、stream-id は異なる値に再割り当てされる ことがあります。
例えば、ある出力 mpegts ファイルに対して stream 0 PID に33を、そして stream 1 PID に36を設定するためには:
avconv -i infile -streamid 0:33 -streamid 1:36 out.ts
対応するストリームにビットストリームフィルターを設定します。bistream_filters は
ビットストリームフィルターのコンマで区切られたリストです。ビットストリームフィルターの
リストを得るには -bsfs
オプションを使ってください。
avconv -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
avconv -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
対応するストリームに タグ/fourcc を強制します。
自動検出された CPU フラグに適用されるマスクを設定します。このオプションはテスト 目的のものです。何をしているか知らない場合には使わないでください。
複雑なフィルターグラフを定義します。例えば、任意の数の入力または出力をもつものです。 単純なグラフ – 同じ種類の1つの入力と1つの出力をもつもの – については、‘-filter’ オプションを見てください。filtergraph はフィルターグラフの記述で、Filtergraph syntax で説明されているとおりです。
入力リンクラベルは [file_index:stream_specifier]
構文(つまり、‘-map’ が
使うのと同じように)を使って入力ストリームを参照していなければなりません。
stream_specifier が複数のストリームに合致する場合には、最初のものが使われます。
ラベルづけられていない入力は、種類が合致する使われていない入力ストリームの最初のものに
つながれます。
出力リンクラベルは ‘-map’ で参照されます。ラベルづけられていない出力は 最初の出力ファイルに加えられます。
このオプションによって通常の入力ファイルなしに lavfi ソースだけで使えることに 注意してください。
例えば、映像に画像をオーバーレイするには
avconv -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map '[out]' out.mkv
ここで [0:v]
は最初の入力ファイルの最初の映像ストリームを参照し、これは
オーバーレイフィルターの最初の(主な)入力にリンクされます。同様に、2番目の入力の
最初の映像ストリームはオーバーレイの2番目の(オーバーレイ)入力にリンクされます。
各入力ファイルにただ1つだけ映像ストリームがあると仮定した場合、入力ラベルを省略 できます。このため上は以下と同じです:
avconv -i video.mkv -i image.png -filter_complex 'overlay[out]' -map '[out]' out.mkv
さらに出力ラベルを省略でき、フィルターグラフからの単一の出力はその出力ファイルに 自動的に追加されるので、単に次のように書けます:
avconv -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
lavfi color
ソースを使って5秒間の純粋な赤い映像を生成するには:
avconv -filter_complex 'color=red' -t 5 out.mkv
avconv -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
プリセットファイルは各行に1つ option=value という組の列を含んでおり、 コマンドライン上で指定できるオプションの列を指定します。ハッシュ記号(’#’) で始まる行は無視されコメントを提供するために用いられます。空行も無視されます。 例としては Libav ソースツリーにある ‘presets’ ディレクトリを 確認してください。
プリセットファイルは pre
オプションによって指定され、このオプションは
入力としてプリセットの名前をとります。Avconv は preset_name.avpreset
という名前のファイルを(あれば)ディレクトリ ‘$AVCONV_DATADIR’、または
‘$HOME/.avconv’、または configure 時に定義されたデータディレクトリ
(大抵の場合 ‘$PREFIX/share/avconv’ です)から、この順番に探します。
例えば、引数が libx264-max
なら、‘libx264-max.avpreset’ というファイルを探します。
入力フォーマットおよびデバイスを指定すると avconv は ビデオおよびオーディオを直接捕捉することができます。
avconv -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
Gerd Knorr による xawtv のようなテレビビューアと ともに avconv を動作させる前に、正しい映像のソースとチャンネルを有効にしなければ ならないことに注意してください。 また標準的なミキサーを用いて正確に音声録音水準を設定しなければなりません。
avconv は X11 ディスプレイを捕捉することができます。
avconv -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
0.0はあなたの X11 サーバのディスプレイ.スクリーン番号であり、DISPLAY 環境変数と 同じものです。
avconv -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
0.0 は X11 サーバーの display.screen 番号で、DISPLAY 環境変数と同じものです。 10は捕捉のための x-オフセット、20は y-オフセットです。
任意のサポートしているファイルフォーマットおよびプロトコルを avconv への入力に使うことができます:
例:
avconv -i /tmp/test%d.Y /tmp/out.mpg
これで次のファイルを使います:
/tmp/test0.Y、/tmp/test0.U、/tmp/test0.V、 /tmp/test1.Y、/tmp/test1.U、/tmp/test1.V、など
この Y ファイルは U ファイルと V ファイルの解像度を2度使います。 これらは未加工のファイルで、ヘッダーがありません。 全てのまともなビデオデコーダーでこれらが生成できます。 avconv が推測できない場合には -s オプションで画像のサイズを指定しなければなりません。
avconv -i /tmp/test.yuv /tmp/out.avi
test.yuv は未加工の YUV 平面データを含むファイルです。 各フレームは Y 平面と、それに続く U および V 平面から 半水平および垂直解像度で合成される。
avconv -i mydivx.avi hugefile.yuv
avconv -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
上は音声ファイル a.wav と未加工の YUV 映像ファイル a.yuv を MPEG ファイル a.mpg に変換します。
avconv -i /tmp/a.wav -ar 22050 /tmp/a.mp2
上は a.wav を22050 Hzのサンプルレートで MPEG 音声に変換します。
avconv -i /tmp/a.wav -map 0:a -b 64k /tmp/a.mp2 -map 0:a -b 128k /tmp/b.mp2
上は a.wav を a.mp2 へ64kbitsで変換し、b.mp2へ128 kbitsで変換します。 ’-mapfile:index’ は各出力ストリームに対してどの入力ストリームが使われるかを 指定し、出力ストリームの定義の順に対応されます。
avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
これは典型的な DVD リッピングの例です; 入力は VOB ファイルで、出力は
MPEG-4 ビデオと MP3 オーディオからなる AVI ファイルです。
このコマンドでは B-フレームを使っているため MPEG-4 ストリームは DivX5
互換であり、 GOP サイズが300(29.97fpsの入力ビデオに対して10秒毎に1つの
intra フレームを意味する)になっていることに注意してください。
さらに、音声ストリームは MP3-エンコードされているため、
--enable-libmp3lame
を渡して configure することで LAME サポートを
有効にする必要があります。
このマッピングはお望みの音声言語を得るための DVD コード変換のために
特に便利です。
注意: サポートされている入力フォーマットを見るには、avconv -formats
を使ってください。
ビデオから画像を抽出するには:
avconv -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
これはビデオから毎秒1つのビデオフレームを引き出し、それらを ‘foo-001.jpeg’、‘foo-002.jpeg’ などの名前をつけたファイルに出力します。新しい WxH 値に合うように再スケールされます。
限られた数のフレームだけを引き出したい場合には、上記のコマンドを -vframes オプションまたは -t オプションと組み合わせて、もしくは特定の時刻の点から引き出しを始めるように -ss を組み合わせて 使うことができます。
多数の画像からビデオを作成するには:
avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
構文 foo-%03d.jpeg
は列番号を表現する0を並べて3つの桁に揃えられた10進数字を使うことを
指定します。これは C の printf 関数によってサポートされているのと同じ構文ですが、
標準の整数1つを受け付ける書式のみが適しています。
avconv -i test1.avi -i test2.avi -map 0.3 -map 0.2 -map 0.1 -map 0.0 -c copy test12.nut
結果の出力ファイル ‘test12.avi’ は、入力ファイルから逆順に最初の4つの ストリームを含みます。
avconv -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext
算術的な式を評価する際に、Libav は内部の数式評価器を使います。 これは ‘libavutil/eval.h’ インターフェイスを通じて実装されて います。
式は1引数および2引数演算子、定数および関数を含みます。
2つの式 expr1 と expr2 を結合して別の式 "expr1;expr2" を構成することができます。 expr1 と expr2 が順に評価され、この新しい式は expr2 の値を自身の値とします。
次の2引数演算子が利用できます: +
、-
、
*
、/
、^
。
次の1引数演算子が利用できます: +
、-
。
次の関数が利用できます:
x が +/-INFINITY なら1.0、さもなくば0.0。
x が NAN なら1.0、さもなくば0.0。
式 expr の値を内部の変数に格納できます。 var は値を格納する変数を示す番号で、 0から9までの範囲の値です。 この関数は内部の変数に格納される値を返します。
番号 var を持つ内部の変数の値をロードできます。 これは以前に st(var, expr) で格納されたものです。 この関数はロードされた値を返します。
式 cond が0でない間、式 expr を評価します。 そして最後の expr の評価の値を返します。 cond がいつも false なら NAN を返します。
式 expr の値を大きくなる方向に最も近い整数に丸めます。 例えば、"ceil(1.5)" は "2.0" です。
式 expr の値を小さくなる方向に最も近い整数に丸めます。 例えば、"floor(-1.5)"はs "-2.0 です。
式 expr の値を0の方向に最も近い整数に丸めます。 例えば、"trunc(-1.5)" は "-1.0" です。
expr の平方根を計算します。これは "(expr)^.5" と 同じです。
expr が0なら1.0、さもなくば0.0を返します。
以下の点に注意してください:
*
は AND のように動作します
+
は OR のように動作します
したがって
A ならば B、さもなくば C
は次と同値です:
A*B + not(A)*C
C のコードでは、1引数および2引数関数の一覧を広げることができ、 解読される定数を定義することができるので、それらを式で利用することが できます。
評価器はまた International System number postfix を解読します。 ’i’ が postfix の直後に追加されると、10の累乗の代わりに2の累乗が 用いられます。’B’ postfix によって8倍になり、他の postfix の直後 または単独で利用できます。これによって例えば ’KB’、’MiB’、’G’ および ’B’ が postfix として許されます。
以下は利用できる International System postfix の一覧で、 10の累乗および2の累乗に対応する表示をともないます。
-24 / -80
-21 / -70
-18 / -60
-15 / -50
-12 / -40
-9 / -30
-6 / -20
-3 / -10
-2
-1
2
3 / 10
3 / 10
6 / 20
9 / 30
12 / 40
15 / 40
18 / 50
21 / 60
24 / 70
エンコーダーは、 Libav 上でマルチメディアストリームをエンコードするための 構成された要素です。
Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての
ネイティブのエンコーダーが有効になっています。外部のライブラリを要するエンコーダー
は対応する --enable-lib
オプションによって手動で有効にしなければなりません。
configure オプション --list-encoders
を使うと、全ての利用可能なエンコーダーが
リストアップされます。
configure オプション --disable-encoders
を使えば全てのエンコーダーを
無効にすることができ、--enable-encoder=ENCODER
/
--disable-encoder=ENCODER
で特定のエンコーダーを選択して有効/
無効にできます。
ff* ツールのオプション -codecs
は有効になっているエンコーダー
のリストを表示します。
以下は現在利用可能なエンコーダーのうちのいくつかの説明です。
AC-3 音声エンコーダー。
これらエンコーダーは ATSC A/52:2010 および ETSI TS 102 366 の一部と、 (dnet として知られている)文書化されていない RealAudio 3 を実装しています。
ac3 エンコーダーは浮動小数点数の演算を用いており、ac3_fixed
エンコーダーは固定長整数演算のみを用いています。これはどちらかがいつも
速いという意味ではなく、単に特定のシステムにはどちらかがより適しているかも
しれないという意味があります。浮動小数点数エンコーダーは一般には、
与えられたビットレートに対してより品質の良い音声を生成します。ac3_fixed
エンコーダーはどの出力フォーマットについても既定のコーデックではなく、
そのため使うにはオプション -acodec ac3_fixed
を明示的に使って
指定されなければなりません。
AC-3 メタデータオプションは音声を表現するパラメータを設定するために 用いられ、ほとんどの場合音声エンコーディングそのものには影響を与えません。 いくつかのオプションが結果として出てくるビットストリームのデコーディング および再生に影響を与える一方、その他は単に通知目的のものです。少数の オプションは出力ストリームにビットを加え、それらは場合によっては 音声データとして用いられます。このため出力の品質に影響します。これらは 以下のオプションリストで注記によって示されています。
これらのパラメータはいろいろな公開されて利用可能な文書で詳細に記述されて います。
フレームごとのメタデータを許可します。各フレームについてメタデータが 変わったかどうか確認するべきかどうかを指定します。
初期化時に設定されたメタデータの値がストリーム内の全てのフレームに対して 用いられます(既定値)
各フレームをエンコーディングする前にメタデータの値が変わります。
Center Mix Level. The amount of gain the decoder should apply to the center channel when downmixing to stereo. This field will only be written to the bitstream if a center channel is present. The value is specified as a scale factor. There are 3 valid values:
Apply -3dB gain
Apply -4.5dB gain (default)
Apply -6dB gain
Surround Mix Level. The amount of gain the decoder should apply to the surround channel(s) when downmixing to stereo. This field will only be written to the bitstream if one or more surround channels are present. The value is specified as a scale factor. There are 3 valid values:
Apply -3dB gain
Apply -6dB gain (default)
Silence Surround Channel(s)
Audio Production Information is optional information describing the mixing environment. Either none or both of the fields are written to the bitstream.
Mixing Level. Specifies peak sound pressure level (SPL) in the production
environment when the mix was mastered. Valid values are 80 to 111, or -1 for
unknown or not indicated. The default value is -1, but that value cannot be
used if the Audio Production Information is written to the bitstream. Therefore,
if the room_type
option is not the default value, the mixing_level
option must not be -1.
Room Type. Describes the equalization used during the final mixing session at
the studio or on the dubbing stage. A large room is a dubbing stage with the
industry standard X-curve equalization; a small room has flat equalization.
This field will not be written to the bitstream if both the mixing_level
option and the room_type
option have the default values.
Not Indicated (default)
Large Room
Small Room
Copyright Indicator. Specifies whether a copyright exists for this audio.
No Copyright Exists (default)
Copyright Exists
Dialogue Normalization. Indicates how far the average dialogue level of the program is below digital 100% full scale (0 dBFS). This parameter determines a level shift during audio reproduction that sets the average volume of the dialogue to a preset level. The goal is to match volume level between program sources. A value of -31dB will result in no volume level change, relative to the source volume, during audio reproduction. Valid values are whole numbers in the range -31 to -1, with -31 being the default.
Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround (Pro Logic). This field will only be written to the bitstream if the audio stream is stereo. Using this option does NOT mean the encoder will actually apply Dolby Surround processing.
Not Indicated (default)
Not Dolby Surround Encoded
Dolby Surround Encoded
Original Bit Stream Indicator. Specifies whether this audio is from the original source and not a copy.
Not Original Source
Original Source (default)
The extended bitstream options are part of the Alternate Bit Stream Syntax as
specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
If any one parameter in a group is specified, all values in that group will be
written to the bitstream. Default values are used for those that are written
but have not been specified. If the mixing levels are written, the decoder
will use these values instead of the ones specified in the center_mixlev
and surround_mixlev
options if it supports the Alternate Bit Stream
Syntax.
Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt (Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
Not Indicated (default)
Lt/Rt Downmix Preferred
Lo/Ro Downmix Preferred
Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the center channel when downmixing to stereo in Lt/Rt mode.
Apply +3dB gain
Apply +1.5dB gain
Apply 0dB gain
Apply -1.5dB gain
Apply -3.0dB gain
Apply -4.5dB gain (default)
Apply -6.0dB gain
Silence Center Channel
Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the surround channel(s) when downmixing to stereo in Lt/Rt mode.
Apply -1.5dB gain
Apply -3.0dB gain
Apply -4.5dB gain
Apply -6.0dB gain (default)
Silence Surround Channel(s)
Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the center channel when downmixing to stereo in Lo/Ro mode.
Apply +3dB gain
Apply +1.5dB gain
Apply 0dB gain
Apply -1.5dB gain
Apply -3.0dB gain
Apply -4.5dB gain (default)
Apply -6.0dB gain
Silence Center Channel
Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the surround channel(s) when downmixing to stereo in Lo/Ro mode.
Apply -1.5dB gain
Apply -3.0dB gain
Apply -4.5dB gain
Apply -6.0dB gain (default)
Silence Surround Channel(s)
Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX (7.1 matrixed to 5.1). Using this option does NOT mean the encoder will actually apply Dolby Surround EX processing.
Not Indicated (default)
Dolby Surround EX Off
Dolby Surround EX On
Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone encoding (multi-channel matrixed to 2.0 for use with headphones). Using this option does NOT mean the encoder will actually apply Dolby Headphone processing.
Not Indicated (default)
Dolby Headphone Off
Dolby Headphone On
A/D Converter Type. Indicates whether the audio has passed through HDCD A/D conversion.
Standard A/D Converter (default)
HDCD A/D Converter
ステレオ再行列化。ステレオ入力のための再行列化を有効/無効にします。 これは、mid/side として左/右チャンネルを選択的にエンコードする ことによって品質を高めるという省略可能な AC-3 の機能です。 既定ではこのオプションは有効になっており、テスト目的のためを除いて 有効のままにしておくことを強く奨めます。
These options are only valid for the floating-point encoder and do not exist for the fixed-point encoder due to the corresponding features not being implemented in fixed-point.
Enables/Disables use of channel coupling, which is an optional AC-3 feature that increases quality by combining high frequency information from multiple channels into a single channel. The per-channel high frequency information is sent with less accuracy in both the frequency and time domains. This allows more bits to be used for lower frequencies while preserving enough information to reconstruct the high frequencies. This option is enabled by default for the floating-point encoder and should generally be left as enabled except for testing purposes or to increase encoding speed.
Selected by Encoder (default)
Disable Channel Coupling
Enable Channel Coupling
Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a value higher than the bandwidth is used, it will be reduced to 1 less than the coupling end band. If auto is used, the start band will be determined by the encoder based on the bit rate, sample rate, and channel layout. This option has no effect if channel coupling is disabled.
Selected by Encoder (default)
デミュクサーは特定の種類のファイルからマルチメディアストリームを 読むことを可能にする Libav での構成される要素です。
Libav のビルドを構成する際、既定では全ての対応されるデミュクサーが 有効になります。全ての利用可能なデミュクサーを configure オプション "–list-demuxers" を使って一覧できます。
configure オプション "–disable-demuxers" を使って全てのデミュクサーを 無効にできます。そしてオプション "–enable-demuxer=DEMUXER" で 1つのデミュクサーを選択的に有効にでき、オプション "–disable-demuxer=DEMUXER" で1つのデミュクサーを選択的に無効にできます。
ff* ツールの "-formats" オプションは有効になっているデミュクサーの 一覧を表示します。
現在利用可能なデミュクサーのいくつかの説明は以下の通りです。
画像ファイルデミュクサー。
このデミュクサーはパターンで指定された画像ファイルのリストを読みます。
パターンは文字列 "%d" または "%0Nd" を含めることができ、 これがこのパターンにマッチする各ファイル名の連番を表す文字の位置を 指定します。"%d0Nd" という形が使われた場合、各ファイル名の 番号を表す文字列は0で埋められており、N は番号を表す0で埋められた 桁の総数です。リテラル文字 ’%’ は文字列 "%%" を含むパターンで指定 されます。
このパターンが "%d" または "%0Nd" を含む場合、このパターンによって 指定されたファイル列の最初のファイル名は0から4までの間の番号を含まなければ ならず、後に続く全ての番号は連番でなければなりません。 この制限は取り払われる見込みです。
このパターンにはファイルに含まれる画像の形式によって自動的に決まる 接尾辞を含んでもよいです。
例えばパターン "img-%03d.bmp" は ‘img-001.bmp’, ‘img-002.bmp’, ..., ‘img-010.bmp’, などの形をしたファイル名の列にマッチします; パターン "i%%m%%g-%d.jpg" は ‘i%m%g-1.jpg’, ‘i%m%g-2.jpg’, ..., ‘i%m%g-10.jpg’, などの形をしたファイル名の列にマッチします。
各画像のサイズ、ピクセル形式、および形式は列にある全てのファイルで 同じでなければなりません。
次の例は、秒間10フレームの入力フレームレートとして、ファイル列 ‘img-001.jpeg’, ‘img-002.jpeg’, ..., の画像から映像を作るための ‘avconv’ の使い方です:
avconv -i 'img-%03d.jpeg' -r 10 out.mkv
このパターンは "%d" または "%0Nd" を含む必要はないことに 注意してください。例えば単一の画像ファイル ‘img.jpeg’ を 変換するために次のコマンドが使えます:
avconv -i img.jpeg img.png
Apple HTTP Live Streaming デミュクサー。
このデミュクサーは全ての種類のストリームから全ての AVStreams を取り出します。 id フィールドはそのビットレートに応じたインデックス番号に設定されます。 AVStreams の discard フラグを設定する(avplay では ’a’ または ’v’ を押す) ことによって、呼び出し側が実際に受け取るストリームの種類を決定できます。 ストリームが属する種類の全体のビットレートは "variant_bitrate" と名付け られているメタデータキーで取れます。
ミュクサーはマルチメディアストリームを特定の種類のファイルに 書き出すことを可能にする Libav での構成される要素です。
Libav のビルドを構成する際、既定ではサポートしているミュクサーが全て
有効になります。全ての利用可能なミュクサーを configure オプション
--list-muxers
を使って一覧できます。
configure オプション --disable-muxers
を使って全てのミュクサーを
無効にできます。そしてオプション --enable-muxer=MUXER
/
--disable-muxer=MUXER
で1つのミュクサーを選択的に有効 /
無効にできます。
ff* ツールの -formats
オプションは有効になっているミュクサーの
一覧を表示します。
現在利用可能なミュクサーのいくつかの説明は以下の通りです。
CRC (Cyclic Redundancy Check) 検査形式。
このミュクサーは全ての入力音声および映像フレームの Adler-32 CRC を計算し表示します。既定では、CRC を計算する前に音声フレームは 符号付き16ビット raw audio に変換され、映像フレームは raw video に変換されます。
ミュクサーの出力は次の形をした単一の行からなります: CRC=0xCRC、ただし CRC は全てのデコードされた入力フレーム についての CRC を含む8桁になるように0埋めされた16進数です。
入力の CRC を計算し、それをファイル ‘out.crc’ に保存する 例として:
avconv -i INPUT -f crc out.crc
次のコマンドで CRC を標準出力に書き出すことができます:
avconv -i INPUT -f crc -
avconv
では、音声および映像コーデックおよび形式を指定することで
各フレームに対する出力形式を選択できます。PCM unsigned 8-bit に変換された
入力音声および MPEG-2 video に変換された入力映像の CRC を計算する 例として、
次のコマンドを使ってください:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
framecrc ミュクサーも参照してください。
フレームごとの CRC (Cyclic Redundancy Check) 検査形式。
このミュクサーは各デコードされた音声および映像フレームに対する Adler-32 CRC を計算し表示します。既定では、CRC を計算する前に 音声フレームは符号付き16ビット raw audio に変換され、映像フレームは raw video に変換されます。
ミュクサーの出力は各音声および映像フレームにつき1行からなります: stream_index, frame_dts, frame_size, 0xCRC、 ただし CRC はデコードされたフレームの CRC を含む0埋めされた 8桁の16進数です。
入力のデコードされた各フレームの CRC を計算し、それをファイル ‘out.crc’ に保存する例として:
avconv -i INPUT -f framecrc out.crc
次のコマンドで各デコードされたフレームの CRC を標準出力に書き出せます:
avconv -i INPUT -f framecrc -
avconv
では、音声および映像コーデックおよび形式を指定することで
各フレームに対する出力形式を選択できます。PCM unsigned 8-bit に変換された
デコードされた入力音声フレームおよび MPEG-2 video に変換されたデコードされた
入力映像フレームの CRC を計算するためには、次のコマンドを使ってください:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
crc ミュクサーも参照してください。
画像ファイルのミュクサー。
このミュクサーは映像フレームを画像ファイルに書き出します。
出力ファイル名はパターンによって指定されます。このパターンは 順番に番号が振られているファイルの並びを生成するために使えます。 パターンは文字列 "%d" または "%0Nd" を含めることができ、 これがこのパターンにマッチする各ファイル名の連番を表す文字の位置を 指定します。"%0Nd" という形が使われた場合、各ファイル名の 番号を表す文字列は0で埋められており、N は番号を表す0で埋められた 桁の総数です。リテラル文字 ’%’ は文字列 "%%" を含むパターンで指定 されます。
このパターンが "%d" または "%0Nd" を含む場合、このパターンによって 指定されたファイル列の最初のファイル名は1を含み、あとに続く全ての番号は 連続していることになります。
このパターンにはファイルに含まれる画像の形式によって自動的に決まる 接尾辞を含んでもよいです。
例えばパターン "img-%03d.bmp" は ‘img-001.bmp’, ‘img-002.bmp’, ..., ‘img-010.bmp’, などの形をしたファイル名の列にマッチします。 パターン "img%%-%d.jpg" は ‘img%-1.jpg’, ‘img%-2.jpg’, ..., ‘img%-10.jpg’, などの形をしたファイル名の列にマッチします。
次の例は入力映像から各秒につき1つの画像を取得し
ファイルの列 ‘img-001.jpeg’, ‘img-002.jpeg’, ...を
を作るための avconv
の使い方を示します;
avconv -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
avconv
では、-f
オプションで形式が指定されておらず、
かわりに出力ファイル名が画像ファイル形式を指定している場合は、
image2 ミュクサーが自動的に選択されることにに注意してください。
ですので上のコマンドは次のように書けます:
avconv -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
また、パターンは "%d" または "%0Nd" を含んでいなくてもよく、 例えば入力映像から単一の画像ファイル ‘img.jpeg’ を作成するには 次のコマンドが使えます:
avconv -i in.avi -f image2 -frames:v 1 img.jpeg
mov/mp4/ismv ミュクサーはフラグメンテーションをサポートします。通常、
MOV/MP4 ファイルは1つのロケーションに保存されている全てのパケットに
ついてのあらゆるメタデータを持っています(ファイルの末尾に書かれており、
より良い再生のために qt-faststart
ツールを使って先頭に動か
せます)。フラグメント化したファイルは多くのフラグメントからなり、
パケットとこれらのパケットについてのメタデータは一緒に保存されます。
フラグメント化されたファイルを書き出すと、書き出しが割り込まれたとして
もデコードできる(通常の MOV/MP4 ファイルでは適切に終了しないとデコード
できません)上、とても長いファイルを書き出すときにより少ないメモリしか
要さない(なぜなら通常の MOV/MP4 ファイルでは、ファイルを閉じるまでに
メモリ上で1つ1つのパケットについての情報を保存するからです)という
利点があります。欠点は他のアプリケーションとの互換性がより低い点です。
フラグメンテーションは、どのようにファイルをフラグメントに分けるかを 定義した AVOptions の1つを設定することで有効になります。
各映像キーフレームで新しいフラグメントを開始する
durationマイクロ秒の長さのフラグメントを作成する
sizeバイトまでのペイロードデータを含むフラグメントを作成する
いつフラグメントに分けるかをマニュアルで選択する caller を許可する、
av_write_frame(ctx, NULL)
を呼ぶことでそれまでに書き出された
パケットとともにフラグメントを出力する。(これは avconv
からではなく、libavformat と統合された他のアプリケーションでのみ
有用)
durationマイクロ秒より短い時間のフラグメントを作成しない。
複数の条件を指定した場合、指定された条件のうちの1つが満たされたときに
フラグメントが切り出されます。これについての例外は
-min_frag_duration
で、その他の適用条件が満たされていなければ
なりません。
加えて、出力ファイルを書き出すやり方はその他の少数のオプションを 通じて調節できます:
サンプルの記述することなしに、先頭の moov アトムを直接ファイルの 最初に書き出す。一般に、通常の MOV/MP4 ファイルとして、mdat/moov ペアはファイルの最初に書き出され、ファイルのごく一部のみを占める。 このオプションを設定した場合、先頭の mdat アトムはなくなり、moov アトムはトラックだけを記述しその持続時間は0となる。
このオプションを設定して書き出したファイルは QuickTime では動作しない。 ismv (Smooth Streaming) ファイルを書き出す際、このオプションが暗黙に設定される。
各トラックごとに別々の moof (movie fragment)アトムを書き出す。通常、 全てのトラックについてのパケットが1つの moof アトムに書き出される(これは若干 効率的になる)が、このオプションが設定されると、ミュクサーは各トラックについて 1つの moof/mdat ペアを書き出し、トラックを分離しやすくする。
ismv (Smooth Streaming)ファイルを書き出す際、このオプションが暗黙に設定される。
このミュクサーで、IIS 上のパブリッシングポイントに Smooth Streaming コンテントを 実時間でプッシュすることができます。例:
avconv -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
MPEG トランスポートストリームミュクサー。
このミュクサーは ISO 13818-1 と ETSI EN 300 468 の一部を実装しています。
このミュクサーのオプションは以下のとおりです:
original_network_id を設定します(既定では 0x0001)。 これは DVB でのネットワークの一意な識別子です。主な利用法は パス Original_Network_ID, Transport_Stream_ID を通じたサービスの 一意な識別にあります。
transport_stream_id を設定します(既定では 0x0001)。これは DVB での transponder を識別します。
DVB での program として知られている service_id を設定します(既定では 0x0001)。
PMT のための最初の PID を設定します(既定では 0x1000, 最大で 0x1f00)。
データパケットのための最初の PID を設定します(既定では 0x0100, 最大で 0x0f00)。
mpegts ミュクサーで認識できるメタデータの設定は service_provider
と service_name
です。これらが設定されていなければ、
service_provider
の既定値は "Libav" であり、
service_name
の既定値は "Service01" です。
avconv -i file.mpg -c copy \ -mpegts_original_network_id 0x1122 \ -mpegts_transport_stream_id 0x3344 \ -mpegts_service_id 0x5566 \ -mpegts_pmt_start_pid 0x1500 \ -mpegts_start_pid 0x150 \ -metadata service_provider="Some provider" \ -metadata service_name="Some Channel" \ -y out.ts
Null ミュクサー。
このミュクサーは出力ファイルを全く生成しません。主にテストや ベンチマークの目的で有用です。
例えば、avconv
でのデコーディングのベンチマークを取るには、
次のコマンドが使えます:
avconv -benchmark -i INPUT -f null out.null
上のコマンドは ‘out.null’ ファイルを読み書きしませんが、
しかし avconv
の構文で必要とされている出力ファイルを指定している
ことに注意してください。
あるいはこのコマンドを次のようなに書くこともできます:
avconv -benchmark -i INPUT -f null -
Matroska コンテナーミュクサー。
このミュクサーは matroska および webm コンテナー仕様を実装しています。
このミュクサーが理解できるメタデータ設定は以下のものです:
シングルトラックに与える名前
Matroska 言語フォームでトラックの言語を指定します
シングル映像トラックでの2つのビューのステレオ 3D レイアウト
映像はステレオでない
Both views are arranged side by side, Left-eye view is on the left
Both views are arranged in top-bottom orientation, Left-eye view is at bottom
Both views are arranged in top-bottom orientation, Left-eye view is on top
Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
Each view is constituted by a row based interleaving, Right-eye view is first row
Each view is constituted by a row based interleaving, Left-eye view is first row
Both views are arranged in a column based interleaving manner, Right-eye view is first column
Both views are arranged in a column based interleaving manner, Left-eye view is first column
All frames are in anaglyph format viewable through red-cyan filters
Both views are arranged side by side, Right-eye view is on the left
All frames are in anaglyph format viewable through green-magenta filters
Both eyes laced in one Block, Left-eye view is first
Both eyes laced in one Block, Right-eye view is first
例えば、以下のコマンドラインを使って 3D WebM クリップを作成できます:
avconv -i sample_left_right_clip.mpg -an -c:v libvpx -metadata STEREO_MODE=left_right -y stereo_clip.webm
基本的なストリームセグメンター。
セグメンターミュクサーはほぼ固定の期間にいくつかの分かれたファイルにストリームを 出力します。出力ファイルのパターンは image2 と同様のやり方で設定すること ができます。
各セグメントは、映像ストリームがあれば、映像のキーフレームから始まります。 このセグメントミュクサーは単一の定数フレームレートの映像で一番うまく働きます。
オプションで、作成されたセグメントの箇条書きリスト(セグメントごとに1行)を 生成することができます。
内部のコンテナフォーマットを上書きします、既定ではファイル名の拡張子から 推測されます。
セグメントの期間を t 秒間と設定します。
name という名前でリストファイルを生成します。
size 個のエントリーに逹したらリストファイルを上書きします。
limit に達したらセグメントインデックスを折り返します。
avconv -i in.mkv -c copy -map 0 -f segment -list out.list out%03d.nut
MP3 ミュクサーは先頭に ID3v2 ヘッダーをつけて(そしてオプションで ID3v1 タグを末尾
につけて)生の MP3 ストリームを書き出します。IDv2.3 と ID3v2.4 に対応しており、
id3v2_version
オプションでどちらを使うのか制御します。レガシーの ID3v1
タグは既定では書き出されませんが、write_id3v1
オプションで有効にできます。
シーク可能な出力のために、このミュクサーは Xing フレームも先頭に書き出します。 これはファイル内のフレームの数を含みます。これは VBR ファイルの時間幅を計算する ために便利です。
このミュクサーは画像(APIC フレーム)を添付した ID3v2 を書き出すことに対応しています。 この画像は単一のパケットをもつ映像ストリームの形でミュクサーに渡されます。そういった ストリームはいくらあってもよく、それぞれ単一の APIC フレームに対応します。 ストリームメタデータタグである title と comment は APIC での description と picture type にそれぞれ対応づけられます。許されている 画像の種類については http://id3.org/id3v2.4.0-frames を見てください。
これらの APIC フレームは先頭に書き出されなくてはならず、ミュクサーがこれらの画像 全てを取得するまで音声フレームをバッファすることに注意してください。したがって、 過度のバッファリングを避けるために可能な限り早めに画像を提供するようにしてください。
例:
ID3v2.3 ヘッダーと ID3v1 フッターをつけて mp3 を書き出す:
avconv -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
mp3 に画像を添付する:
avconv -i input.mp3 -i cover.png -c copy -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
入力デバイスは、Libav 上でシステムに取り付けられたマルチメディアデバイスから やって来るデータにアクセスすることを許す構成された要素です。
Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての 入力デバイスが有効になっています。configure オプション "–list-indevs" を使うと 全ての利用可能な入力デバイスがリストアップされます。
configure オプション "–disable-indevs" を使えば全ての入力デバイスを無効にする ことができ、 "–enable-indev=INDEV" で特定の入力デバイスを選択して有効にでき、 または "–disable-indev=INDEV" で特定の入力デバイスを無効にできます。
ff* ツールのオプション "-formats" は(demuxer と一緒に)サポートされている入力デバイス のリストを表示します。
現在利用可能な入力デバイスの説明は以下の通りです。
ALSA (Advanced Linux Sound Architecture) 入力デバイス。
configure でこの入力デバイスを有効にするには、システムに libasound がインストールされて いる必要があります。
このデバイスによって ALSA デバイスからキャプチャすることができます。キャプチャする デバイスの名前は ALSA カード識別子でなくてはなりません。
ALSA 識別は次の構文をもちます:
hw:CARD[,DEV[,SUBDEV]]
ただし DEV と SUBDEV という成分は省略できます。
この3つの引数(順に: CARD,DEV,SUBDEV)は カード番号もしくは識別子、デバイス番号、そしてサブデバイス番号を 特定します。(-1 はいずれかを意味します)。
現時点でシステムによって認識されるカードのリストを見るには、ファイル ‘/proc/asound/cards’ および ‘/proc/asound/devices’ を確認してください。
例えば avconv
によってある card id 0 の ALSA デバイスから
キャプチャするためには、次のコマンドを実行します:
avconv -f alsa -i hw:0 alsaout.wav
さらなる情報については、次を見てください: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
BSD 映像入力デバイス。
Linux DV 1394 入力デバイス。
Linux フレームバッファ入力デバイス。
Linux フレームバッファはコンピュータモニター上に、典型的にはコンソール上に グラフィックスを表示するためのハードウェアに依存しないグラフィック抽象 レイヤーです。フレームバッファはファイルデバイスノードを通じてアクセス され、たいていの場合は ‘/dev/fb0’ です。
より詳細な情報については、Linux ソースツリー内に含まれるファイル Documentation/fb/framebuffer.txt を読んでください。
avconv
でフレームバッファデバイス ‘/dev/fb0’ から記録する
には:
avconv -f fbdev -r 10 -i /dev/fb0 out.avi
以下のコマンドで単一のスクリーンショットイメージを撮ることができます:
avconv -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
http://linux-fbdev.sourceforge.net/ および fbset(1) も参照してください。
JACK 入力デバイス。
configure でこの入力デバイスを有効にするには、システムに libjack がインストールされて いる必要があります。
JACK 入力デバイスは1つまたはそれ以上の JACK 書き込み可能クライアントを 各音声チャンネルごとに1つ、client_name:input_N という名前で 作成します。ただし client_name はアプリケーションによって提供される 名前で、N はそのチャンネルを識別する番号です。 各書き込み可能なクライアントは Libav 入力デバイスに対して取得したデータ を送信します。
一旦1つまたはそれ以上の JACK 読み取り可能クライアントを作成すると、 1つまたはそれ以上の JACK 書き込み可能クライアントにそれらを接続する必要 があります。
JACK クライアントに接続をつないだり切ったりするためには、 ‘jack_connect’ や ‘jack_disconnect’ プログラムが使えます。 または、例えば ‘qjackctl’ のようなグラフィカルインターフェイスを 通じて行えます。
JACK クライアントやそのプロパティをリストアップするには、コマンド ‘jack_lsp’ を実行します。
以下は avconv
で JACK 読み取り可能クライアントをキャプチャする
やり方を示す例です。
# "libav" という名前のついた JACK 書き込み可能クライアントを作成します。 $ avconv -f jack -i libav -y out.wav # サンプルの jack_metro 読み取りクライアントを開始します。 $ jack_metro -b 120 -d 0.2 -f 4000 # 現在の JACK クライアントをリストアップします。 $ jack_lsp -c system:capture_1 system:capture_2 system:playback_1 system:playback_2 libav:input_1 metro:120_bpm # avconv 書き込み可能クライアントに metro を接続します。 $ jack_connect metro:120_bpm libav:input_1
さらなる情報については、次を読んでください: http://jackaudio.org/
IIDC1394 入力デバイス、libdc1394 および libraw1394 に基づいています。
Open Sound System 入力デバイス。
入力デバイスに充てられるファイル名はその OSS 入力 を表すデバイスノードで、 それはたいていの場合 ‘/dev/dsp’ になります。
例えば avconv
から ‘/dev/dsp’ をグラブするためには、
次のコマンドを使います。
avconv -f oss -i /dev/dsp /tmp/oss.wav
OSS についてのさらなる情報には、次を見てください: http://manuals.opensound.com/usersguide/dsp.html
pulseaudio 入力デバイス。
configure 時にこの入力デバイスを有効にするには、libpulse-simple が システムにインストールされている必要があります。
入力デバイスに与えられるファイル名はソースのデバイス、もしくは文字列 "default" です。
pulse ソースデバイスとそのプロパティを一覧するには、コマンド ‘pactl list sources’ を呼び出すことで可能です。
avconv -f pulse -i default /tmp/pulse.wav
構文は以下のとおりです:
-server server name
特定のサーバーに接続します。
構文は以下のとおりです:
-name application name
アクティブなクライアントを表示するのに pulse が利用するアプリケーションの名前を 指定します、既定では "libav" です
構文は以下のとおりです:
-stream_name stream name
アクティブなストリームを表示するときに pulse が利用するストリームの名前を 指定します、既定では "record" です
構文は以下のとおりです:
-sample_rate samplerate
サンプルレートを Hz で指定します、既定では 48kHz が用いられます
構文は以下のとおりです:
-channels N
利用するチャンネルを指定します、既定では 2 (ステレオ)が設定されます
構文は以下のとおりです:
-frame_size bytes
フレームごとのバイト数を指定します、既定では1024です。
構文は以下のとおりです:
-fragment_size bytes
pulseaudio で最小のバッファリングフラグメントを指定します、音声のレイテンシに 影響します。既定では設定されません。
sndio 入力デバイス。
この入力デバイスを configure を通じて有効にするには、システムに libsndio がインストールされていなければなりません。
入力デバイスに与えるファイル名は sndio 入力デバイスを表すデバイス ノードであり、たいていの場合 ‘/dev/audio0’ に設定されます。
例えば、avconv
を使って ‘/dev/audio0’ からグラブするには
次のコマンドを使ってください:
avconv -f sndio -i /dev/audio0 /tmp/oss.wav
Video4Linux2 入力映像デバイス。
グラブするデバイスの名前はファイルデバイスノードです。たいていの Linux システムは、デバイス(例えば USB ウェブカム)をシステムに差し込んだ際、 そういったノードを自動的に作成するようになっています。そして ‘/dev/videoN’ のような名前を持ちます。ただし N は そのデバイスに結びつけられた番号です。
Video4Linux2 デバイスは限られた種類の widthxheight サイズと
フレームレートのみに対応しています。いずれに対応しているかを確認するために、
Video4Linux2 デバイスならコマンド -list_formats all
が使えます。
avconv および avplay で video4linux2 デバイスを使う例をいくつか:
# video4linux2 デバイスの入力をグラブし表示します。 avplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 # Video4linux2 デバイスの入力をグラブし録画します。 # フレームレートとサイズは以前設定されているままにします。 avconv -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
VfW (Video For Windows) キャプチャ入力デバイス。
入力として渡すファイル名はキャプチャドライバー番号で、0から9の範囲です。 ドライバーの一覧を表示するために "list" をファイル名に使えます。 それ以外のファイル名はデバイス番号0として解釈されます。
X11 映像入力デバイス。
このデバイスで X11 ディスプレイの領域をキャプチャすることができます。
入力として渡すファイル名は次の構文を持ちます:
[hostname]:display_number.screen_number[+x_offset,y_offset]
hostname:display_number.screen_number でグラブする
スクリーンlの X11 ディスプレイ名を指定します。hostname は省略
されてもよく、既定では "localhost" です。環境変数 DISPLAY
が既定のディスプレイ名を含みます。
x_offset および y_offset でグラブされる領域の X11 スクリーン イメージの左上端からオフセットを指定します。これらは既定では0です。
さらなる細かい情報については X11 ドキュメンテーション(例えば man X)を 参照してください。
X11 ディスプレイのプロパティについての基本情報(例えば "name" または "dimensions" を grep する)を得るためには、‘dpyinfo’ プログラムを使ってください。
例えば avconv
を使って ‘:0.0’ からグラブするには
avconv -f x11grab -r 25 -s cif -i :0.0 out.mpg # 位置 10,20 でグラブします。 avconv -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
構文は以下のとおり:
-follow_mouse centered|PIXELS
"centered" とともに指定された場合には、捕捉領域はマウスポインターに追随し、 ポインターが領域の中央になるよう維持されます。さもなくば、領域の端に対して PIXELS (0より大きい)以内にマウスポインターが近付いたときだけこの領域は 追随します。
例えば:
avconv -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg # 端に対して100ピクセル以内にマウスポインター近付いたときだけ追随します avconv -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
構文は以下のとおり:
-show_region 1
show_region AVOption が 1 と指定された場合、捕捉領域は スクリーンで指示される。このオプションによって、スクリーンの一部だけを 捕捉するときに捕捉するべきものを知るのが簡単になります。
例えば:
avconv -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg # follow_mouse とともに avconv -f x11grab -follow_mouse centered -show_region 1 -r 25 -s cif -i :0.0 out.mpg
出力デバイスは、Libav 上でシステムに取り付けられた出力デバイスへ マルチメディアデータを書き出すことを許す構成された要素です。
Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての 出力デバイスが有効になっています。configure オプション "–list-outdevs" を使うと 全ての利用可能な出力デバイスがリストアップされます。
configure オプション "–disable-outdevs" を使えば全ての出力デバイスを無効にする ことができ、 "–enable-outdev=OUTDEV" で特定の出力デバイスを選択して有効にでき、 または "–disable-outdev=OUTDEV" で特定の出力デバイスを無効にできます。
ff* ツールのオプション "-formats" は(muxer と一緒に)サポートされている出力デバイス のリストを表示します。
現在利用可能な出力デバイスの説明は以下の通りです。
ALSA (Advanced Linux Sound Architecture) 出力デバイス。
OSS (Open Sound System) 出力デバイス。
sndio 音声出力デバイス。
プロトコルは、特定のプロトコルを使用するために必要になるリソースへの アクセスを可能にする Libav 上の構成される要素です。
Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての プロトコルが有効になっています。configure オプション "–list-protocols" を使うと 全ての利用可能なプロトコルがリストアップされます。
configure オプション "–disable-protocols" を使えば全てのプロトコルを無効にする ことができ、 "–enable-protocol=PROTOCOL" で特定のプロトコルを選択して有効にでき、 または "–disable-protocol=PROTOCOL" で特定のプロトコルを無効にできます。
ff* ツールのオプション "-protocols" はサポートされているプロトコル のリストを表示します。
現在利用可能なプロトコルの説明は以下の通りです。
物理的な連結プロトコル。
多くのリソースから順に、1つの独自のリソースであるかのように 読んだりシークしたりできます。
このプロトコルが受け取る URL は次の構文を持ちます:
concat:URL1|URL2|...|URLN
ただし URL1、URL2、...、URLN は連結されるリソースの URL で、それぞれは異なるプロトコルを指定していてもかまいません。
例えばファイル列 ‘split1.mpeg’、‘split2.mpeg’、‘split3.mpeg’
を avplay
で読むには、次のコマンドを使ってください:
avplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
多くのシェルで特別扱いされる文字 "|" をエスケープしなけばならないかもしれない ことに注意してください。
ファイルアクセスプロトコル。
1つのファイルから、または1つのファイルに向けて読むことができます。
例えば avconv
でファイル ‘input.mpeg’ から読むには、次のコマンドを
使ってください:
avconv -i file:input.mpeg output.mpeg
ff* ツールは既定ではこのファイルプロトコルを使います。 すなわち "FILE.mpeg" という名前で指定されたリソースは URL "file:FILE.mpeg" であるかのように解釈されます。
Gopher プロトコル。
Apple HTTP Live Streaming 準拠のセグメント化ストリームを一体として 読み込みます。セグメントを表す M3U8 プレイリストとしては、標準ファイル プロトコルによってアクセスされるリモートの HTTP リソースや ローカルファイルになります。 hls URI スキーム名の後に "+proto" のように指定することで、 入れ子のプロトコルを宣言します。ただし proto は "file" もしくは "http" です。
hls+http://host/path/to/remote/resource.m3u8 hls+file://path/to/local/resource.m3u8
このプロトコルの使用は控えてください - hls デミュクサーがきちんと 動作するはずで(そうでなければ、不具合報告してください)、より完全です。 代わりに hls デミュクサーを使うには、単に m3u8 ファイルへの URL を 直接使ってください。
HTTP (ハイパーテキストトランスファープロトコル)。
TCP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。
HTTP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。
要求される構文は:
mmsh://server[:port][/app][/playpath]
MD5 出力プロトコル。
書き出されるデータの MD5 ハッシュを計算し、クローズ時にそれを指示された 出力もしくは(指定されていなければ)標準出力に書き出します。実際のファイルに 書き出すことなく muxer をテストするために使えます。
いくつかの例を以下に挙げます。
# エンコードされる AVI ファイルの MD5 ハッシュをファイル output.avi.md5 に書き出します。 avconv -i input.flv -f avi -y md5:output.avi.md5 # エンコードされる AVI ファイルの MD5 ハッシュを標準出力に書き出します。 avconv -i input.flv -f avi -y md5:
フォーマットによっては(典型的には MOV)出力プロトコルがシーク可能である必要が あり、したがって MD5 出力プロトコルが一緒だと失敗することに注意してください。
UNIX パイプアクセスプロトコル。
UNIX パイプに書き出したり読み込んだりすることができます。
受け取る構文は:
pipe:[number]
number はパイプのファイル記述子に対応する番号 (例えば標準入力なら0、標準出力なら1、標準エラー出力なら2)です。 number が指定されていなければ、既定ではこのプロトコルが 書き出しに用いられるときには標準出力が利用され、このプロトコルが 読み込みに用いられるときには標準入力が利用されます。
例えば avconv
で標準入力から読むには:
cat test.wav | avconv -i pipe:0 # ...これは次と同じです... cat test.wav | avconv -i pipe:
avconv
で標準出力に書くには:
avconv -i test.wav -f avi pipe:1 | cat > test.avi # ...これは次と同じです... avconv -i test.wav -f avi pipe: | cat > test.avi
フォーマットによっては(典型的には MOV)出力プロトコルがシーク可能である必要が あり、したがってパイプ出力プロトコルが一緒だと失敗することに注意してください。
リアルタイムメッセージングプロトコル。
リアルタイムメッセージングプロトコル(RTMP)は TCP/IP ネットワーク越しの マルチメディアコンテントのストリーミングに用いられます。
必要となる構文は:
rtmp://server[:port][/app][/instance][/playpath]
受け取るパラメータは以下の通りです:
RTMP サーバーのアドレスです。
利用される TCP ポートの番号です(既定では1935です)。
アクセスするアプリケーションの名前です。たいていの場合 RTMP サーバー
にそのアプリケーションがインストールされているパスになります。
(例えば ‘/ondemand/’、‘/flash/live/’、など)。URI からパース
されたこの値を rtmp_app
オプションを通じて上書きすることも
できます。
app で指定されうアプリケーションから参照され再生される
リソースのパスまたは名前です。"mp4:"が先頭につくかもしれません。
URI からパースされたこの値を rtmp_playpath
オプションで
上書きすることもできます。
サーバーとして振舞い、やってくる接続を待ち受けます。
やってくる接続を待ち続ける時間の最大値です。listen となります。
加えて、以下のパラメーターがコマンドラインオプション(または AVOption
のコード)を通じて設定できます:
RTMP サーバーに接続するアプリケーションの名前。このオプションは URI で 指定されたパラメーターを上書きします。
クライアントのバッファ時間をミリ秒単位で設定します。既定値は3000です。
任意に追加する AMF 接続パラメーター。例えば B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0
のような文字列からパースされます。各値にはタイプを示す1文字が先頭につき、
ブール値は B、数値は N、文字列は S、オブジェクトは O、null は Z であり、
コロンがその後につきます。ブール値としてはデータは FALSE または TRUE を
表す0か1でなければなりません。同様にオブジェクトについてはその終了または
開始を表す0または1でなければなりません。サブオブジェクト内のデータ項目は
名前がついている場合があり、タイプ N が先頭につけてその値の前に名前を
指定します(つまり、NB:myFlag:1
のように)。このオプションは任意の
AMF シーケンスを構築するために複数回使えます。
SWF プレーヤーを実行するのに使われる Flash プラグインのバージョン。 既定では LNX 9,0,124,2 です。
同じリクエストに書き出されるパケットの数(RTMPT のみ)。既定値は 10です。
メディアがライブストリームであると指定します。ライブストリームではレジュームも
シークもできません。既定値は any
で、これはサブスクライバーはまず
プレイパスで指定されたライブストリームを再生しようとします。この名前のライブ
ストリームが見つからなければ、録画されたストリームを再生します。その他に
可能な値は live
または recorded
です。
メディアが埋め込まれているウェブページの URL です。既定ではいかなる値も送信 されません。
再生もしくは公開するためのストリーム識別子です。このオプションは URI で 指定されたパラメーターを上書きします。
サブスクライブするライブストリームの名前です。既定では何の値も送信されません。 このオプションが指定されたとき、もしくは rtmp_live が live に設定されたとき のみ送信されます。
圧縮の展開された SWF ファイルの SHA256(32バイト)。
圧縮の展開された SWF ファイルのサイズ、SWFVerification のために必要です。
メディアのための SWF プレーヤーの URL です。既定では何の値も送信されません。
プレーヤーの swf ファイルへの URL、ハッシュおよびサイズは自動的に計算します。
ターゲットのストリームの URL です。既定値は proto://host[:port]/app です。
例えば avplay
で RTMP サーバー "myserver" からアプリケーション "vod" で
"sample" という名前のマルチメディアリソースを読むには:
avplay rtmp://myserver/vod/sample
暗号化された Real-Time Messaging Protocol です。
暗号化された Real-Time Messaging Protocol (RTMPE)は、Diffie-Hellman 鍵交換 および HMACSHA256 からなる、RC4 鍵のペアを生成する標準の暗号基盤の範囲内で マルチメディアコンテントをストリーミングするために用いられます。
安全な SSL 接続経由の Real-Time Messaging Protocol です。
Real-Time Messaging Protocol (RTMPS) は暗号化された接続を通してマルチメディア コンテントをストリーミングするために用いられます。
HTTP 経由のトンネル Real-Time Messaging Protocol です。
HTTP 経由のトンネル Real-Time Messaging Protocol (RTMPT)は、ファイアウォールを 迂回するように HTTP リクエストの範囲でマルチメディアコンテントをストリーミング するためのものです。
HTTP 経由でトンネリングされた暗号化 Real-Time Messaging Protocol です。
HTTP 経由でトンネリングされた暗号化 Real-Time Messaging Protocol (RTMPTE) はファイアウォールを迂回するよう HTTP リクエストの範囲内でマルチメディアコンテント をストリーミングするために用いられます。
HTTPS 経由でトンネリングされた Real-Time Messaging Protocol です。
HTTPS 経由でトンネリングされた Real-Time Messaging Protocol (RTMPTS) はファイア ウォールを迂回するように HTTPS の範囲でマルチメディアコンテントをストリーミング するためのものです。
librtmp を通じてサポートされるリアルタイムメッセージングプロトコルとその バリエーションです。
構成(configure)の際に librtmp のヘッダとライブラリが存在しなければなりません。 "–enable-librtmp" で明示的にビルドを configure する必要があります。 有効にされるとネイティブの RTMP プロトコルは置き替えられます。
このプロトコルは、RTMP、HTTP トンネルによる RTMP (RTMPT)、暗号化 RTMP (RTMPE)、SSL/TLS オーバー RTMP (RTMPS)、そしてこれら暗号化タイプの トンネル版(RTMPTE、RTMPTS)をサポートするために必要ななるほとんどの クライアント機能と少数のサーバー機能を提供します。
必要となる構文は:
rtmp_proto://server[:port][/app][/playpath] options
ただし rtmp_proto は各 RTMP バリエーションに対応する文字列 "rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts" の1つで、 server、port、app および playpath は RTMP ネイティブプロトコルで指定されるものと同じ意味を持ちます。 options は空白で区切られた key=val の形のオプション のリストを含みます。
さらなる情報については librtmp のマニュアルページ(man 3 librtmp)を見てください。
例えば、avconv
を使ってリアルタイムに RTMP サーバーに向けてファイルをストリームするには:
avconv -re -i myfile -f flv rtmp://myserver/live/mystream
avplay
を使って同じストリーミングを行なうには:
avplay "rtmp://myserver/live/mystream live=1"
リアルタイムプロトコル。
RTSP は技術的には libavformat でのプロトコルハンドラではなく、demuxer であり かつ muxer です。この demuxer は通常の RTSP (RTP 越しにデータが転送される; これは例えば Apple や Microsoft で用いられています)も Real-RTSP (RDT 越しに データが転送される)もどちらにも対応しています。
muxer はストリームを RTSP ANNOUNCE を用いて、それに対応しているサーバー (現時点では Darwin Streaming Server と Mischa Spiegelmock の RTSP server) に向けて送信するために利用できます。
RTSP のために必要となる構文は:
rtsp://hostname[:port]/path
以下のオプションが(avconv
/avplay
のコマンドライン上で、あるいは
AVOption
または avformat_open_input
のコード内で設定するのに)
サポートされています:
rtsp_transport
のためのフラグ:
下位トランスポートプロトコルに UDP を使います。
下位トランスポートプロトコルに(RTSP コントロールチャンネル内で交互にした) TCP を使います。
下位トランスポートプロトコルに UDP マルチキャストを使います。
下位トランスポートプロトコルに http トンネリングを使います。これは 受動的なプロキシに対して便利です。
複数の下位トランスポートプロトコルを指定することが許されており、その場合
一度に1つだけ試されます(1つの設定に失敗したら、次のものが試されます)。
muxer については、tcp
と udp
のみがサポートされています。
rtsp_flags
のフラグ:
ネゴシエーションしたピアのアドレスとポートのみからパケットを受け取ります。
サーバーとして動作し、やってくる接続を待ち受けます。
UDP 越しにデータを受け取る際に、demuxer は受け取ったパケットを並べ直そうと
します(これらが順番になっていない、もしくは全体的にパケットが失われている
かもしれないからです)。AVFormatContext の max_delay
フィールドで
最大の遅延を0に設定することで、これを無効にできます。
avplay
でマルチビットレート Real-RTSP ストリームを観る際、
表示するストリームとして -vst
n および -ast
n で
映像と音声それぞれを選択できます。そして作動中に v
や a
を押すことで切り替えることが可能です。
コマンドラインの例:
UDP 越しのストリームを観る、並べ直しの最大遅延は0.5秒:
avplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
HTTP トンネル経由のストリームを観る:
avplay -rtsp_transport http rtsp://server/video.mp4
他人に観せるために、RTSP サーバーにストリームをリアルタイムで送信する:
avconv -re -i input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
リアルタイムでストリームを受け取るには:
avconv -rtsp_flags listen -i rtsp://ownaddress/live.sdp output
セッションアナウンスメントプロトコル(RFC 2974)。これは技術的には libavformat のプロトコルハンドラではなく、muxer および demuxer です。 分離されたポート上で定期的にストリームに対して SDP を通知することによって、 RTP ストリームのシグナリングのために使用されます。
muxer に渡される SAP url のための構文は次の通りです:
sap://destination[:port][?options]
RTP パケットはポート port の destination に対して送信され、
ポートが指定されていない場合にはポート 5004 に対して送信されます。
options は &
で区切られたリストです。以下のオプションを
サポートしています:
通知を送りつける送信先の IP アドレスを指定する。 省略されていれば、通知は共通して利用されている SAP アナウンスメント マルチキャストアドレス 224.2.127.254 (sap.mcast.net)に、もしくは destination が IPv6 アドレスならば ff0e::2:7ffe に送信される。
通知を送りつけるポートを指定する、指定されなければ 既定で 9875。
通知と RTP パケットのための time to live 値を指定する、 既定では 255。
1が設定されれば、全ての RTP ストリームを同じポート対で送る。0(既定) ならば、全てのストリームは独自のポートに送られ、各ストリームは先のものより 2つ数字の大きいポート番号になる。 VLC/Live555 では、ストリームを受け取れるように、これを1に設定することが求められる。 libavformat で受信するための RTP スタックは各ストリームが一意なポートで送られる 必要がある。
コマンドラインの例は以下の通り。
VLC で観るために、ローカルサブネットにストリームをブロードキャストするためには:
avconv -re -i input -f sap sap://224.0.0.255?same_port=1
同様に、avplay で観るには:
avconv -re -i input -f sap sap://224.0.0.255
そして IPv6 越しに avplay で観るには:
avconv -re -i input -f sap sap://[ff0e::1:2:3:4]
demuxer に与える SAP url のための構文は:
sap://[address][:port]
address は通知のために待ち受けるマルチキャストアドレスであり、 省略されれば、既定の 224.2.127.254 (sap.mcast.net)が用いられる。 port は待ち受けるポートであり、省略された場合9875である。
demuxer は与えられたアドレスとポートで通知を待ち受ける。 いったん通知を受け取るとすぐに、特定のストリームを受信しようとする。
コマンドラインの例は以下の通り。
通常の SAP マルチキャストアドレスで通知される最初のストリームを再生するには:
avplay sap://
既定の IPv6 SAP マルチキャストアドレスで通知される最初のストリームを再生するには:
avplay sap://[ff0e::2:7ffe]
トランスミッションコントロールプロトコル。
TCP url のために要求される構文は以下のとおり:
tcp://hostname:port[?options]
外から入ってくる接続を待ち受ける
avconv -i input -f format tcp://hostname:port?listen avplay tcp://hostname:port
ユーザーデータグラムプロトコル。
UDP url に要する構文は:
udp://hostname:port[?options]
options は & で区切られた key=val の形のオプションのリストを含む。 サポートされているオプションのリストは以下の通り:
UDP バッファサイズをバイト数で設定する
バインドするローカル UDP ポートを上書きする
ローカル IP アドレスを選択する。これは例えばマルチキャストを送信し ホストが複数のインターフェイスを持つときに、どの IP アドレスの インターフェイスに送るか選択する際に便利です。
UDP パケットのバイトサイズを設定する
UDP ソケットの再利用を明示的に有効または無効にする
time to live 値を設定する(マルチキャストについてのみ)
UDP ソケットを connect()
で初期化する。
この場合、送り先アドレスは後から ff_udp_set_remote_url で変えることができない。
送り先のアドレスが開始時に分からない場合、このオプションを
ff_udp_set_remote_url で指定することもできる。
これによって getsockname でパケットの送り元アドレスを見つけることができ、
書き出しの際 "destination unreachable" を受け取った場合には
AVERROR(ECONNREFUSED) を返す。
受信にlについては、これによって指定されているピアのアドレス/ポートからのパケット
のみを受け取るという効用がある。
指定された送信者 IP アドレスの1つからマルチキャストグループへ送られたパケットのみ 受信する。
指定された送信者 IP アドレスの1つからマルチキャストグループへ送られたパケットを 無視する。
udp プロトコルの avconv
での利用例は以下の通り。
UDP 越しにリモートエンドポイントへストリームするには:
avconv -i input -f format udp://hostname:port
188 サイズの UDP パケットを使い、大きい入力バッファで UDP 越しに mpegts 形式でストリームするには:
avconv -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
UDP 越しにリモートエンドポイントから受け取るには:
avconv -i udp://[multicast-address]:port
Libav のビルドを構成する際、既定では全てのサポートされている bitstream
フィルターが有効になります。configure オプション --list-bsfs
を
使うと全ての利用可能な bitstream フィルターを一覧できます。
configure オプション --disable-bsfs
を使うと全ての bitstream
フィルターを無効にでき、オプション --enable-bsf=BSF
を使うと
任意の bitstream フィルターを選択的に有効にできます。またオプション
--disable-bsf=BSF
を使うと特定の bitstream フィルターを無効に
できます。
ff* ツールのオプション -bsfs
で、ビルドに含まれる全てのサポート
される bitstream フィルターが表示されます。
以下は現在利用できる bitstream フィルターの説明です。
MJPEG/AVI1 パケットを完全な JPEG/JFIF パケットに変換します。
MJPEG はその中で各映像フレームが本質的には JPEG 画像であるような 映像コーデックです。その個別のフレームをロスなしに抽出できます、 例えば
avconv -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
あいにく、デコーディングのために必要となる DHT セグメントがないため、 これらのチャンクは不完全な JPEG 画像です。 http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml からの引用です:
Avery Lee が2001年に rec.video.desktop ニュースグループで以下のように コメントしています。"MJPEG、あるいは少なくとも MJPG fourcc を持つ AVI での MJPEG は、固定の – かつ*省略された* – ハフマンテーブルを持つ 制限つきの JPEG です。この JPEG では YCbCr 色空間でなくてはならず、 4:2:2 である必要があり、算術的でもプログレッシブでもない基本ハフマン エンコーディングを使わなくてはいけません. . . . 実際は MJPEG フレームを 抽出して通常の JPEG デコーダでデコードすることができますが、それらに DHT セグメントを前置しなくてはならず、さもないとそのデコーダがデータを どのように展開すればよいか分かりません。必要とされる正確なテーブルは OpenDML 仕様で与えられています。"
この bitstream フィルターは、完全に適切になった JPEG 画像を作るために、 (AVI1 ヘッダ ID を伝え、かつ DHT セグメントを欠いている)MJPEG ストリームから 抽出されたフレームのヘッダを手当てします。
avconv -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg exiftran -i -9 frame*.jpg avconv -i frame_%d.jpg -c:v copy rotated.avi
フィルターグラフは結びつけられたフィルターの有向グラフです。サイクルを含んで いてもよく、フィルターの対の間で複数のリンクがあってもかまいません。 それぞれのリンクは、入力を受け取るフィルター側に結びつけられた1つの 入力パッドと、出力を受け取るフィルターに関係付けられた1つの出力パッドを 持ちます。
フィルターグラフの各フィルターはアプリケーションに登録されたフィルタークラスの インスタンスであり、このクラスはその機能とそのフィルターの入力および出力の パッドの数を定義します。
入力パッドを持たないフィルターは"ソース"と呼ばれ、出力パッドを持たないフィルターは "シンク"と呼ばれます。
フィルターグラフはテキストでの表記を使って表現することができます。
この表記は avconv
の ‘-filter’/‘-vf’ および ‘-filter_complex’
オプションや、avplay
の -vf
オプションで認識され、
‘libavfilter/avfiltergraph’ 内の avfilter_graph_parse()
/avfilter_graph_parse2()
関数で定義されています。
フィルターチェーンは関係するフィルターの列からなり、それぞれ その列での直前のものに関係しています。フィルターチェーンは","で区切られた フィルター記述のリストで表現されます。
フィルターグラフはフィルターチェーンの列からなります。 フィルターチェーンの列は";"で区切られたフィルターチェーン記述のリストで 表現されます。
フィルターは次の形の文字列で表現されます: [in_link_1]...[in_link_N]filter_name=arguments[out_link_1]...[out_link_M]
filter_name は記述されるフィルターがインスタンスとなるフィルター クラスの名前で、プログラムに登録されているフィルタークラスの名前でなければ なりません。 フィルタークラスの名前には省略可能な文字列"=arguments"が 続きます。
arguments はフィルターのインスタンスを初期化するために 用いられるパラメータを含む文字列で、以下のフィルターの説明の中で 説明されています。
引数のリストは最初と最後を示す文字"’"を使ってクォートすることができ、 文字’\’でクォートされたテキスト内でこの文字をエスケープするために 使えます; さもなくば、引数の文字列は次の(集合"[]=;,"に属する)特殊文字 が出てくるところで終了するものと見なされます。
フィルターの名前と引数には省略可能なリンクラベルのリストが前や後ろに つきます。 リンクラベルによってフィルターの出力および入力パッドに関連付けられたリンクに 名前をつけることができます。前につくラベルが in_link_1 ... in_link_N ならフィルターの入力パッドに関連付けられ、後ろにつくラベル out_link_1 ... out_link_M は出力パッドに関連付けられます。
フィルターグラフに同じ名前の2つのリンクラベルが見つかる場合、 対応する入力および出力パッドの間のリンクが作成されます。
出力パッドにラベルがない場合、それは既定ではそのフィルターチェーンの 次のフィルターのラベルがない入力パッドにリンクされます。 例えばフィルターチェーンで:
nullsrc, split[L1], [L2]overlay, nullsink
となっていたら、split フィルターのインスタンスは2つの出力パッドを 持たなければならず、overlay フィルターのインスタンスは2つの入力パッドを 持ちます。split の最初の出力パッドは"L1"とラベルがついています。 2つ目の出力パッドは overlay の2つ目の入力パッドにリンクされます。 これらはどちらもラベルがついていません。
完全なフィルターチェーンでは全てのラベルのないフィルター入力および出力 パッドは結びついていなければなりません。フィルターグラフは、その全ての フィルターチェーンで全ての入力および出力パッドが結びついているときに 妥当と見なされます。
Libavfilter はフォーマット変換が必要な場合にスケールフィルターを自動的に
入れます。filtergraph の説明に
sws_flags=flags;
を先頭につけることで、これらの自動で挿入されるスケーラーに対する swscale
フラグを指定できます。
以下はフィルターグラフの構文の BNF 記述です:
NAME ::= 英数文字および '_' の列。 LINKLABEL ::= "[" NAME "]" NAME ::= 英数文字および '_' の列 LINKLABEL ::= "[" NAME "]" LINKLABELS ::= LINKLABEL [LINKLABELS] FILTER_ARGUMENTS ::= 文字の列(最終的にクォートされる) FILTER ::= [LINKNAMES] NAME ["=" ARGUMENTS] [LINKNAMES] FILTERCHAIN ::= FILTER [,FILTERCHAIN] FILTERGRAPH ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]
Libav ビルドを構成(configure)する際に、–disable-filters を使って 既存のフィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる音声フィルターが 表示されている。
以下は現時点で利用できる音声フィルターの説明である。
入力音声を指定されたフォーマットの1つに変換する。このフレームワークは 変換を最小限にするような最適な形式を折衝します。
このフィルターは次の名前のついたパラメーターを受け取ります:
要求するサンプルフォーマットのカンマで区切られたリスト
要求するサンプルレートのカンマで区切られたリスト
要求するチャンネルレイアウトのカンマで区切られたリスト
パラメーターが省略された場合、全ての値が許されます。
出力に符号無し8ビットあるいは符号付き16ビットステレオを強制する例:
aformat=sample_fmts\=u8\,s16:channel_layouts\=stereo
複数の音声入力を単一の出力にまとめる。
例えば
avconv -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
は3つの入力音声ストリームを、最初の入力と同じ時間長になるように1つの出力にまとめ、 3秒間のドロップアウト遷移時間を加える。
このフィルターは以下の名前のついたパラメーターを受け取る:
入力の数。指定されていなければ、既定では2。
ストリームの末尾を決めるやり方。
最長の入力の長さに揃える。(既定値)
最短の入力の長さに揃える。
最初の入力の長さに揃える。
遷移時間、秒単位。入力ストリームが終わった際に音量を再正規化する。 既定値は2秒。
音声ソースを変更せずに出力に渡す。
入力音声をいくつかの同一の出力に分割する。
このフィルターは出力の数を指定する1つのパラメーターを受け取る。 指定されていなければ、既定では2になる。
例えば
avconv -i INPUT -filter_complex asplit=5 OUTPUT
は入力音声の5つのコピーを作成する。
必要なら、縮める/伸ばす/サンプルを落とす/無音サンプルを追加することによって、 音声データをタイムスタンプと同期する。
このフィルターは次の名前のついたパラメーターを受け取る:
タイムスタンプに合わせるようにデータの伸縮を有効にする。 既定では無効。無効の場合、時間ギャップは無音で埋められる。
サンプルの追加/削除をうながすタイムスタンプと音声データの(秒単位の)最小差。 既定値は0.1。このフィルターによって完全でない同期になっていたら、このパラメーターを 0に設定して試すとよい。
秒間のサンプルの伸縮の最大値。compensate=1のときのみ関係する。 既定値は500。
最初の pts がこの値になるべきということを仮定する。 これによってストリームの開始時点でパディング/トリミングができる。既定では、 最初のフレームで pts がどのくらいかについてどのような仮定もなされないので、 パディングもトリミングもなされない。例えば、もし音声ストリームが映像ストリームの 後に開始するなら、これを0に設定することで無音状態で開始するようパッドできる。
入力音声ストリームの各チャンネルをを別々の出力ストリームに分割する。
このフィルターは以下の名前のついたパラメーターを受け取る:
入力ストリームのチャンネルレイアウト。既定では"stereo"。
例えば、ステレオの入力 MP3 ファイルを仮定すると
avconv -i in.mp3 -filter_complex channelsplit out.mkv
によって2つの音声ストリームを含む出力 Matroska ファイルを作成し、 1つは左チャンネルだけ含み、もう1つは右チャンネルだけ含む。
5.1 WAV ファイルをチャンネルごとのファイルに分割するには
avconv -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
入力チャンネルを新しい場所にマップし直す。
このフィルターは以下の名前のついたパラメーターを受け取る:
出力ストリームのチャンネルレイアウト
入力から出力へのチャンネルをマップする。引数はカンマで区切られたマッピングのリストで、
それぞれが in_channel-out_channel
または in_channel の
形をしている。in_channel は入力チャンネルの名前(例えば前方左なら FL)か、
入力チャンネルレイアウトでのインデックス。out_channel は出力チャンネルの
名前、または出力チャンネルレイアウトでのインデックス。out_channel が与え
られていなければ、暗黙にゼロから始まりマッピングごとに1つずつ増えていくインデックス
になる。
マッピングがあれば、このフィルターは入力チャンネルから出力チャンネルへ インデックスを保存するように暗黙にマッピングする。
例えば、5.1+downmix 入力 MOV ファイルを仮定すると
avconv -i in.mov -filter 'channelmap=map=DL-FL\,DR-FR' out.wav
で入力の downmix チャンネルからステレオとしてタグづけされた出力 WAV ファイルを 作成する。
AAC のネイティブチャンネルオーダーで誤ってエンコードされた 5.1 WAV を修正するには
avconv -i in.wav -filter 'channelmap=1\,2\,0\,5\,3\,4:channel_layout=5.1' out.wav
複数の入力ストリームを1つのマルチチャンネルストリームにまとめる
このフィルターは以下の名前のついたパラメーターを受け取る:
入力ストリームの数。既定では2。
希望する出力チャンネルレイアウト。既定ではステレオ。
入力から出力へのチャンネルをマップする。引数はカンマで区切られたマッピングのリストで、
それぞれが input_idx.in_channel-out_channel
の形をしている。
input_idx は0から始まる入力ストリームのインデックス。in_channel は
入力チャンネルの名前(例えば前方左なら FL)、または指定された入力ストリームでのインデックス。
out_channel は出力チャンネルの名前。
このフィルターはマッピングが明示的に指定されていなければ推定しようとする。 まず利用されていない対応する入力チャンネルを探そうとし、それに失敗したら最初の 利用されていない入力チャンネルを選ぶ。
例えば、(適切にチャンネルレイアウトを設定して)3つの入力をまとめるには
avconv -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
6つの単一チャンネルのストリームから 5.1 出力を作るには:
avconv -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
音声サンプルフォーマット、サンプルレート、およびチャンネルレイアウトをを変換する。 このフィルターは直接利用することを意図したものではなく、libavfilter によって 変換が必要になったときに常に自動的に挿入される。特定の変換を強制するには aformat フィルターを使うこと。
以下は現在利用可能な音声ソースの説明である。
Null 音声ソース、音声フレームを一切返さない。これは主にテンプレートとして 有用であり、分析/デバッギングツールの中で用いるためのものである。
これは次の形をした文字列を省略可能なパラメータとして受け取る: sample_rate:channel_layout。
sample_rate はサンプルレートを指定し、既定では 44100 とされる。
channel_layout チャンネルレイアウトを指定し、整数値または チャンネルレイアウトを表す文字列をとれる。channel_layout の既定の 値は3であり、CH_LAYOUT_STEREO に対応する。
文字列とチャンネルレイアウトの値との間のマッピングについては ‘libavcodec/audioconvert.c’ にある channel_layout_map の定義を 確認すること。
いくつかの例は以下の通り:
# サンプルレートを48000 Hz に、チャンネルレイアウトを CH_LAYOUT_MONO に設定する。 anullsrc=48000:4 # 同じく anullsrc=48000:mono
音声フレームをバッファし、フィルターチェーンで利用できるようにする。
このソースはユーザーが提供するグラフの表現の一部にすることを意図したものではなく、 ‘libavfilter/buffersrc.h’ で定義されたインターフェイスを通じてプログラムを 呼ぶことによって挿入される。
これは次の名前のついたパラメーターを受け取る:
提出されたフレームのタイムスタンプのために使われる時刻ベース。これは浮動小数点数か numerator/denominator の形でなければならない。
音声サンプルレート。
サンプルフォーマットの名前、av_get_sample_fmt_name()
で返されるもの。
音声データのチャンネルレイアウト、av_get_channel_layout()
で受け取ることの
できる形。
全てのパラメーターは明示的に定義されている必要がある。
以下は現在利用可能な音声シンクの説明である。
Null 音声シンク、入力音声に対し全く何もしない。これは主にテンプレートとして 有用であり、分析/デバッギングツールで用いるためのものである。
このシンクはプログラムでの使用のためのものである。このシンクに逹っしたフレーム は ‘libavfilter/buffersink.h’ で定義されているインターフェイスを使った プログラムを呼び出すことによって取得できる。
このフィルターはパラメーターを受け取らない。
Libav ビルドを構成(configure)する際に、–disable-filters を使って 既存の映像フィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる映像フィルターが 表示されている。
以下は現時点で利用できる映像フィルターの説明である。
(ほぼ)真っ黒なフレームを検出する。章の変わり目やコマーシャルを検出 するのに有用となりうる。出力される行は検出されたフレームのフレーム数、 黒のパーセンテージ、(分かるなら)ファイルでの位置もしくは-1、および 秒単位でのタイムスタンプからなる。
出力される行を表示するには、ログレベルを少なくとも AV_LOG_INFO に 設定する必要がある。
このフィルターは次の構文を受け取る:
blackframe[=amount:[threshold]]
amount は閾値以下にならなくてはならないピクセルのパーセンテージであり、 既定では98になる。
threshold はピクセルの値がこれを下回ると黒と見なされる閾値であり、 既定では32になる。
入力映像に boxblur アルゴリズムを適用する。
このフィルターは次のパラメーターを受け取る: luma_power:luma_radius:chroma_radius:chroma_power:alpha_radius:alpha_power
Chroma および alpha パラメーターは省略可能であり、指定されていない場合 luma_radius および luma_power で設定されている既定値になる。
luma_radius、chroma_radius、および alpha_radius は 対応する入力平面にブラーをかけるために使うボックスのピクセルでの半径を 表す。これらは式であり、以下の定数を含むことができる:
ピクセルでの入力幅と高さ
ピクセルでの chroma 入力幅と高さ
水平および垂直 chroma サブサンプル値。例えばピクセルフォーマット "yuv422p" なら hsub は2、vsub は1である。
半径は非負の数でなくてはならず、luma および alpha については
式 min(w,h)/2
を越えてはならず、chroma 平面の場合は
min(cw,ch)/2
を越えてはならない。
luma_power、chroma_power、および alpha_power は 対応する平面に適用される boxblur フィルターを何回適用するかを 表す。
以下はいくつかの例:
boxblur=2:1
boxblur=2:1:0:0:0:0
boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1
入力ソースを変更せずに出力にコピーする。 主にテストの目的のために有用である。
入力映像を out_w:out_h:x:y に切り取る。
このパラメータは以下の定数を含む表現である:
e(オイラー数)、pi(ギリシャ文字のパイ)、PHI(黄金比)それぞれ対応する数学的近似値
x および y についての計算された値。これらは各新しいフレームで 評価される。
入力の幅および高さ
in_w および in_h と同じ
出力の(切り取られた)幅および高さ
out_w および out_h と同じ
0から始まる入力フレームの数
入力フレームのファイルの中での位置、不明なら NAN
秒で表されたタイムスタンプ、入力タイムスタンプが不明なら NAN
パラメータ out_w および out_h は出力の(切り取られた)映像の 幅および高さのための表現を指定する。これらはフィルターのコンフィグレーション の時点で評価される。
out_w の既定値は "in_w" であり、out_h の既定値は "in_h" である。
out_w のための表現は out_h の値に依存することがあり、 out_h のための表現は out_w に依存することがあるが、 x および y の値には依存しないはずである。なぜなら x および y は out_w および out_h の後で 評価からである。
パラメータ x および y は出力の(切り取られていない)領域 の左上隅の位置のための表現を指定する。これらは各フレームについて 評価される。評価された値が妥当でなければ、最も近い妥当な値に近似 される。
x の既定の値は "(in_w-out_w)/2" であり、y の既定の値は "(in_h-out_h)/2" である。これは入力画像の中央に切り取られた領域を 設定することになる。
x のための表現は y に依存することがあり、y の ための表現は x に依存することがある。
いくつかの例は以下の通り:
# サイズ 100x100 で入力領域の中央を切り取る crop=100:100 # 入力映像の 2/3 のサイズで入力領域の中央を切り取る "crop=2/3*in_w:2/3*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" # 入力画像の右下4分の1のみを残す "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)"
切り取るサイズを自動検出する。
切り取りに必要となるパラメータを計算し、ロギングのシステムを通じて推奨される パラメータを表示する。検出された寸法は入力映像の黒でない領域に対応する。
これは次の構文を受け取る:
cropdetect[=limit[:round[:reset]]]
閾値、何もない(0)から全て(255)までを自由に選択することができる。 既定では24。
幅/高さが分割されるべき値、既定では16。 オフセットは自動的に映像の中心に調節される。 偶数の寸法のみ(4:2:2 の映像で必要となる)を得るには2を用いること。 たいていの映像コーデックでエンコーディングする際には16が最良。
以前に検出された最大の映像領域をリセットし、現在の最適な 切り取り領域を検出し始めるのにどれだけのフレームを 過ぎてからにするかを決めるカウンター。 既定では0。
これはチャンネルのロゴが映像領域を歪ませる際に有用である。 0はリセットせず再生中に出てきた最大の領域を返すように 指示する。
入力イメージに色付けされた箱を描く。
これは次の構文を受け取る:
drawbox=x:y:width:height:color
箱の左上隅を指定する。既定では0。
箱の幅および高さを指定する。0なら入力の幅および高さとして解釈される。 既定では0。
描く箱の色を指定する。(大文字小文字を区別しない)色の名前もしくは 列 0xRRGGBB[AA] をとりうる。
いくつかの例は以下の通り:
# 入力画像の縁に沿って黒い箱を描く drawbox # 50%の透明度の赤で箱を描く drawbox=10:20:200:60:red@0.5"
文字列のテキストまたは指定のファイルのテキストを libfreetype ライブラリ を使って映像の上に描画します。
このフィルターのコンパイルを有効にするには Libav を configure するときに
--enable-libfreetype
をつける必要があります。
またこのフィルターは strftime() 文字列を理解し、それに従って展開します。 strftime() のドキュメンテーションを確認してください。
このフィルターはf":" で区切られた key=value のペアのリストを パラメーターとして受け取ります。
受け取るパラメーターの説明は以下の通りです。
テキストを描画するのに使うフォントファイルです。パスを含めなければ なりません。このパラメーターは必須です。
描画されるテキストの文字列です。テキストは UTF-8 でエンコードされた 文字の列でなければなりません。 パラメーター textfile でファイルが指定されていない場合、 このパラメーターは必須です。
描画されるテキストを含むテキストファイルです。テキストは UTF-8 で エンコードされた文字の列でなければなりません。
パラメーター text でテキストの文字列が指定されていない場合、 このパラメーターは必須です。
text と textfile が両方指定されている場合はエラーになります。
映像フレーム内でテキストが描画される場所の位置です。 出力画像の左上隅からの相対位置です。 これらは overlay フィルターに似た式を受け取ります:
x および y の計算された値です。これらは新しい各フレームで 評価されます。
主要な入力幅および高さ
main_w および main_h と同じ
レンダリングされる幅および高さ
text_w および text_h と同じ
処理されるフレームの番号、0から始まる
秒単位でのタイムスタンプ、入力タイムスタンプが分からなければ NAN
x および y の既定値は0です。
テキストを描画するためのフォントサイズです。 fontsize の既定値は16です。
フォントを描画するための色です。 文字列(例えば "red")か 0xRRGGBB[AA] の形式(例えば"0xff000033") で省略可能なアルファ値つきの形です。 fontcolor の既定値は "black" です。
テキストの周囲にボックスを描画するための色です。 文字列(例えば "red")か 0xRRGGBB[AA] の形式(例えば"0xff000033") で省略可能なアルファ値つきの形です。 fontcolor の既定値は "white" です。
背景色を使ってテキストの周囲を描画するために用いられます。 値は 1 (有効) または 0 (無効)です。 box の既定値は 0 です。
テキストの影のためのテキストの位置からの x および y の相対位置です。 これらは正または負の値をとれます。 既定値はどちらも "0" です。
描画されるテキストの後ろの影を描画するために用いられる色です。 文字列(例えば "red")か 0xRRGGBB[AA] の形式(例えば"0xff000033") で省略可能なアルファ値つきの形です。 shadowcolor の既定値は "black" です。
フォントを読み込むために用いられるフラグです。
これらのフラグは libfreetype でサポートされているフラグに対応し、 以下の値の組み合わせです:
既定値は "render" です。
詳しくは libfreetype の FT_LOAD_* フラグについてのドキュメンテーションに あたってください。
タブを描画するためのスペースの数の大きさです。 既定値は 4 です。
true なら、クリッピングを避けるようテキストの座標を確認し固定します。
例えば、コマンド:
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
は "Test Text" を FreeSerif フォントで、省略可能なパラメーターは既定値を 使って描画します。
コマンド:
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"
は ’Test Text’ をサイズ 24 の FreeSerif フォントで(スクリーンの左上隅から) x=100 および y=50 の位置に、テキストを黄色、周囲のボックスを赤にして 描画します。テキストもボックスもどちらも 20% の透明度を持ちます。
パラメーターリストの中でスペースを使っていなければ、二重引用符はいらないという ことに注意してください。
libfreetype についてより詳しくは、以下を確認してください: http://www.freetype.org/.
入力映像にフェードイン/フェードアウト効果を適用します。
これは次のパラメータを受け取ります: type:start_frame:nb_frames
type は効果の種類がフェードインなら "in"、フェードアウトなら "out" を指定します。
start_frame はフェード効果が適用される開始フレームの番号を指定 します。
nb_frames はフェード効果が持続しなくてはならないフレームの個数 を指定します。フェードイン効果の最後には出力映像は入力映像と同じ 度合いになり、フェードアウト遷移の最後には出力映像は完全に黒く なります。
以下はいくつかの使用例で、テストシナリオとしても有用です。
# 映像の最初の30フレームをフェードインします fade=in:0:30 # 200フレームの映像で最後の45フレームをフェードアウトします fade=out:155:45 # 1000フレームの映像で最初の25フレームをフェードインし、最後の25フレームをフェードアウトします fade=in:0:25, fade=out:975:25 # 最初の5フレームを黒くし、5から24番フレームでフェードインします fade=in:5:20
入力映像のフィールドオーダーを変換します。
このフィルターは、入力のインターレースされた映像を変換するために要求される フィールドオーダーを指定する単一のパラメーターを受け取ります。このパラメーターは 次の値のいずれかを取れます:
出力下部フィールドが先頭
出力上部フィールドが先頭
既定の値は "tff" です。
変換は1ラインずつ上もしくは下に画像内容をシフトし、かつ残りのラインに 適切な画像内容を充てることによって実現されます。 この手法は大抵のブロードキャストフィールドオーダー変換器と合っています。
入力映像にインターレースであるというフラグがない場合、または要求される 出力フィールドオーダーが与えられていれば、このフィルターはやってくる映像を 変更しません。
このフィルターは、下部フィールド先頭の PAL DV マテリアルを/へ変換する際に とても便利です。
例えば:
./avconv -i in.vob -vf "fieldorder=bff" out.dv
入力イメージをバッファし、かつ要求された時にそれらを送る。
このフィルターは主に libavfilter フレームワークによって自動的に 挿入される際に有用である。
このフィルターはパラメータを受け取らない。
入力映像を指定されたピクセル形式の1つに変換する。 Libavfilter は次のフィルターの入力にサポートされているうちの1つを 選択しようと試みる。
このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" によって 区切られたピクセル形式名のリストを引数として受け取る。
以下にいくつかの例:
# 入力映像を形式 "yuv420p" に変換する format=yuv420p # 入力映像をリストにあるいずれかの形式に変換する format=yuv420p:yuv444p:yuv410p
フレームを必要に応じて重複させたり削除したりすることにより、映像を特定の コンスタントフレームレートに変換する。
このフィルターは以下の名前のついたパラメーターを受け取る:
希望する出力フレームレート
入力映像に frei0r 効果を適用する。
このフィルターのコンパイルを有効にするには、frei0r ヘッダをインストール し、–enable-frei0r とともに Libav を configure すること。
このフィルターは次の構文をサポートする:
filter_name[{:|=}param1:param2:...:paramN]
filter_name はロードする frei0r 効果の名前である。環境変数
FREI0R_PATH
が定義されていれば、FREIOR_PATH
の中のコロンで
区切られたリストで指定されたディレクトリのいずれかから frei0r 効果が
探索され、さもなくば次の順番で標準的な frei0r のパスから探索される:
‘HOME/.frei0r-1/lib/’、‘/usr/local/lib/frei0r-1/’、
‘/usr/lib/frei0r-1/’。
param1、param2、...、paramN はその frei0r 効果に対する パラメータを指定する。
frei0r 効果のパラメータはブール値(その値は "y" および "n" で指定される)、
倍精度浮動小数点数、色(R/G/B という構文で指定される、ただし
R、G、および B は 0.0 から 1.0 までの浮動小数点数、または
av_parse_color()
の色の記述によって指定される)、位置(X/Y
という構文で指定される、ただし X と Y は浮動小数点数)、および
文字列を取ることができる。
パラメータの数と種類はロードされる効果に依存する。効果のパラメータが 指定されていなければ、既定値が設定される。
以下はいくつかの例:
# distort0r 効果を適用、最初の2つの倍精度浮動小数点数パラメータを設定 frei0r=distort0r: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://piksel.org/frei0r
フラットに近い領域を8ビット色深度に切り捨てたときにときどき生じる帯状の アーティファクトを修正します。 帯があるところにあるべき変化を補間し、それらをぼやかします。
このフィルターは再生のためのみに設計されています。ロスのある圧縮より前に これを使わないでください。圧縮はぼやかしを失くし帯を取り戻していまいがち だからです。
このフィルターは’:’で区切られた2つの省略可能なパラメータを受け取ります: strength:radius
strength はこのフィルターが1つのピクセルで変更できる最大の量です。 またフラットに近い領域を検出する閾値でもあります。 .51から255までの値をとることができ、既定では1.2で、範囲外の値は妥当な値に 切り詰められます。
radius は変化が適用される近傍です。より大きな半径にするとより スムーズな変化になりますが、同時にこのフィルターがより詳細な領域の近くにある ピクセルを変更するのを妨げます。取れる値は8-32で、既定では16です。 範囲外の値は妥当な値に切り詰められます。
# 既定のパラメータ gradfun=1.2:16 # 半径を省略 gradfun=1.2
入力映像を水平方向に反転させる。
例えば avconv
で入力の映像を水平方向に反転させるには:
avconv -i in.avi -vf "hflip" out.avi
高精度/品質 3d ノイズ除去フィルター。このフィルターは画像ノイズを減らすことで 滑らかな画像を生成し静止画像を本当に静止させることを目指している。 それによって圧縮可能性が高まるはずである。
以下の省略可能なパラメータを受け取る: luma_spatial:chroma_spatial:luma_tmp:chroma_tmp
空間 luma 強度を指定する非負の浮動小数点数、 既定では4.0
空間 chroma 強度を指定する非負の浮動小数点数、 既定では3.0*luma_spatial/4.0
luma 時間強度を指定する浮動小数点数、既定では 6.0*luma_spatial/4.0
chroma 時間強度を指定する浮動小数点数、既定では luma_tmp*chroma_spatial/luma_spatial
次のフィルターの入力に指定されたピクセル形式のいずれも使わないように libavfilter に強制する。
このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" で区切られた ピクセル形式名のリストを引数として受け取る。
以下はいくつかの例:
# "yuv420p" と異なる形式のどれかを使って vflip フィルターに # 入力するように libavfilter に強制する noformat=yuv420p,vflip # 入力映像をリストにある形式以外の形式に変換する noformat=yuv420p:yuv444p:yuv410p
映像ソースを変更せずに出力に渡す。
libopencv を使って映像変換をほどこす。
このフィルターを有効にするには libopencv ライブラリとヘッダをインストールし Libav を –enable-libopencv で configure すること。
このフィルターは次のパラメータを受け取る: filter_name{:=}filter_params.
filter_name は適用する libopencv フィルターの名前である。
filter_params は libopencv フィルターに渡すパラメータを指定する。 指定されていなければ既定の値が仮定される。
より正確な情報については公式の libopencv の文書を参照すること: http://opencv.willowgarage.com/documentation/c/image_filtering.html
以下に対応している libopencv フィルターのリストが続く。
特定の構成要素を使ってイメージを膨らませる。
このフィルターは libopencv 関数 cvDilate
に対応する。
これはパラメータを受け取る: struct_el:nb_iterations。
struct_el は構成要素を表し、次の構文をとる: colsxrows+anchor_xxanchor_y/shape
cols および rows は構成要素の列と行の数を表し、 anchor_x および anchor_y はアンカーポイント、そして shape は構成要素の形状を表し、値として "rect"、"cross"、"ellipse"、"custom" のうちの1つをとる。
shape の値が "custom" なら、"=filename"の形の文字列が 続かなくてはならない。名前 filename を持つファイルはバイナリイメージを 表すと仮定され、各印字可能な文字は明るいピクセルに対応する。custom shape が使われる際、cols と rows は無視され、代わりに 列と行の数は読み込まれるファイルにあるものと仮定される。
struct_el の既定値は"3x3+0x0/rect"である。
nb_iterations はイメージに適用される変換の回数を指定し、 既定では1である。
以下にいくつかの例:
# 既定値を使う ocv=dilate # 構成要素を使って 5x5 クロスに膨らませ、2回繰り返す ocv=dilate=5x5+2x2/cross:2 # 形状をファイル diamond.shape から読み、2回繰り返す # このファイル diamond.shapeには次のような文字のパターンが含まれている: # * # *** # ***** # *** # * # 指定されている cols と rows は無視される(しかしアンカーポイント座標は無視されない) ocv=0x0+2x2/custom=diamond.shape:2
特定の構成要素を使ってイメージを侵食する。
このフィルターは libopencv 関数 cvErode
に対応する。
このフィルターはパラメータを受け取る: struct_el:nb_iterations、 これは dilate フィルターと同じ意味を持ち同じように使われる。
入力映像をスムーズにする。
このフィルターは次のパラメータをとる: type:param1:param2:param3:param4.
type はほどこすスムーズフィルターの種類で、次の値のいずれかをとる: "blur"、"blur_no_scale"、"median"、"gaussian"、"bilateral"。 既定値は "gaussian"。
param1、param2、param3、および param4 は スムーズの種類に応じてその意味が変わるパラメータである。 param1 と param2 は正の整数値または0を受け取り、param3 と param4 は浮動小数点数値を受け取る。
param1 に対する既定値は3で、その他のパラメータについての既定値は 0である。
これらのパラメータは libopencv 関数 cvSmooth
に割り当てられている
パラメータに対応する。
映像を別の映像の上に重ねる。
これは2つの入力と1つの出力をとる。最初の入力は"主な"映像で、その上に 2番目の入力が重ねられる。
受け取るパラメータは: x:y。
x は主な映像の上に重ねられる映像の x 座標。 y は y 座標。これらのパラメータは下記のパラメータを含むような 式である:
主な入力の幅と高さ
main_w および main_h と同じ
重ねる入力の幅と高さ
overlay_w および overlay_h と同じ
各入力映像から取られるフレームはタイムスタンプの順であることを意識すること。 したがって、それらの初期タイムスタンプが異なるなら、setpts=PTS-STARTPTS フィルターに通し、それらが同じゼロタイムスタンプから始まるようにして (movie フィルターの例で行っているように )2つの入力を渡すことは 良い考えである。
いくつかの例:
# 主な映像の右下隅から10ピクセルのところに # 重ねて描画する overlay=main_w-overlay_w-10:main_h-overlay_h-10 # 入力の左下隅に透過 PNG ロゴを挿入する avconv -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output # 2つの異なる透過 PNG ロゴを挿入する(2番目のロゴは # 右下隅): avconv -i input -i logo1 -i logo2 -filter_complex 'overlay=10:H-h-10,overlay=W-w-10:H-h-10' output # 主な映像の上部に透過色レイヤーを加える、 # WxH は overlay フィルターに主な入力のサイズを指定する color=red.3:WxH [over]; [in][over] overlay [out]
さらに多くの重ねを繋げることは可能だが、そういったアプローチの 効率は試験中である。
入力画像に対してパディングを加え、元の入力を与えられた座標 x, y に配置する。
次のようなパラメータを受け取る: width:height:x:y:color。
パラメータ width、height、x、および y は以下の 定数を含んだ式です:
e (自然対数の底)、pi (円周率)、phi (黄金比)に対応する数学的近似値
入力映像の幅および高さ
in_w および in_h と同じ
出力の幅および高さ、width および height 式によって指定されたパディングされた 領域の大きさ
out_w および out_h と同じ
x および y 式によって指定された x および y オフセット、 指定されていなければ NAN
入力画像アスペクト比、iw / ih と同じ
水平および垂直クローマサブサンプル値。例えばピクセル形式 "yuv422p" なら hsub は2で vsub は1。
受け取るパラメータの説明は以下の通り。
パディングを加えた出力画像のサイズを指定する。width または height としての値が0の場合、対応する入力サイズが出力として 用いられる。
width 式は height 式によって設定された値を参照すること ができ、逆も可能です。
width および height の既定値は0。
出力画像の左上隅を基準にして、パディング領域における入力画像を 配置するのオフセットを指定する。
x 式は y 式によって設定された値を参照すること ができ、逆も可能です。
x および y の既定値は0。
パディング領域の色を指定する。色の名前もしくは 0xRRGGBB[AA] 数列を とりうる。
color の既定値は "black"。
いくつかの例:
# パディングを色 "violet" にして入力映像に追加する。 # 出力映像のサイズは640x480で、 # 列0、行40に入力映像の左上隅が配置される。 pad=640:480:0:40: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" # 出力サイズを2倍にし、入力映像を出力パディング領域の右下隅に # 配置する pad="2*iw:2*ih:ow-iw:oh-ih"
ピクセル形式記述子テストフィルター、主に内部的なテストに有用。 出力映像は入力映像に等しくなるはずである。
例えば:
format=monow, pixdesctest
として monowhite ピクセル形式記述子定義をテストするために用いることができる。
入力映像を width:height に拡縮し、かつ/または画像形式を変換する。
パラメータ width および height は以下の定数を含む式:
e (自然対数の底)、pi (円周率)、phi (黄金比)に対応する数学的 近似値
入力の幅および高さ
in_w および in_h と同じ
(切り取られた)出力の幅および高さ
out_w および out_h と同じ
入力画面アスペクト比、iw / ih と同じ
入力のサンプルアスペクト比
水平および垂直クローマサブサンプル値。例えばピクセル形式 "yuv422p" なら hsub は2で vsub は1。
は入力映像を200x100のサイズに拡縮する。
入力画像形式が次のフィルターが要求しているものと異なるなら、 この scale フィルターは入力を要求されている形式に変換する。
width または height の値が0なら、出力には対応する 入力サイズが用いられる。
width または height の値が-1なら、それぞれの出力サイズについて、 この scale フィルターは入力画像の縦横比を維持する値を用いる。
width と height の既定の値は0。
いくつかの例:
# 入力映像をサイズ 200x100 に拡大縮小します scale=200:100 # 入力を2倍に拡大します scale=2*iw:2*ih # 上は以下と同じです scale=2*in_w:2*in_h # 入力を半分のサイズに縮小します scale=iw/2:ih/2 # 幅を増やし、高さを同じサイズに設定します scale=3/2*iw:ow # 黄金比で調和させます scale=iw:1/PHI*iw scale=ih*PHI:ih # 高さを増やし、幅を高さの3/2に設定します scale=3/2*oh:3/5*ih # 大きさを増やしますが、クローマの倍数の大きさにします scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub" # 500ピクセルを上限に幅を増やし、入力アスペクト比は保ちます scale='min(500\, iw*3/2):-1'
出力で渡すフレームを選択します
入力として1つの式を受け取り、この式は各入力フレームで評価されます。 もし式が評価された結果0以外の値になると、そのフレームは選択され 出力に渡ります。そうでなければそのフレームは捨てられます。
式には以下の定数を含めることができます:
円周率
黄金律
自然対数の底
フィルターされるフレームの番号、0から始まる
選択されたフレームの番号、0から始まる
最後に選択されたフレームの番号、未定義なら NAN
入力タイムスタンプの時間単位
フィルターされる映像フレームの PTS (プレゼンテーションタイムスタンプ)、 TB の単位で表現される。未定義なら NAN
フィルターされる映像フレームの PTS (プレゼンテーションタイムスタンプ)、 秒単位で表現される。未定義なら NAN
1つ前のフィルターされた映像フレームの PTS、未定義なら NAN
1つ前に選択された映像フレームの PTS、未定義なら NAN
1つ前に選択された映像フレームの PTS、未定義なら NAN
その映像のうち最初の映像フレームの PTS、未定義なら NAN
その映像のうち最初の映像フレームの時刻、未定義なら NAN
フィルターされるフレームの種類、以下の値のうちの1つであると 考えてよい:
フレームのインターフェイスの種類、以下の値のうちの1つであると 考えてよい:
フレームが(インターレースでなく)プログレッシブ
フレームがトップフィールド先頭
フレームがボトムフィールド先頭
フィルターされるフレームがキーフレームなら1、さもなくば0
フィルターされるフレームのファイルでの位置、その情報が利用できなければ (例えば、統合されている映像)-1
select 式の既定値は"1"です。
以下はいくつかの例です:
# 入力された全てのフレームを選択する select # 同上: select=1 # 全てのフレームをスキップする: select=0 # I-フレームだけを選択する select='eq(pict_type\,I)' # 100ごとに1つフレームを選択する select='not(mod(n\,100))' # 10から20までの時間内に含まれるフレームだけを選択する select='gte(t\,10)*lte(t\,20)' # 10から20までの時間内に含まれるIフレームだけを選択する select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)' # 10秒以上間隔を空けてフレームを選択する select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
フィルター出力映像に画面アスペクト比を設定する。
これは指定されたサンプル(ピクセル)アスペクト比を変更することによって実現され、 以下の等式による: DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR
このフィルターがビデオフレームのピクセルのディメンションを変更しないこと に注意すること。またこのフィルターによって設定された画面アスペクト比は フィルターチェーンのより後の方にあるフィルターによって変更されるかもしれない、 例えば、スケーリングされたり、他の "setdar" や "setsar" フィルターが適用 されている場合など。
このフィルターは望みの画面アスペクト比を表すパラメータの文字列を 受け取る。 このパラメータは浮動小数点数の文字列か、num:den の形をした式を 取り得る。ただし num と den はアスペクト比の分子と分母 である。 パラメータが指定されていなければ、値 "0:1" が仮定される。
例えば、画面アスペクト比を 16:9 に変えるには、以下を指定する:
setdar=16:9 # 上は以下と同等: setdar=1.77777
setsar フィルターのドキュメンテーションも参照すること。
入力映像フレームの PTS (プレゼンテーションタイムスタンプ)を変更する。
eval API を通じて評価される式を入力として受け取ります。以下の定数を 含めることができる。
入力のプレゼンテーションタイムスタンプ
ギリシャ文字のパイ
黄金比
自然対数の底
0から始まる入力フレームのカウント
最初の映像フレームの PTS
現在のフレームがインターレースされているかどうか
フレームのファイルでの本来の位置、現在のフレームについて定義されていなければ 不定。
直前の入力 PTS
直前の出力 PTS
いくつかの例:
# 0から PTS を数え始める setpts=PTS-STARTPTS # ファーストモーション setpts=0.5*PTS # スローモーション setpts=2.0*PTS # 固定レート 25 fps setpts=N/(25*TB) # 固定レート 25 fps および多少の揺れ setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
フィルター出力映像のサンプル(ピクセル)アスペクト比を設定する。
このフィルターを適用する結果として、出力の画面アスペクト比も以下の 等式にしたがって変更される: DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR
このフィルターで設定されたサンプルアスペクト比は、フィルターチェーンの より後の方にあるフィルターによって変更されるかもしれない、例えば 他の "setsar" や "setdar" が適用されることによって。
このフィルターは望みのサンプルアスペクト比を表すパラメータの文字列を 受け取る。 このパラメータは浮動小数点数の文字列か、num:den の形をした 文字列である。ただし num および den はアスペクト比の 分子と分母である。 このパラメータが指定されていなければ、値 "0:1" が仮定される。
例えば、サンプルアスペクト比を 10:11 に変更するには、以下を指定すること:
setsar=10:11
出力フレームのタイムスタンプに用いる timebase を設定する。 主に timebase の構成をテストするために便利である。
入力に有理数を表す算術表現をとる。この表現には定数 "PI"、"E"、"PHI"、"AVTB"(既定の timebase)および "intb"(入力の timebase) を含めることができる。
入力のための既定の値は "intb"。
以下にいくつか例を挙げる。
# timebase を1/25にする settb=1/25 # timebase を1/10にする settb=0.1 # timebase を1001/1000にする settb=1+0.001 # timebase を intb の2倍にする settb=2*intb # 既定の timebase の値にする settb=AVTB
各入力映像フレームについてのいろいろな情報を含む行を表示する。 入力映像は変更されない。
表示される行は key:value の形をしたキー/値の組の列を 含む。
表示される各パラメーターの説明は以下のとおり:
その入力フレームの番号、0から始まる
その入力フレームのプレゼンテーションタイムスタンプ、時刻の基本単位の 数字として表現される。時刻の基本単位はフィルター入力パッドに依存する。
その入力フレームのプレゼンテーションタイムスタンプ、秒単位の数字として 表現される
入力ストリームでのそのフレームの位置、この情報が得られない、もしくは 意味がない(例えば合成映像の)場合は-1
ピクセルフォーマットの名前
その入力フレームのサンプルアスペクト比、num/den の形で 表現される
その入力フレームのサイズ、widthxheight の形で 表現される
インターレースのモード("プログレッシブ" なら "P"、トップフィールドが先頭なら "T"、ボトムフィールドが先頭なら "B")
そのフレームがキーフレームなら1、さもなくば0
その入力フレームの画像の種類(I-フレーム なら "I"、P-フレームなら "P"、
B-フレームなら "B"、不明な種類なら "?")。
AVPictureType
の enum、および ‘libavutil/avutil.h’ で
定義されている av_get_picture_type_char
関数のドキュメンテーションも
確認すること。
その入力フレームの全ての平面の Adler-32 チェックサム
その入力フレームの各平面の Adler-32 チェックサム、"[c0 c1 c2 c3]" の形で表現される
入力映像のイメージを複数のスライスとして次の映像フィルターに 渡す。
./avconv -i in.avi -vf "slicify=32" out.avi
このフィルターはスライスの高さをパラメーターとして受け取る。 このパラメーターが指定されていなければ、16という既定値を使う。
フィルターの連鎖の最初にこれを追加すると、メモリーキャッシュを より良く使ってフィルタリングがより速くなる。
入力映像をいくつかの同一の出力に分けます。
このフィルターは出力の数を指定するための1つのパラメーターを受け取ります。 指定されていなければ、既定では2です。
例えば
avconv -i INPUT -filter_complex split=5 OUTPUT
は入力映像の5つのコピーを作成します。
入力映像で行を列で置き換え、場合によっては反転させる。
これは整数値を表す1つのパラメータを受け取り、それは以下の値を 仮定します:
90°反時計回りに回転し、かつ垂直に反転する(既定値)、つまり:
L.R L.l . . -> . . l.r R.r
90°時計回りに回転する、つまり:
L.R l.L . . -> . . l.r r.R
90°反時計回りに回転する、つまり:
L.R R.r . . -> . . l.r L.l
90°時計回りに回転し、かつ垂直に反転する、つまり:
L.R r.R . . -> . . l.r l.L
入力映像をシャープにする、またはぼやけさせる。
次のパラメータを受けつける: luma_msize_x:luma_msize_y:luma_amount:chroma_msize_x:chroma_msize_y:chroma_amount
量を負の値にすると入力映像をぼやけさせ、正の値にするとシャープにする。 全てのパラメータは省略可能であり、既定の値は文字列 ’5:5:1.0:5:5:0.0’ と 同等である。
luma matrix 水平サイズを設定する。3から13までの整数で、 既定値は5。
luma matrix 垂直サイズを設定する。3から13までの整数で、 既定値は5。
luma effect 強度を設定する。-2.0から5.0までの浮動小数点数で、 既定値は1.0。
chroma matrix 水平サイズを設定する。3から13までの整数で、 既定値は5。
chroma matrix 垂直サイズを設定する。3から13までの整数で、 既定値は5。
chroma effect 強度を設定する。-2.0から5.0までの浮動小数点数で、 既定値は0.0。
# luma sharpen effect パラメータを強くする
unsharp=7:7:2.5
# luma および chroma パラメータを両方強くぼやけさせる
unsharp=7:7:-2:7:7:-2
# avconv
とともに既定値を使う
./avconv -i in.avi -vf "unsharp" out.mp4
入力映像を垂直に反転する。
./avconv -i in.avi -vf "vflip" out.avi
入力映像のインターレースを外す(yadif は "yet another deinterlacing filter" である)。
これは省略可能なパラメータを受け取る: mode:parity:auto。
mode は採用するインターレースのモードを指定する、以下の値の1つを 受け取る:
各フレームについて1フレームを出力
各フィールドについて1フレームを出力
0と同じだが空間的インターレースチェックをスキップする
1と同じだが空間的インターレースチェックをスキップする
既定値は0。
parity は入力のインターレースされる映像に対して仮定される ピクチャーフィールドパリティを指定する:
上部フィールドが最初と仮定
下部フィールドが最初と仮定
自動検出を有効にする
既定値は-1。 インターレースが不明だったりデコーダがこの情報をエクスポートしていない場合、 「上部フィールドが先頭」を仮定する。
auto はデインターレーサーがインターレーストフラグを信用し、インターレース されているとマークされているフレームだけをデインターレースするかどうかを指定する
全てのフレームをデインターレースする
インターレーストとマークされているフレームだけをデインターレースする
既定値は0。
以下が現在利用できる映像ソースの説明です。
映像フレームをバッファし、かつそれらをフィルターチェーンで利用できるようにします。
このソースは主にプログラミング用に、特に ‘libavfilter/vsrc_buffer.h’ で定義されているインターフェイスを通じて使うことを意図されています。
これは次のパラメータを受け取ります: width:height:pix_fmt_string:timebase_num:timebase_den:sample_aspect_ratio_num:sample_aspect_ratio.den
全てのパラメータが明示的に定義される必要があります。
以下が受け取るパラメータのリストです。
バッファされる映像フレームの幅と高さを指定します。
バッファされる映像フレームのピクセルフォーマットを表す文字列です。 あるピクセルフォーマットの対応する数字、もしくはピクセルフォーマットの 名前になります。
バッファされたフレームのタイムスタンプによって仮定される timebase の分子と分母を指定します。
映像フレームに仮定されるサンプルアスペクト比の分子および分母を 指定します。
例えば:
buffer=320:240:yuv410p:1:24:1:1
とすると、サイズが320x240で、フォーマットが"yuv410p"、タイムスタンプの timebase として1/24を仮定し、正方形のピクセル(1:1 のサンプルアスペクト比)の映像フレーム を受け取るソースを指示します。 名前"yuv410p"をもつピクセルフォーマットは数字6に対応する (‘libavutil/pixfmt.h’ にある enum AVPixelFormat の定義を確認してください) ので、この例は次と同じです:
buffer=320:240:6:1:24
一様に色付けされた入力を提供します。
これは次のようなパラメータを受け取ります: color:frame_size:frame_rate
受け取るパラメータの説明は以下の通りです。
ソースの色を指定します。色の名前(大文字小文字を区別しないマッチ)か アルファ値の指定を最後につけることができる 0xRRGGBB[AA] の形の列です。 既定の値は"black"です。
ソースとなる映像のサイズを指定します。widthxheight という 形の文字列か、サイズの略称となる名前になります。 既定の値は"320x240"です。
ソースとなる映像のフレームレートを指定します。秒間に生成されるフレーム数 です。frame_rate_num/frame_rate_denという形の文字列か、 整数、浮動点数小数、または適切な映像フレームレートの略称です。 既定の値は"25"です。
例えば、以下のグラフ描写は透明度0.2をもつ赤のソースで、サイズ"qcif"、 フレームレートを10パーセカンドを生成します。そして識別子"in"をもつ 詰めものに結び付けられたソースの上にそれがオーバーレイされます。
"color=red@0.2:qcif:10 [color]; [in][color] overlay [out]"
動画コンテナから映像ストリームを読み取ります。
このソースは標準入力のパスをバイパスするハックであることに注意してください。
任意のフィルターグラフをサポートしていないアプリケーションで有用になりますが、
サポートしているアプリケーションでは推奨されません。特に avconv
では
このフィルターは使うべきでなく、‘-filter_complex’ オプションが完全に
これを置き換えます。
次の構文を受け取ります: movie_name[:options]、 ただし movie_name は読み取るリソースの名前(必ずしもファイルで なくてもよく、デバイスや何らかのプロトコルでアクセスできるストリーム もあり得ます)で、options は省略可能で、":"で区切られた key=value というペアの列です。
以下は受け取れるオプションの説明です。
読み取る動画がもっているはずの形式を指定します。コンテナまたは 入力デバイスの名前になります。指定されていなければ、その形式は movie_name または中身を調べることで推測されます。
秒単位でのシークポイントを指定します。フレームはこのシークポイント
から出力が開始され、パラメータは av_strtod
によって評価
されるので数値のあとに IS 接尾辞をつけることができます。
既定の値は"0"です。
読み取る映像ストリームのインデックスを指定します。この値が-1なら、 最適な映像ストリームが自動的に選択されます。既定の値は"-1"です。
このフィルターによって、以下に示すフィルターグラフの主な入力の上に第2の 映像を重ねることができます:
input -----------> deltapts0 --> overlay --> output ^ | movie --> scale--> deltapts1 -------+
以下はいくつかの例です:
# avi ファイル in.avi の最初から3.2秒スキップし、それを # "in"とラベルがついた入力の上に重ねます。 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie]; [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out] # video4linux2 デバイスから読み取り、それを"in"とラベルがついた # 入力の上に重ねます。 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie]; [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
Null 映像ソースは画像を一切返しません。主にテンプレートとして有用で、 分析やデバッギングのツールで使われるものです。
省略可能なパラメータとして width:height:timebase という形の文字列を受け取ります。
width と height は設定されるソースの大きさを指定します。 width と height の既定値は(CIF サイズ形式に対応して) それぞれ352と288です。
timebase は timebase を表す算術表現を指定します。この表現には 定数 "PI"、"E"、"PHI"、"AVTB"(既定の timebase)を含めることができ、 既定では値 "AVTB" になります。
frei0r ソースを提供します。
このフィルターのコンパイルを有効にするには、frei0r ヘッダをインストールし Libav を –enable-frei0r つきで configure する必要があります。
このソースは次の構文をサポートします:
size:rate:src_name[{=|:}param1:param2:...:paramN]
size は生成される映像のサイズで、widthxheight の形の 文字列か、フレームサイズの略語です。 rate は生成される映像のレートで、num/den の形の 文字列か、フレームレートの略語です。 src_name はロードされる frei0r ソースの名前です。frei0r に関する 更なる情報やどのようにパラメータを設定するかについては、映像フィルターの説明にある セクション frei0r を読んでください。
いくつかの例:
# frei0r partik0l ソースをサイズ 200x200 およびフレームレート10で生成し、 # overlay フィルターの主な入力の上に重ねる。 frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
rgbtestsrc
ソースは RGB 対 BGR の問題を検出するのに便利な
RGB テストパターンを生成します。上から下へ赤、緑、青の縞模様が
見えるはずです。
testsrc
はテスト映像パターンを生成し、それは色のパターン、
スクロールするグラデーション、およびタイムスタンプを表示します。
これは主にテストの目的としているものです。
どちらのソースも省略可能な ":" で区切られた key=value の組の列を 受け取ります。受け取るオプションの説明は以下のとおりです。
ソースになる映像のサイズを指定します。widthxheight の形をした文字列、 またはサイズの略称です。既定値は "320x240" です。
ソースになる映像のフレームレートを、毎秒生成されるフレーム数で指定します。 frame_rate_num/frame_rate_den の形をした文字列か、整数値、 浮動小数点数、あるいは有効な映像のフレームレートの略称です。 既定値は "25" です。
ソースになる映像のサンプルアスペクト比を設定します。
ソースになる映像の時間を設定します。受け取る構文は次のとおりです:
[-]HH[:MM[:SS[.m...]]] [-]S+[.m...]
av_parse_time()
関数も参照してください。
指定されていない、もしくは表現された時間が負の値なら、映像は際限なく生成される ものとします。
例えば、以下の
testsrc=duration=5.3:size=qcif:rate=10
は、サイズが176x144で、毎秒10フレームのフレームレートで5.3秒間持続する映像を 生成します。
以下が現在利用可能な映像シンクの説明です。
映像フレームをバッファリングし、フィルターグラフの末尾でそれらを利用できる ようにします。
このシンクは ‘libavfilter/buffersink.h’ で定義されているインターフェイス を通じてプログラム的に使うためのものです。
Null 映像シンクは、入力映像について全く何もしません。主にテンプレートとして 有用であり、分析やデバッギングのツールで使われるものです。
Libav はメディアファイルからメタデータを INI のような単純な UTF-8 エンコード されたテキストファイルにダンプすることができ、そしてそれをメタデータ muxer/demuxer を使ってロードすることができます。
このファイルフォーマットは次のようなものです:
ffmetadata ファイルはこのような感じです:
;FFMETADATA1 title=bike\\shed ;this is a comment artist=Libav troll team [CHAPTER] TIMEBASE=1/1000 START=0 #chapter ends at 0:01:00 END=60000 title=chapter \#1 [STREAM] title=multi\ line