Как отформатировать команду ffmpeg для записи звука с моей веб-камеры

Используя ffmpeg arecord -L, я могу идентифицировать мою веб-камеру Logitech как:

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

Могли бы помочь с формулировкой правильного формата команды?

2 ответа

Вот правильный путь:

  1. Выпустить arecord -L команда.
  2. Ищите plughw значения, которые соответствуют вашему оборудованию. Обратите внимание, что plughw представляет собой аппаратное обеспечение, которое было подключено к компьютеру.
  3. Перепроверьте значения в /dev/snd/by-id каталог.
    • Когда вы отключите веб-камеру (и), by-id Подкаталог исчезнет из /dev/snd каталог. Это отличный тест, чтобы подтвердить, какие plughw это внешне подключенное устройство.
  4. Указанный там идентификатор звукового устройства будет таким же или соответствует одному из значений, полученных из arecord -L команда.
  5. Команда для использования ffmpeg: -f alsa -i plughw,
  6. Обратите внимание, НЕ заключайте значение plughw в кавычки.
  7. Рабочий пример для меня был:

    ffmpeg -f alsa -i plughw:CARD=U0x46d0x821,DEV=0 -acodec libmp3lame -t 20 output.mp4
    
  8. Вы можете добавить видео часть к вышеупомянутой команде, добавив:

    -f video4linux2 -i /dev/video0
    

Надеюсь, это поможет. Любой связанный вопрос (ы) приветствуется.

Я быстро прочитал справочную страницу по ffmpeg, и они рекомендуют поискать в /proc/asound/cards

У меня есть две карты на моей машине 0 и 1, и моя веб-камера равна 1, поэтому команда для меня

ffmpeg -f alsa -i hw:1
Другие вопросы по тегам