web-dev-qa-db-de.com

Linux Arecord: Erfassen Sie die Soundkartenausgabe und nicht die Mikrofoneingabe

Ich versuche, die Soundkartenausgabe zu erfassen und sie mit dem folgenden Befehl im Vorbis-Ogg-Format zu codieren:

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

Der Mikrofoneingang des Computers wird jedoch anstelle des Soundkartenausgangs aufgezeichnet.

Die Ausgabe des Befehls arecord -l ist

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

Die Ausgabe des Befehls arecord -L ist in diesem Pastebin-Eintrag enthalten.

Die Manpage arecord gibt an, dass das Eingabegerät mit dem Flag -D ausgewählt werden kann, enthält jedoch keine syntaktischen Beispiele.

Ich möchte wissen, wie ich den Eingang für arecord vom Mikrofon auf die Soundkarte ändern kann. Ich interessiere mich nicht für GUI-basierte Alternativen wie Audacity. Vielen Dank.

Bearbeiten: Ich verwende Debian 7.0 (stabil) mit arecord Version 1.0.25, vorbis-tools Version 1.4.0 und ALSA-Treiberversion 1.0.24.

19
user001

Ich würde vorschlagen, den ALSA-Loopback-Treiber zu verwenden. So laden Sie es:

Sudo modprobe snd-aloop

Dadurch sollte der Ausgabe von arecord -L ein neues Aufnahmegerät hinzugefügt werden.

Wenn Sie nur eine physische Soundkarte in Ihrem Computer haben, können Sie die Loopback-Soundkarte zum Standard für alle Apps machen, indem Sie in Ihrem Basisordner eine Datei .asoundrc mit folgendem Inhalt erstellen:

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

Solange diese Datei vorhanden ist, sollte die Audioausgabe aller Anwendungen an den Loopback-Adapter und nicht an Ihre tatsächlichen Lautsprecher gesendet werden. Geben Sie einfach das richtige Gerät in Ihrem Befehl arecord an. Wenn Sie fertig sind, entfernen Sie die Datei .asoundrc, um zum Normalzustand zurückzukehren.

6
beveradb

jahre später geht der Kampf weiter ... wie man das Aufnahmegerät spezifiziert, siehe da:

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

Das Format für die Gerätezeichenfolge lautet also hw:<card>,<device>

format of device id

4

Ich hatte das gleiche Problem und fand hier eine andere Lösung . Die Hauptidee ist, pacat zu verwenden. Bei mir funktioniert es so:

1) Monitorgerät finden:

$ 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) Audio in Datei aufnehmen:

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

3) Datei in wav konvertieren:

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

Das ist es!

4
hochl

Ihre Hardware unterstützt die Erfassung der Ausgabe nicht. Sobald die Daten in das eigentliche Wiedergabegerät eingegangen sind, sind sie verschwunden.

Sie müssen eine Software verwenden, die die Audiodaten dupliziert, bevor sie auf die Hardware geschrieben werden.

Ich würde vorschlagen, PulseAudio zu verwenden. Dort können Sie einfach einen seiner Ausgänge als Aufnahmequelle auswählen: pavucontrol output monitoring

3
CL.
  1. Gehen Sie zu PulseAudio Volume Control -> Input Devices Tab. Wählen Sie unten "ALLE Eingabegeräte". Überprüfen Sie, ob der "Monitor des internen Audio-Analog-Stereos" nicht stummgeschaltet ist und die Lautstärke beim Abspielen des Audios lauter und leiser wird !!

  2. Verwenden Sie Audio Recorder , um Audio Source = Internal Audio Analog Stereo (Audio Input) aufzunehmen. Siehe Screenshot unten.

enter image description here

1
Zid

Ich habe gerade den Audiorecorder installiert: https://launchpad.net/audio-recorder der in seinen Optionen anzeigt, was Sie brauchen ...

enter image description here

0
SergioAraujo