Хотя для обеспечения аудиоустройства могут быть другие инструменты, Arecord предоставляется по умолчанию в Ubuntu 16.04.
Команда для отображения доступных звуковых устройств (команда и вывод в моем случае следует) :
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC889A Analog [ALC889A Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 2: ALC889A Alt Analog [ALC889A Alt Analog]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 2: C525 [HD Webcam C525], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 4: HDMI [USB Capture HDMI], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
В этом случае звук веб-камеры является аппаратным устройством Card 2. Спецификация устройства для Arecord в этом случае равна hw:2.
Проблема в вопросе, по выходному сигналу ошибки, находится по умолчанию в программе захвата ffmpeg. Он генерирует ошибку cannot set channel count to 2 (Invalid argument), потому что веб-камера, по-видимому, использует аудиоканал 1 для его захвата, в то время как приложение захвата ffmpeg, по-видимому, пытается захватить из аудиоканала 2 (который является каналом захвата по умолчанию ffmpeg).
[d9 ] Захват звука из веб-камеры работает из приложений графического интерфейса, потому что у них, по-видимому, есть механизм захвата для определения доступного аудиоканала для ввода и вытягивания с этого канала.ffmpeg
Чтобы указать канал захвата для приложения ffmpeg, используйте -ac [channel #] перед аргументом -i.
Для команды в вопросе внесите это изменение:
[d14 ] Изменить От:$ ffmpeg -f alsa -i hw:2 -t 30 out.wav
Изменить От:
$ ffmpeg -f alsa -ac 1 -i hw:2 -t 30 out.wav
Хотя для обеспечения аудиоустройства могут быть другие инструменты, Arecord предоставляется по умолчанию в Ubuntu 16.04.
Команда для отображения доступных звуковых устройств (команда и вывод в моем случае следует) :
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC889A Analog [ALC889A Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 2: ALC889A Alt Analog [ALC889A Alt Analog]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 2: C525 [HD Webcam C525], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 4: HDMI [USB Capture HDMI], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
В этом случае звук веб-камеры является аппаратным устройством Card 2. Спецификация устройства для Arecord в этом случае равна hw:2.
Проблема в вопросе, по выходному сигналу ошибки, находится по умолчанию в программе захвата ffmpeg. Он генерирует ошибку cannot set channel count to 2 (Invalid argument), потому что веб-камера, по-видимому, использует аудиоканал 1 для его захвата, в то время как приложение захвата ffmpeg, по-видимому, пытается захватить из аудиоканала 2 (который является каналом захвата по умолчанию ffmpeg).
Захват звука из веб-камеры работает из приложений графического интерфейса, потому что у них, по-видимому, есть механизм захвата для определения доступного аудиоканала для ввода и вытягивания с этого канала.
ffmpeg
Чтобы указать канал захвата для приложения ffmpeg, используйте -ac [channel #] перед аргументом -i.
Для команды в вопросе внесите это изменение:
Изменить От:
$ ffmpeg -f alsa -i hw:2 -t 30 out.wav
Изменить От:
$ ffmpeg -f alsa -ac 1 -i hw:2 -t 30 out.wav
Хотя для обеспечения аудиоустройства могут быть другие инструменты, Arecord предоставляется по умолчанию в Ubuntu 16.04.
Команда для отображения доступных звуковых устройств (команда и вывод в моем случае следует) :
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC889A Analog [ALC889A Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 2: ALC889A Alt Analog [ALC889A Alt Analog]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 2: C525 [HD Webcam C525], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 4: HDMI [USB Capture HDMI], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
В этом случае звук веб-камеры является аппаратным устройством Card 2. Спецификация устройства для Arecord в этом случае равна hw:2.
Проблема в вопросе, по выходному сигналу ошибки, находится по умолчанию в программе захвата ffmpeg. Он генерирует ошибку cannot set channel count to 2 (Invalid argument), потому что веб-камера, по-видимому, использует аудиоканал 1 для его захвата, в то время как приложение захвата ffmpeg, по-видимому, пытается захватить из аудиоканала 2 (который является каналом захвата по умолчанию ffmpeg).
Захват звука из веб-камеры работает из приложений графического интерфейса, потому что у них, по-видимому, есть механизм захвата для определения доступного аудиоканала для ввода и вытягивания с этого канала.
ffmpeg
Чтобы указать канал захвата для приложения ffmpeg, используйте -ac [channel #] перед аргументом -i.
Для команды в вопросе внесите это изменение:
Изменить От:
$ ffmpeg -f alsa -i hw:2 -t 30 out.wav
Изменить От:
$ ffmpeg -f alsa -ac 1 -i hw:2 -t 30 out.wav
, похоже, вы нашли свое рабочее решение:
ffmpeg -f alsa -i plughw:CARD=C525,DEV=0 -t 30 out.wav
hw:CARD=C525,DEV=0 лучше, чем при использовании hw:3,0 USB-устройствам может быть присвоен другой номер карты имя карты позволяет избежать возможной ошибки при изменении номера устройства
plughw:, чем hw: plughw имеет дело с любым преобразованием сэмплера
, похоже, вы нашли свое рабочее решение:
ffmpeg -f alsa -i plughw:CARD=C525,DEV=0 -t 30 out.wav
hw:CARD=C525,DEV=0 лучше, чем при использовании hw:3,0 USB-устройствам может быть присвоен другой номер карты имя карты позволяет избежать возможной ошибки, если номер устройства изменяется
plughw: - лучший вариант, чем hw: plughw имеет дело с любым преобразованием сэмплера
, похоже, вы нашли свое рабочее решение:
ffmpeg -f alsa -i plughw:CARD=C525,DEV=0 -t 30 out.wav
hw:CARD=C525,DEV=0 лучше, чем при использовании hw:3,0 USB-устройствам может быть присвоен другой номер карты имя карты позволяет избежать возможной ошибки, если номер устройства изменяется
plughw: - лучший вариант, чем hw: plughw имеет дело с любым преобразованием сэмплера