avprobe Documentation


Table of Contents


1 概要

一般的な構文は次のとおりです:

avprobe [options] [‘input_file’]

2 説明

avprobe はマルチメディアストリームから情報を集めて、 ヒトあるいはマシンが読める形にそれを出力します。

例えば、あるマルチメディアストリームによって使われている コンテナの形式、それに含まれている各メディアストリームの 形式やタイプを確認するために使うことができます。

入力でファイル名を指定すれば、avprobe はそれを開いて そのファイルの内容を調査しようとします。そのファイルが開けない、 またはマルチメディアファイルとして認識できなかった場合には、 正の終了コードを返します。

avprobe はスタンドアロンのアプリケーションとしても使えますし、 より洗練された処理、例えば統計処理やプロットを実行する テキストフィルターと組み合わせて使うこともできます。

オプションは avprobe によってサポートされている形式のいくつかを 並べ上げるため、もしくはどの情報を表示するか指定するため、 どのように avprobe がそれを表示するのか設定するために使われます。

avprobe の出力は INI または JSON パーザーによってパースしやすいように 設計されています。

コンテナまたはストリーム内に保存されているメタデータタグは認識され、 文字列"TAG:"を前につけた上で、 対応する"FORMAT"もしくは"STREAM"セクションで印字されます。

3 オプション

数値のオプションは全て(そうではないと明記していない限り) 1つの数を表す入力文字列を受け取ります。それには国際単位系の接頭辞 (例えば ’K’、’M’、’G’)を1つ含めてもかまいません。 この接頭辞の直後に ’i’ を付け加えると、10の累乗の代わりに2の累乗 が使われます。 ’B’ という接尾辞は値を8倍し、また他の接尾辞に付け加えても単独でも どちらでも使えます。これによって例えば ’KB’、’MiB’、’G’ や ’B’ が接尾辞として許されます。

引数をとらないオプションはブール値のオプションであり、対応する値を true にします。オプション名の前に "no" をつけることで false に できます。例えば、コマンドラインで "-nofoo" とすることで "foo" という 名前のブール値のオプションが false になります。

3.1 ストリーム指定子

オプションには、例えばビットレートやコーデックのように、ストリームごとに適用されるものがあります。 ストリーム指定子は与えられたオプションがどのストリームに属するかを正確に指定するために使われます。

ストリーム指定子は文字列で、コロンによって区切られた省略可能なオプションの名前を追加されます。 例えば -codec:a:1 ac3 というオプションは a:1 というストリーム指定子を含み、 これは2番目の音声ストリームに対応します。したがってこのオプションは2番目の音声ストリームの ac3 コーデックを選択します。

ストリーム指定子はいくつかのストリームにマッチし、その場合それら全てにそのオプションは 適用されます。例えば -b:a 128k でのストリーム指定子は全ての音声ストリームに マッチします。

空のストリーム指定子は全てのストリームにマッチし、例えば -codec copy あるいは -codec: copy は再エンコーディングすることなしに全てのストリームをコピーします。

可能なストリーム指定子の形は以下のとおりです:

stream_index

このインデックスを持つストリームにマッチします。例えば -threads:1 4 は 2番目のストリームのスレッドカウントを4に設定します。

stream_type[:stream_index]

stream_type は次のいずれかです: 映像のための ’v’、音声のための ’a’、 字幕のための ’s’、データのための ’d’、アタッチメントのための’t’。 stream_index が与えられていれば、その種類のストリーム番号 stream_index のものにマッチします。 さもなくばその種類の全てのストリームにマッチします。

p:program_id[:stream_index]

stream_index が与えられていれば、id program_id を持つプログラムの ストリーム番号 stream_index のものにマッチします。さもなくば そのプログラムの全てのストリームにマッチします。

3.2 一般的なオプション

これらのオプションは av* ツールの間で共有されます。

-L

ライセンスを表示します。

-h, -?, -help, --help [arg]

ヘルプを表示します。省略可能なパラメーターで特定の項目についての ヘルプを表示するように指定できます。

arg に可能な値は:

decoder=decoder_name

decoder_name という名前のデコーダーについての詳細な情報を表示します。 全てのデコーダーの一覧を取得するには ‘-decoders’ オプションを使ってください。

encoder=encoder_name

encoder_name という名前のエンコーダーについての詳細な情報を表示します。 全てのエンコーダーの一覧を取得するには ‘-encoders’ オプションを使ってください。

demuxer=demuxer_name

demuxer_name という名前のデミュクサーについての詳細な情報を表示します。 全てのミュクサーおよびデミュクサーの一覧を取得するには ‘-formats’ オプションを使ってください。

muxer=muxer_name

muxer_name という名前のミュクサーについての詳細な情報を表示します。 全てのミュクサーおよびデミュクサーの一覧を取得するには ‘-formats’ オプションを使ってください。

-version

バージョンを表示します。

-formats

利用可能なフォーマットを表示します。

フォーマット名の前にあるフィールドは次のような意味があります:

D

デコーディングが利用できる

E

エンコーディングが利用できる

-codecs

libavcodec に認識される全てのコーデックを表示します。

この文書では’コーデック’という用語はより正確にはメディアビットストリーム形式 とよぶべきものの短縮名であることに注意してください。

-decoders

利用可能なデコーダーを表示します。

-encoders

利用可能なエンコーダーを表示します。

-bsfs

利用可能な bitstream フィルターを表示します。

-protocols

利用可能なプロトコルを表示します。

-filters

利用可能な libavfilter フィルターを表示します。

-pix_fmts

利用可能な pixel フォーマットを表示します。

-sample_fmts

利用可能なサンプルフォーマットを表示します。

-loglevel loglevel | -v loglevel

そのライブラリで使用されるログの冗長さを設定します。 loglevel は以下の値の1つを含んだ数値または文字列:

quiet
panic
fatal
error
warning
info
verbose
debug

既定ではプログラムは標準エラー出力にログを出力し、端末が色付けに 対応していれば、エラーと警告に印をつけるように色が使われます。 ログの色付けは環境変数 AV_LOG_FORCE_NOCOLOR または NO_COLOR をセットすることで無効にでき、 また環境変数 AV_LOG_FORCE_COLOR をセットすることで強制できます。 環境変数 NO_COLOR の利用は非推奨で、今後の Libav のバージョンでは なくなる予定です。

3.3 AVOptions

これらのオプションは libavformat、libavdevice および libavcodec によって 直接提供されています。利用できる AVOptions の一覧を見るには、‘-help’ オプションを使ってください。これらは2つのカテゴリーに分けられます:

generic

これらのオプションはどのコンテナ、コーデック、またはデバイスでも設定できます。 Generic オプションはコンテナ/デバイスについては AVFormatContext オプションの 下に、コーデックについては AVCodecContext オプションの下にあります。

private

これらのオプションは特定のコンテナ、デバイス、またはコーデック専用のものです。 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 を 指定するという、従来の文書化されていない方法は、現在非推奨で近いうちに削除されます。

3.4 主なオプション

-f format

format を使うよう強制します。

-of formatter

ドキュメントを出力するために特定のフォーマッターを使います。以下のフォーマッター が利用可能です

ini
json
old

擬似的な INI 形式で、以前のバージョンの avprobe ではこれだけが 使われていました。

-unit

表示される値の単位を表示します。

-prefix

表示される値について SI プレフィックスを用います。 "-byte_binary_prefix"オプションが使われていない限り 全てのプレフィックスは10進数で表されます。

-byte_binary_prefix

バイトの値のために2進数のプレフィックスを使うよう強制します。

-sexagesimal

時刻の値のために sexagesimal 形式 HH:MM:SS.MICROSECONDS を使います。

-pretty

表示される値の形式を見目好くします、これはオプション "-unit -prefix -byte_binary_prefix -sexagesimal"に対応します。

-show_format

入力マルチメディアストリームのコンテナ形式についての情報を 表示します。

全てのコンテナ形式情報は"FORMAT"と名前のついたセクションで 表示されます。

-show_format_entry name

-show_format’ のように、コンテナ形式の情報を表示しますが、 全てではなく指定されたエントリーについてだけ表示します。 このオプションは2つ以上与えることができ、その場合指定された全ての エントリーが表示されます。

-show_packets

入力マルチメディアストリームに含まれる各パケットについての情報を表示 します。

各単一パケットについての情報は "PACKET" という専用のセクションで 表示されます。

-show_streams

入力マルチメディアストリームに含まれる各メディアストリームについての 情報を表示します。

各メディアストリームの情報は"STREAM"と名前のついた専用のセクション で表示されます。

4 デミュクサー

デミュクサーは特定の種類のファイルからマルチメディアストリームを 読むことを可能にする Libav での構成される要素です。

Libav のビルドを構成する際、既定では全ての対応されるデミュクサーが 有効になります。全ての利用可能なデミュクサーを configure オプション "–list-demuxers" を使って一覧できます。

configure オプション "–disable-demuxers" を使って全てのデミュクサーを 無効にできます。そしてオプション "–enable-demuxer=DEMUXER" で 1つのデミュクサーを選択的に有効にでき、オプション "–disable-demuxer=DEMUXER" で1つのデミュクサーを選択的に無効にできます。

ff* ツールの "-formats" オプションは有効になっているデミュクサーの 一覧を表示します。

現在利用可能なデミュクサーのいくつかの説明は以下の通りです。

4.1 image2

画像ファイルデミュクサー。

このデミュクサーはパターンで指定された画像ファイルのリストを読みます。

パターンは文字列 "%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

4.2 applehttp

Apple HTTP Live Streaming デミュクサー。

このデミュクサーは全ての種類のストリームから全ての AVStreams を取り出します。 id フィールドはそのビットレートに応じたインデックス番号に設定されます。 AVStreams の discard フラグを設定する(avplay では ’a’ または ’v’ を押す) ことによって、呼び出し側が実際に受け取るストリームの種類を決定できます。 ストリームが属する種類の全体のビットレートは "variant_bitrate" と名付け られているメタデータキーで取れます。

5 ミュクサー

ミュクサーはマルチメディアストリームを特定の種類のファイルに 書き出すことを可能にする Libav での構成される要素です。

Libav のビルドを構成する際、既定ではサポートしているミュクサーが全て 有効になります。全ての利用可能なミュクサーを configure オプション --list-muxers を使って一覧できます。

configure オプション --disable-muxers を使って全てのミュクサーを 無効にできます。そしてオプション --enable-muxer=MUXER / --disable-muxer=MUXER で1つのミュクサーを選択的に有効 / 無効にできます。

ff* ツールの -formats オプションは有効になっているミュクサーの 一覧を表示します。

現在利用可能なミュクサーのいくつかの説明は以下の通りです。

5.1 crc

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 ミュクサーも参照してください。

5.2 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 ミュクサーも参照してください。

5.3 image2

画像ファイルのミュクサー。

このミュクサーは映像フレームを画像ファイルに書き出します。

出力ファイル名はパターンによって指定されます。このパターンは 順番に番号が振られているファイルの並びを生成するために使えます。 パターンは文字列 "%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

5.4 MOV/MP4/ISMV

mov/mp4/ismv ミュクサーはフラグメンテーションをサポートします。通常、 MOV/MP4 ファイルは1つのロケーションに保存されている全てのパケットに ついてのあらゆるメタデータを持っています(ファイルの末尾に書かれており、 より良い再生のために qt-faststart ツールを使って先頭に動か せます)。フラグメント化したファイルは多くのフラグメントからなり、 パケットとこれらのパケットについてのメタデータは一緒に保存されます。 フラグメント化されたファイルを書き出すと、書き出しが割り込まれたとして もデコードできる(通常の MOV/MP4 ファイルでは適切に終了しないとデコード できません)上、とても長いファイルを書き出すときにより少ないメモリしか 要さない(なぜなら通常の MOV/MP4 ファイルでは、ファイルを閉じるまでに メモリ上で1つ1つのパケットについての情報を保存するからです)という 利点があります。欠点は他のアプリケーションとの互換性がより低い点です。

フラグメンテーションは、どのようにファイルをフラグメントに分けるかを 定義した AVOptions の1つを設定することで有効になります。

-movflags frag_keyframe

各映像キーフレームで新しいフラグメントを開始する

-frag_duration duration

durationマイクロ秒の長さのフラグメントを作成する

-frag_size size

sizeバイトまでのペイロードデータを含むフラグメントを作成する

-movflags frag_custom

いつフラグメントに分けるかをマニュアルで選択する caller を許可する、 av_write_frame(ctx, NULL) を呼ぶことでそれまでに書き出された パケットとともにフラグメントを出力する。(これは avconv からではなく、libavformat と統合された他のアプリケーションでのみ 有用)

-min_frag_duration duration

durationマイクロ秒より短い時間のフラグメントを作成しない。

複数の条件を指定した場合、指定された条件のうちの1つが満たされたときに フラグメントが切り出されます。これについての例外は -min_frag_duration で、その他の適用条件が満たされていなければ なりません。

加えて、出力ファイルを書き出すやり方はその他の少数のオプションを 通じて調節できます:

-movflags empty_moov

サンプルの記述することなしに、先頭の moov アトムを直接ファイルの 最初に書き出す。一般に、通常の MOV/MP4 ファイルとして、mdat/moov ペアはファイルの最初に書き出され、ファイルのごく一部のみを占める。 このオプションを設定した場合、先頭の mdat アトムはなくなり、moov アトムはトラックだけを記述しその持続時間は0となる。

このオプションを設定して書き出したファイルは QuickTime では動作しない。 ismv (Smooth Streaming) ファイルを書き出す際、このオプションが暗黙に設定される。

-movflags separate_moof

各トラックごとに別々の 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)

5.5 mpegts

MPEG トランスポートストリームミュクサー。

このミュクサーは ISO 13818-1 と ETSI EN 300 468 の一部を実装しています。

このミュクサーのオプションは以下のとおりです:

-mpegts_original_network_id number

original_network_id を設定します(既定では 0x0001)。 これは DVB でのネットワークの一意な識別子です。主な利用法は パス Original_Network_ID, Transport_Stream_ID を通じたサービスの 一意な識別にあります。

-mpegts_transport_stream_id number

transport_stream_id を設定します(既定では 0x0001)。これは DVB での transponder を識別します。

-mpegts_service_id number

DVB での program として知られている service_id を設定します(既定では 0x0001)。

-mpegts_pmt_start_pid number

PMT のための最初の PID を設定します(既定では 0x1000, 最大で 0x1f00)。

-mpegts_start_pid number

データパケットのための最初の PID を設定します(既定では 0x0100, 最大で 0x0f00)。

mpegts ミュクサーで認識できるメタデータの設定は service_providerservice_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

5.6 null

Null ミュクサー。

このミュクサーは出力ファイルを全く生成しません。主にテストや ベンチマークの目的で有用です。

例えば、avconv でのデコーディングのベンチマークを取るには、 次のコマンドが使えます:

avconv -benchmark -i INPUT -f null out.null

上のコマンドは ‘out.null’ ファイルを読み書きしませんが、 しかし avconv の構文で必要とされている出力ファイルを指定している ことに注意してください。

あるいはこのコマンドを次のようなに書くこともできます:

avconv -benchmark -i INPUT -f null -

5.7 matroska

Matroska コンテナーミュクサー。

このミュクサーは matroska および webm コンテナー仕様を実装しています。

このミュクサーが理解できるメタデータ設定は以下のものです:

title=title name

シングルトラックに与える名前

language=language name

Matroska 言語フォームでトラックの言語を指定します

STEREO_MODE=mode

シングル映像トラックでの2つのビューのステレオ 3D レイアウト

mono

映像はステレオでない

left_right

Both views are arranged side by side, Left-eye view is on the left

bottom_top

Both views are arranged in top-bottom orientation, Left-eye view is at bottom

top_bottom

Both views are arranged in top-bottom orientation, Left-eye view is on top

checkerboard_rl

Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first

checkerboard_lr

Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first

row_interleaved_rl

Each view is constituted by a row based interleaving, Right-eye view is first row

row_interleaved_lr

Each view is constituted by a row based interleaving, Left-eye view is first row

col_interleaved_rl

Both views are arranged in a column based interleaving manner, Right-eye view is first column

col_interleaved_lr

Both views are arranged in a column based interleaving manner, Left-eye view is first column

anaglyph_cyan_red

All frames are in anaglyph format viewable through red-cyan filters

right_left

Both views are arranged side by side, Right-eye view is on the left

anaglyph_green_magenta

All frames are in anaglyph format viewable through green-magenta filters

block_lr

Both eyes laced in one Block, Left-eye view is first

block_rl

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

5.8 segment

基本的なストリームセグメンター。

セグメンターミュクサーはほぼ固定の期間にいくつかの分かれたファイルにストリームを 出力します。出力ファイルのパターンは image2 と同様のやり方で設定すること ができます。

各セグメントは、映像ストリームがあれば、映像のキーフレームから始まります。 このセグメントミュクサーは単一の定数フレームレートの映像で一番うまく働きます。

オプションで、作成されたセグメントの箇条書きリスト(セグメントごとに1行)を 生成することができます。

segment_format format

内部のコンテナフォーマットを上書きします、既定ではファイル名の拡張子から 推測されます。

segment_time t

セグメントの期間を t 秒間と設定します。

segment_list name

name という名前でリストファイルを生成します。

segment_list_size size

size 個のエントリーに逹したらリストファイルを上書きします。

segment_wrap limit

limit に達したらセグメントインデックスを折り返します。

avconv -i in.mkv -c copy -map 0 -f segment -list out.list out%03d.nut

5.9 mp3

MP3 ミュクサーは先頭に ID3v2 ヘッダーをつけて(そしてオプションで ID3v1 タグを末尾 につけて)生の MP3 ストリームを書き出します。IDv2.3 と ID3v2.4 に対応しており、 id3v2_version オプションでどちらを使うのか制御します。レガシーの ID3v1 タグは既定では書き出されませんが、write_id3v1 オプションで有効にできます。

シーク可能な出力のために、このミュクサーは Xing フレームも先頭に書き出します。 これはファイル内のフレームの数を含みます。これは VBR ファイルの時間幅を計算する ために便利です。

このミュクサーは画像(APIC フレーム)を添付した ID3v2 を書き出すことに対応しています。 この画像は単一のパケットをもつ映像ストリームの形でミュクサーに渡されます。そういった ストリームはいくらあってもよく、それぞれ単一の APIC フレームに対応します。 ストリームメタデータタグである titlecomment は APIC での descriptionpicture 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

6 プロトコル

プロトコルは、特定のプロトコルを使用するために必要になるリソースへの アクセスを可能にする Libav 上の構成される要素です。

Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての プロトコルが有効になっています。configure オプション "–list-protocols" を使うと 全ての利用可能なプロトコルがリストアップされます。

configure オプション "–disable-protocols" を使えば全てのプロトコルを無効にする ことができ、 "–enable-protocol=PROTOCOL" で特定のプロトコルを選択して有効にでき、 または "–disable-protocol=PROTOCOL" で特定のプロトコルを無効にできます。

ff* ツールのオプション "-protocols" はサポートされているプロトコル のリストを表示します。

現在利用可能なプロトコルの説明は以下の通りです。

6.1 concat

物理的な連結プロトコル。

多くのリソースから順に、1つの独自のリソースであるかのように 読んだりシークしたりできます。

このプロトコルが受け取る URL は次の構文を持ちます:

concat:URL1|URL2|...|URLN

ただし URL1URL2、...、URLN は連結されるリソースの URL で、それぞれは異なるプロトコルを指定していてもかまいません。

例えばファイル列 ‘split1.mpeg’、‘split2.mpeg’、‘split3.mpeg’ を avplay で読むには、次のコマンドを使ってください:

avplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg

多くのシェルで特別扱いされる文字 "|" をエスケープしなけばならないかもしれない ことに注意してください。

6.2 file

ファイルアクセスプロトコル。

1つのファイルから、または1つのファイルに向けて読むことができます。

例えば avconv でファイル ‘input.mpeg’ から読むには、次のコマンドを 使ってください:

avconv -i file:input.mpeg output.mpeg

ff* ツールは既定ではこのファイルプロトコルを使います。 すなわち "FILE.mpeg" という名前で指定されたリソースは URL "file:FILE.mpeg" であるかのように解釈されます。

6.3 gopher

Gopher プロトコル。

6.4 hls

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 を 直接使ってください。

6.5 http

HTTP (ハイパーテキストトランスファープロトコル)。

6.6 mmst

TCP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。

6.7 mmsh

HTTP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。

要求される構文は:

mmsh://server[:port][/app][/playpath]

6.8 md5

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 出力プロトコルが一緒だと失敗することに注意してください。

6.9 pipe

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)出力プロトコルがシーク可能である必要が あり、したがってパイプ出力プロトコルが一緒だと失敗することに注意してください。

6.10 rtmp

リアルタイムメッセージングプロトコル。

リアルタイムメッセージングプロトコル(RTMP)は TCP/IP ネットワーク越しの マルチメディアコンテントのストリーミングに用いられます。

必要となる構文は:

rtmp://server[:port][/app][/instance][/playpath]

受け取るパラメータは以下の通りです:

server

RTMP サーバーのアドレスです。

port

利用される TCP ポートの番号です(既定では1935です)。

app

アクセスするアプリケーションの名前です。たいていの場合 RTMP サーバー にそのアプリケーションがインストールされているパスになります。 (例えば ‘/ondemand/’、‘/flash/live/’、など)。URI からパース されたこの値を rtmp_app オプションを通じて上書きすることも できます。

playpath

app で指定されうアプリケーションから参照され再生される リソースのパスまたは名前です。"mp4:"が先頭につくかもしれません。 URI からパースされたこの値を rtmp_playpath オプションで 上書きすることもできます。

listen

サーバーとして振舞い、やってくる接続を待ち受けます。

timeout

やってくる接続を待ち続ける時間の最大値です。listen となります。

加えて、以下のパラメーターがコマンドラインオプション(または AVOption のコード)を通じて設定できます:

rtmp_app

RTMP サーバーに接続するアプリケーションの名前。このオプションは URI で 指定されたパラメーターを上書きします。

rtmp_buffer

クライアントのバッファ時間をミリ秒単位で設定します。既定値は3000です。

rtmp_conn

任意に追加する 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 シーケンスを構築するために複数回使えます。

rtmp_flashver

SWF プレーヤーを実行するのに使われる Flash プラグインのバージョン。 既定では LNX 9,0,124,2 です。

rtmp_flush_interval

同じリクエストに書き出されるパケットの数(RTMPT のみ)。既定値は 10です。

rtmp_live

メディアがライブストリームであると指定します。ライブストリームではレジュームも シークもできません。既定値は any で、これはサブスクライバーはまず プレイパスで指定されたライブストリームを再生しようとします。この名前のライブ ストリームが見つからなければ、録画されたストリームを再生します。その他に 可能な値は live または recorded です。

rtmp_pageurl

メディアが埋め込まれているウェブページの URL です。既定ではいかなる値も送信 されません。

rtmp_playpath

再生もしくは公開するためのストリーム識別子です。このオプションは URI で 指定されたパラメーターを上書きします。

rtmp_subscribe

サブスクライブするライブストリームの名前です。既定では何の値も送信されません。 このオプションが指定されたとき、もしくは rtmp_live が live に設定されたとき のみ送信されます。

rtmp_swfhash

圧縮の展開された SWF ファイルの SHA256(32バイト)。

rtmp_swfsize

圧縮の展開された SWF ファイルのサイズ、SWFVerification のために必要です。

rtmp_swfurl

メディアのための SWF プレーヤーの URL です。既定では何の値も送信されません。

rtmp_swfverify

プレーヤーの swf ファイルへの URL、ハッシュおよびサイズは自動的に計算します。

rtmp_tcurl

ターゲットのストリームの URL です。既定値は proto://host[:port]/app です。

例えば avplay で RTMP サーバー "myserver" からアプリケーション "vod" で "sample" という名前のマルチメディアリソースを読むには:

avplay rtmp://myserver/vod/sample

6.11 rtmpe

暗号化された Real-Time Messaging Protocol です。

暗号化された Real-Time Messaging Protocol (RTMPE)は、Diffie-Hellman 鍵交換 および HMACSHA256 からなる、RC4 鍵のペアを生成する標準の暗号基盤の範囲内で マルチメディアコンテントをストリーミングするために用いられます。

6.12 rtmps

安全な SSL 接続経由の Real-Time Messaging Protocol です。

Real-Time Messaging Protocol (RTMPS) は暗号化された接続を通してマルチメディア コンテントをストリーミングするために用いられます。

6.13 rtmpt

HTTP 経由のトンネル Real-Time Messaging Protocol です。

HTTP 経由のトンネル Real-Time Messaging Protocol (RTMPT)は、ファイアウォールを 迂回するように HTTP リクエストの範囲でマルチメディアコンテントをストリーミング するためのものです。

6.14 rtmpte

HTTP 経由でトンネリングされた暗号化 Real-Time Messaging Protocol です。

HTTP 経由でトンネリングされた暗号化 Real-Time Messaging Protocol (RTMPTE) はファイアウォールを迂回するよう HTTP リクエストの範囲内でマルチメディアコンテント をストリーミングするために用いられます。

6.15 rtmpts

HTTPS 経由でトンネリングされた Real-Time Messaging Protocol です。

HTTPS 経由でトンネリングされた Real-Time Messaging Protocol (RTMPTS) はファイア ウォールを迂回するように HTTPS の範囲でマルチメディアコンテントをストリーミング するためのものです。

6.16 rtmp、rtmpe、rtmps、rtmpt、rtmpte

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つで、 serverportapp および 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"

6.17 rtp

リアルタイムプロトコル。

6.18 rtsp

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

下位トランスポートプロトコルに UDP を使います。

tcp

下位トランスポートプロトコルに(RTSP コントロールチャンネル内で交互にした) TCP を使います。

udp_multicast

下位トランスポートプロトコルに UDP マルチキャストを使います。

http

下位トランスポートプロトコルに http トンネリングを使います。これは 受動的なプロキシに対して便利です。

複数の下位トランスポートプロトコルを指定することが許されており、その場合 一度に1つだけ試されます(1つの設定に失敗したら、次のものが試されます)。 muxer については、tcpudp のみがサポートされています。

rtsp_flags のフラグ:

filter_src

ネゴシエーションしたピアのアドレスとポートのみからパケットを受け取ります。

listen

サーバーとして動作し、やってくる接続を待ち受けます。

UDP 越しにデータを受け取る際に、demuxer は受け取ったパケットを並べ直そうと します(これらが順番になっていない、もしくは全体的にパケットが失われている かもしれないからです)。AVFormatContext の max_delay フィールドで 最大の遅延を0に設定することで、これを無効にできます。

avplay でマルチビットレート Real-RTSP ストリームを観る際、 表示するストリームとして -vst n および -ast n で 映像と音声それぞれを選択できます。そして作動中に va を押すことで切り替えることが可能です。

コマンドラインの例:

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

6.19 sap

セッションアナウンスメントプロトコル(RFC 2974)。これは技術的には libavformat のプロトコルハンドラではなく、muxer および demuxer です。 分離されたポート上で定期的にストリームに対して SDP を通知することによって、 RTP ストリームのシグナリングのために使用されます。

6.19.1 Muxer

muxer に渡される SAP url のための構文は次の通りです:

sap://destination[:port][?options]

RTP パケットはポート portdestination に対して送信され、 ポートが指定されていない場合にはポート 5004 に対して送信されます。 options& で区切られたリストです。以下のオプションを サポートしています:

announce_addr=address

通知を送りつける送信先の IP アドレスを指定する。 省略されていれば、通知は共通して利用されている SAP アナウンスメント マルチキャストアドレス 224.2.127.254 (sap.mcast.net)に、もしくは destination が IPv6 アドレスならば ff0e::2:7ffe に送信される。

announce_port=port

通知を送りつけるポートを指定する、指定されなければ 既定で 9875。

ttl=ttl

通知と RTP パケットのための time to live 値を指定する、 既定では 255。

same_port=0|1

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]

6.19.2 Demuxer

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]

6.20 tcp

トランスミッションコントロールプロトコル。

TCP url のために要求される構文は以下のとおり:

tcp://hostname:port[?options]
listen

外から入ってくる接続を待ち受ける

avconv -i input -f format tcp://hostname:port?listen
avplay tcp://hostname:port

6.21 udp

ユーザーデータグラムプロトコル。

UDP url に要する構文は:

udp://hostname:port[?options]

options は & で区切られた key=val の形のオプションのリストを含む。 サポートされているオプションのリストは以下の通り:

buffer_size=size

UDP バッファサイズをバイト数で設定する

localport=port

バインドするローカル UDP ポートを上書きする

localaddr=addr

ローカル IP アドレスを選択する。これは例えばマルチキャストを送信し ホストが複数のインターフェイスを持つときに、どの IP アドレスの インターフェイスに送るか選択する際に便利です。

pkt_size=size

UDP パケットのバイトサイズを設定する

reuse=1|0

UDP ソケットの再利用を明示的に有効または無効にする

ttl=ttl

time to live 値を設定する(マルチキャストについてのみ)

connect=1|0

UDP ソケットを connect() で初期化する。 この場合、送り先アドレスは後から ff_udp_set_remote_url で変えることができない。 送り先のアドレスが開始時に分からない場合、このオプションを ff_udp_set_remote_url で指定することもできる。 これによって getsockname でパケットの送り元アドレスを見つけることができ、 書き出しの際 "destination unreachable" を受け取った場合には AVERROR(ECONNREFUSED) を返す。 受信にlについては、これによって指定されているピアのアドレス/ポートからのパケット のみを受け取るという効用がある。

sources=address[,address]

指定された送信者 IP アドレスの1つからマルチキャストグループへ送られたパケットのみ 受信する。

block=address[,address]

指定された送信者 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

7 Input Devices

入力デバイスは、Libav 上でシステムに取り付けられたマルチメディアデバイスから やって来るデータにアクセスすることを許す構成された要素です。

Libav のビルドを構成(configure)する際は、既定ではサポートされている全ての 入力デバイスが有効になっています。configure オプション "–list-indevs" を使うと 全ての利用可能な入力デバイスがリストアップされます。

configure オプション "–disable-indevs" を使えば全ての入力デバイスを無効にする ことができ、 "–enable-indev=INDEV" で特定の入力デバイスを選択して有効にでき、 または "–disable-indev=INDEV" で特定の入力デバイスを無効にできます。

ff* ツールのオプション "-formats" は(demuxer と一緒に)サポートされている入力デバイス のリストを表示します。

現在利用可能な入力デバイスの説明は以下の通りです。

7.1 alsa

ALSA (Advanced Linux Sound Architecture) 入力デバイス。

configure でこの入力デバイスを有効にするには、システムに libasound がインストールされて いる必要があります。

このデバイスによって ALSA デバイスからキャプチャすることができます。キャプチャする デバイスの名前は ALSA カード識別子でなくてはなりません。

ALSA 識別は次の構文をもちます:

hw:CARD[,DEV[,SUBDEV]]

ただし DEVSUBDEV という成分は省略できます。

この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

7.2 bktr

BSD 映像入力デバイス。

7.3 dv1394

Linux DV 1394 入力デバイス。

7.4 fbdev

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) も参照してください。

7.5 jack

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/

7.6 libdc1394

IIDC1394 入力デバイス、libdc1394 および libraw1394 に基づいています。

7.7 oss

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

7.8 pulse

pulseaudio 入力デバイス。

configure 時にこの入力デバイスを有効にするには、libpulse-simple が システムにインストールされている必要があります。

入力デバイスに与えられるファイル名はソースのデバイス、もしくは文字列 "default" です。

pulse ソースデバイスとそのプロパティを一覧するには、コマンド ‘pactl list sources’ を呼び出すことで可能です。

avconv -f pulse -i default /tmp/pulse.wav

7.8.1 server AVOption

構文は以下のとおりです:

-server server name

特定のサーバーに接続します。

7.8.2 name AVOption

構文は以下のとおりです:

-name application name

アクティブなクライアントを表示するのに pulse が利用するアプリケーションの名前を 指定します、既定では "libav" です

7.8.3 stream_name AVOption

構文は以下のとおりです:

-stream_name stream name

アクティブなストリームを表示するときに pulse が利用するストリームの名前を 指定します、既定では "record" です

7.8.4 sample_rate AVOption

構文は以下のとおりです:

-sample_rate samplerate

サンプルレートを Hz で指定します、既定では 48kHz が用いられます

7.8.5 channels AVOption

構文は以下のとおりです:

-channels N

利用するチャンネルを指定します、既定では 2 (ステレオ)が設定されます

7.8.6 frame_size AVOption

構文は以下のとおりです:

-frame_size bytes

フレームごとのバイト数を指定します、既定では1024です。

7.8.7 fragment_size AVOption

構文は以下のとおりです:

-fragment_size bytes

pulseaudio で最小のバッファリングフラグメントを指定します、音声のレイテンシに 影響します。既定では設定されません。

7.9 sndio

sndio 入力デバイス。

この入力デバイスを configure を通じて有効にするには、システムに libsndio がインストールされていなければなりません。

入力デバイスに与えるファイル名は sndio 入力デバイスを表すデバイス ノードであり、たいていの場合 ‘/dev/audio0’ に設定されます。

例えば、avconv を使って ‘/dev/audio0’ からグラブするには 次のコマンドを使ってください:

avconv -f sndio -i /dev/audio0 /tmp/oss.wav

7.10 video4linux2

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

7.11 vfwcap

VfW (Video For Windows) キャプチャ入力デバイス。

入力として渡すファイル名はキャプチャドライバー番号で、0から9の範囲です。 ドライバーの一覧を表示するために "list" をファイル名に使えます。 それ以外のファイル名はデバイス番号0として解釈されます。

7.12 x11grab

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

7.12.1 follow_mouse AVOption

構文は以下のとおり:

-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

7.12.2 show_region AVOption

構文は以下のとおり:

-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