Input Devices
*************

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

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

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

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

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

alsa
====

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

bktr
====

BSD 映像入力デバイス。

dv1394
======

Linux DV 1394 入力デバイス。

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

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/

libdc1394
=========

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

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

pulse
=====

pulseaudio 入力デバイス。

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

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

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

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

SERVER AVOption
---------------

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

     -server SERVER NAME

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

NAME AVOption
-------------

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

     -name APPLICATION NAME

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

STREAM_NAME AVOption
--------------------

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

     -stream_name STREAM NAME

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

SAMPLE_RATE AVOption
--------------------

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

     -sample_rate SAMPLERATE

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

CHANNELS AVOption
-----------------

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

     -channels N

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

FRAME_SIZE AVOption
-------------------

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

     -frame_size BYTES

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

FRAGMENT_SIZE AVOption
----------------------

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

     -fragment_size BYTES

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

sndio
=====

sndio 入力デバイス。

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

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

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

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

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

vfwcap
======

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

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

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

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

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