使用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"
并仍然收到错误消息
请帮助您制定正确的命令格式
答案 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
答案 1 :(得分:1)
我终于能够在ffmpeg下使用网络摄像头的声音部分了。正确的方法是不将硬件值括在引号中。请勿将硬件括在引号中:
ffmpeg -f alsa -i plughw:CARD=U0x46d0x821,DEV=0
而不是:
ffmpeg -f alsa -i "plughw:CARD=U0x46d0x821,DEV=0"
我希望这有助于其他人。