入力デバイスは、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