Linux arecord: захват вывода звуковой карты, а не микрофонного входа
Я пытаюсь захватить выход звуковой карты и кодировать его в формате Vorbis ogg с помощью следующей команды:
arecord -f cd -t raw | oggenc - -r -o file.ogg
однако записывается микрофонный вход компьютера, а не выход звуковой карты.
вывод команды arecord -l
is
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
вывод команды arecord -L
содержится в запись pastebin.
на arecord
man-страница показывает, что устройство ввода можно выбрать с помощью the -D
flag, но не дает синтаксических примеров.
Я хотел бы знать, как изменить вход для arecord
от микрофона к звуковой карте. Я не заинтересован в GUI альтернативы, такие как Audacity. Благодаря.
Edit: я использую Debian 7.0 (стабильный) с arecord
версия 1.0.25, vorbis-tools
версия 1.4.0 и версия 1.0.24 драйвера ALSA.
6 ответов
Я бы предложил использовать драйвер замыкания на себя ALSA. Чтобы загрузить его:
sudo modprobe snd-aloop
Это должно добавить новое устройство захвата к выходу из arecord -L
.
если у вас есть только одна физическая звуковая карта в вашем компьютере, вы можете сделать звуковую карту замыкания на себя по умолчанию для всех приложений, создав файл .asoundrc
в вашей домашней папке со следующим содержимым:
pcm.!default {
type hw
card 1
device 0
}
в то время как этот файл находится на месте, любой звук, выводимый из всех приложений, должен идти к адаптеру замыкания на себя а не ваши настоящие динамики. Просто укажите правильное устройство в вашей команде arecord и как только вы закончите, удалите .asoundrc
файл, чтобы вернуться к нормальному состоянию.
у меня была такая же проблема и я нашел другое решение здесь. Основная идея заключается в использовании pacat
. Для меня это работает так:
1) найти монитор устройства:
$ pacmd list | grep "\.monitor"
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor/#0: Monitor of HDA NVidia Digital Stereo (HDMI)
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#2: Monitor of Built-in Audio Analog Stereo
2) захват аудио в файл:
$ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw
3) преобразовать файл в wav
:
sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 dump.raw output.wav
вот именно!
ваше оборудование не поддерживает захват его вывода; Как только данные вошли в фактическое устройство воспроизведения, он ушел.
вы должны использовать программное обеспечение, которое воспроизводит аудио данных перед записью на оборудование.
Я бы предложил использовать PulseAudio; там вы можете просто выбрать один из его выходов в качестве источника захвата:
годы спустя борьба продолжается... как указать записывающее устройство, глядь:
➜ ~ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
➜ ~ arecord -f S16_LE -r 44100 --device="hw:1,0" plik.wav
Recording WAVE 'plik.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
^C
Aborted by signal Interrupt...
таким образом, формат строки устройства hw:<card>,<device>
перейти к PulseAudio регулятор громкости - > вкладка устройства ввода. Внизу выберите Показать "все устройства ввода". Проверьте, если "монитор внутреннего аудио аналогового стерео" не отключен, а громкость происходит вверх и вниз, как вы играете аудио!!
использовать Аудио-Рекордер для записи источника звука = внутренний аналоговый аудио стерео (аудио вход). См. скриншот ниже.
Я только что установил Audio-recorder:https://launchpad.net/audio-recorder который в своих вариантах показывает что вам нужно...
Другие вопросы alsa audio audio-recording linux