linux arecord: captura a saída da placa de som em vez da entrada do microfone

17

Estou tentando capturar a saída da placa de som e codificá-la no formato Vorbis ogg usando o seguinte comando:

arecord -f cd -t raw | oggenc - -r -o file.ogg

No entanto, a entrada de microfone do computador é gravada em vez da saída da placa de som.

A saída do comando arecord -l é

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

A saída do comando arecord -L está contida nesta entrada pastebin .

A página arecord man indica que o dispositivo de entrada pode ser selecionado usando o sinalizador -D , mas não fornece exemplos sintáticos.

Gostaria de saber como alterar a entrada de arecord do microfone para a placa de som. Não estou interessado em alternativas baseadas em GUI, como o Audacity. Obrigado.

Edit: Estou executando o Debian 7.0 (estável) com arecord versão 1.0.25, vorbis-tools versão 1.4.0 e o driver ALSA versão 1.0.24.

    
por user001 19.05.2013 / 04:30

6 respostas

5

Sugiro usar o driver de loopback do ALSA. Para carregá-lo:

sudo modprobe snd-aloop

Isso deve adicionar um novo dispositivo de captura à saída de arecord -L .

Se você tiver apenas uma placa de som física em seu computador, poderá tornar a placa de som de loopback o padrão para todos os aplicativos, criando um arquivo .asoundrc em sua pasta pessoal com o seguinte conteúdo:

pcm.!default {
    type hw
    card 1
    device 0
}

Enquanto este arquivo está no lugar, qualquer saída de som de todos os aplicativos deve ir para o adaptador de loopback, em vez de seus alto-falantes reais. Apenas especifique o dispositivo correto no seu comando arecord e, assim que estiver pronto, remova o arquivo .asoundrc para voltar ao normal.

    
por 19.05.2013 / 04:55
4

Eu tive o mesmo problema e encontrei outra solução aqui . A ideia principal é usar pacat . Para mim funciona assim:

1) localize o dispositivo do monitor:

$ 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) Capture o áudio para o arquivo:

$ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw

3) Converta o arquivo para wav :

sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 dump.raw output.wav

É isso aí!

    
por 21.12.2016 / 17:54
3

Seu hardware não suporta a captura de sua saída; uma vez que os dados tenham entrado no dispositivo de reprodução, ele desapareceu.

Você precisa usar algum software que duplique os dados de áudio antes que eles sejam gravados no hardware.

Eu sugeriria usar o PulseAudio; lá você pode simplesmente selecionar uma de suas saídas como fonte de captura:

    
por 20.05.2013 / 14:06
1
  1. Ir para o Controle de volume do PulseAudio - > Guia Dispositivos de Entrada. Na parte inferior, escolha mostrar "TODOS os dispositivos de entrada". Verifique se o "Monitor de Áudio Estéreo Analógico Interno" não está mudo e o volume subindo e descendo conforme você reproduz o áudio !!

  2. Use Áudio Recorder para gravar Audio Source = Internal Audio Analog Stereo (Entrada de Áudio). Veja a captura de tela abaixo.

    
por 13.09.2013 / 21:17
1

anos depois, a luta continua ... como especificar o dispositivo de gravação, e eis que:

➜  ~ 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...  

Portanto, o formato da string do dispositivo é hw:<card>,<device>

    
por 24.10.2016 / 18:04
0

Acabei de instalar o gravador de áudio: link que em suas opções mostra o que você precisa ...

    
por 18.05.2015 / 13:53