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.
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.
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>
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!
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:
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 !!
Verwenden Sie Audio Recorder , um Audio Source = Internal Audio Analog Stereo (Audio Input) aufzunehmen. Siehe Screenshot unten.
Ich habe gerade den Audiorecorder installiert: https://launchpad.net/audio-recorder der in seinen Optionen anzeigt, was Sie brauchen ...