web-dev-qa-db-fra.com

linux arecord: capturer la sortie de la carte plutôt que l'entrée du microphone

J'essaie de capturer la sortie de la carte son et de l'encoder au format Vorbis ogg à l'aide de la commande suivante:

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

Cependant, l'entrée de microphone de l'ordinateur est enregistrée plutôt que la sortie de la carte son.

Le résultat de la commande arecord -l est

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

Le résultat de la commande arecord -L est contenu dans cette entrée Pastebin .

La page de manuel arecord indique que le périphérique d'entrée peut être sélectionné à l'aide de l'indicateur -D, mais ne donne aucun exemple syntaxique.

Je voudrais savoir comment changer l’entrée pour arecord du microphone à la carte son. Les alternatives basées sur une interface graphique telles qu'Audacity ne m'intéressent pas. Merci.

Edit: J'utilise Debian 7.0 (stable) avec arecord version 1.0.25, vorbis-tools version 1.4.0 et la version du pilote ALSA 1.0.24.

19
user001

Je suggère d'utiliser le pilote de bouclage ALSA. Pour le charger:

Sudo modprobe snd-aloop

Cela devrait ajouter un nouveau périphérique de capture à la sortie de arecord -L.

Si vous ne possédez qu'une seule carte son physique sur votre ordinateur, vous pouvez définir la carte son en boucle comme valeur par défaut pour toutes les applications en créant un fichier .asoundrc dans votre dossier de départ avec le contenu suivant:

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

Tant que ce fichier est en place, toute sortie audio de toutes les applications doit aller à l'adaptateur de bouclage plutôt qu'à vos haut-parleurs. Spécifiez simplement le bon périphérique dans votre commande arecord et une fois que vous avez terminé, supprimez le fichier .asoundrc pour revenir à la normale.

6
beveradb

des années plus tard, la lutte continue ... comment spécifier le périphérique d'enregistrement, voici:

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

Donc, le format de la chaîne de périphérique est hw:<card>,<device>

format of device id

4
Maciej Jankowski

J'ai eu le même problème et j'ai trouvé une autre solution ici . L'idée principale est d'utiliser pacat. Pour moi cela fonctionne comme ceci:

1) trouver le dispositif de surveillance:

$ 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) Capturer l'audio dans un fichier:

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

3) Convertir le fichier en wav:

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

C'est tout!

4
hochl

Votre matériel ne prend pas en charge la capture de sa sortie. une fois que les données sont entrées dans le périphérique de lecture, elles disparaissent.

Vous devez utiliser un logiciel qui duplique les données audio avant de les écrire sur le matériel.

Je suggérerais d'utiliser PulseAudio; Là, vous pouvez simplement sélectionner l’une de ses sorties comme source de capture: pavucontrol output monitoring

3
CL.
  1. Allez dans Contrôle du volume PulseAudio -> onglet Périphériques d'entrée. En bas, choisissez d'afficher "TOUS les périphériques d'entrée". Vérifiez si "Moniteur de l'audio interne Stéréo analogique" n'est pas mis en sourdine et que le volume monte et descend lorsque vous jouez l'audio!

  2. Utilisez Audio Recorder pour enregistrer la source audio = Audio interne Stéréo analogique (entrée audio). Voir la capture d'écran ci-dessous.

enter image description here

1
Zid

Je viens d'installer un enregistreur audio: https://launchpad.net/audio-recorder qui, dans ses options, indique ce dont vous avez besoin ...

enter image description here

0
SergioAraujo