使用ffmpeg录制来自网络摄像头的声音

时间:2012-07-24 06:04:50

标签: ffmpeg webcam audio-recording

使用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"

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"

ffmpeg -f alsa -i "usb-046d_0821_6813BFD0-00,DEV=0"

并仍然收到错误消息

请帮助您制定正确的命令格式

2 个答案:

答案 0 :(得分:1)

也许这有效:

ffmpeg -f alsa -r 16000 -i hw:2,0 -f video4linux2 -s 800x600 -i /dev/video0 -r 30 -f avi -vcodec mpeg4 -vtag xvid -sameq -acodec libmp3lame -ab 96k output.avi

Source

答案 1 :(得分:1)

我终于能够在ffmpeg下使用网络摄像头的声音部分了。正确的方法是不将硬件值括在引号中。请勿将硬件括在引号中:

ffmpeg -f alsa -i plughw:CARD=U0x46d0x821,DEV=0

而不是:

ffmpeg -f alsa -i "plughw:CARD=U0x46d0x821,DEV=0"

我希望这有助于其他人。