Ffmpeg arecord -Lを使用すると、Logitech usbウェブカメラを次のように識別できます。
hw:CARD=U0x46d0x821,DEV=0
USB Device 0x46d:0x821, USB Audio
Direct hardware device without any conversions
plughw:CARD=U0x46d0x821,DEV=0
USB Device 0x46d:0x821, USB Audio
Hardware device with all software conversions
/ dev/snd/by-idにアクセスすると、ウェブカメラは次のように記述されます:
usb-046d_0821_6813BFD0-00 -> ../controlC1
Ffmpegでサウンドデバイスを使用するコマンドは
ffmpeg -f alsa -i $ALSA_DEVICE_NAME..
私が試してみました
ffmpeg -f alsa -i "hw:CARD=U0x46d0x821,DEV=0" and
ffmpeg -f alsa -i "plughw:CARD=U0x46d0x821,DEV=0"
どちらの場合も同じエラーメッセージが表示されます
ALSA lib pcm.c:2208:(snd_pcm_open_noupdate) Unknown PCM hw=CARD=U0x46d0x821,DEV=0
[alsa @ 0x9c96580] cannot open audio device hw=CARD=U0x46d0x821,DEV=0 (No such file or directory)
hw:CARD=U0x46d0x821,DEV=0: Input/output error
私も試しました
ffmpeg -f alsa -i "usb-046d_0821_6813BFD0-00" and
ffmpeg -f alsa -i "usb-046d_0821_6813BFD0-00,DEV=0" and have still received error message
コマンドの正しい形式を定式化する際にいくつかのヘルプを使用できます
正しい方法は次のとおりです。
arecord -L
コマンドを発行します。plughw
値を探します。 plughwは、コンピューターに接続されているハードウェアを表すことに注意してください。/dev/snd/by-id
ディレクトリの値をクロスチェックします。by-id
サブディレクトリが/dev/snd
ディレクトリから消えます。これは、どのplughw
が外部プラグインデバイスであるかを確認する優れたテストです。arecord -L
コマンドから取得した値の1つと同じか、対応しています。ffmpeg: -f alsa -i plughw
です。私の実例は次のとおりです。
ffmpeg -f alsa -i plughw:CARD=U0x46d0x821,DEV=0 -acodec libmp3lame -t 20 output.mp4
以下を追加することにより、上記のコマンドにビデオ部分を追加できます。
-f video4linux2 -i /dev/video0
これがお役に立てば幸いです。関連する質問は大歓迎です。
私はffmpegのマニュアルページをすばやく読んだので、/ proc/asound/cardsを調べることをお勧めします
マシン0と1に2枚のカードがあり、Webカムは1なので、コマンドは
ffmpeg -f alsa -i hw:1