1. Input Devices

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

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

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

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

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

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

1.2 bktr

BSD 映像入力デバイス。

1.3 dv1394

Linux DV 1394 入力デバイス。

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

1.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/

1.6 libdc1394

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

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

1.8 pulse

pulseaudio 入力デバイス。

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

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

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

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

1.8.1 server AVOption

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

 
-server server name

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

1.8.2 name AVOption

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

 
-name application name

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

1.8.3 stream_name AVOption

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

 
-stream_name stream name

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

1.8.4 sample_rate AVOption

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

 
-sample_rate samplerate

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

1.8.5 channels AVOption

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

 
-channels N

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

1.8.6 frame_size AVOption

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

 
-frame_size bytes

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

1.8.7 fragment_size AVOption

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

 
-fragment_size bytes

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

1.9 sndio

sndio 入力デバイス。

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

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

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

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

1.10 video4linux および video4linux2

Video4Linux および Video4Linux2 入力映像デバイス。

グラブするデバイスの名前はファイルデバイスノードです。たいていの Linux システムは、デバイス(例えば USB ウェブカム)をシステムに差し込んだ際、 そういったノードを自動的に作成するようになっています。そして ‘/dev/videoN’ のような名前を持ちます。ただし N は そのデバイスに結びつけられた番号です。

Video4Linux と Video4Linux2 デバイスは限られた種類の widthxheight サイズとフレームレートのみに対応しています。いずれに対応しているかを確認するために、 例えば Video4Linux デバイスならコマンド ‘dov4l’、そして Video4Linux2 デバイスならコマンド -list_formats all が使えます。

デバイスのサイズが 0x0 に設定されている場合、入力デバイスは使用するサイズを 自動検出しようとします。 video4linux2 デバイスに限っては、フレームレートが0/0に設定されている場合、 入力デバイスはドライバーで既に設定されているフレームレートの値を使います。

Video4Linux 対応は Linux 2.6.30 から非推奨になっており、今後のバージョンで 無くなるでしょう。

以下が ff* ツールで video4linux デバイスを使う例です。

 
# Video4linux デバイスの入力をグラブし表示します。
# フレームレートは既定の25/1です。
avplay -s 320x240 -f video4linux /dev/video0

# Video4linux2 デバイスの入力をグラブし表示します。サイズは自動調整です。
avplay -f video4linux2 /dev/video0

# Video4linux2 デバイスの入力をグラブし録画します。サイズは自動調整です。
# フレームレートは既定で0/0なので、video4linux2 ドライバーから読み取ります。
avconv -f video4linux2 -i /dev/video0 out.mpeg

1.11 vfwcap

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

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

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

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

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