![Wie kann ich die Audioausgabe von der Befehlszeile in Linux aufzeichnen?](https://rvso.com/image/1628814/Wie%20kann%20ich%20die%20Audioausgabe%20von%20der%20Befehlszeile%20in%20Linux%20aufzeichnen%3F.png)
Ich möchte die Audioausgabe in einer MP3-Datei aufzeichnen. Welche Tools und Befehle kann ich im Ubuntu-Linux-Terminal verwenden?
Antwort1
In anderen Antworten wurden die folgenden Tools vorgeschlagen: sox
, arecord
, und parec
. AußerdemRohrdrahtBenutzer können verwenden pw-cat
, obwohl die anderen Tools auch mit PipeWire funktionieren. Sie können alle einfach aufgerufen werden:
arecord
arecord --format=cd file.wav
Standardmäßig wird in gespeichert .wav
. Wenn Sie kein geeignetes Format angeben, ist die Standard-Audioqualität schlecht. Eine Funktion, die mir an diesem Programm gefällt, ist die schöne grafische Ausgabe mit Vumeter. Es unterstützt auch die dynamische Benennung von Ausgabedateien (über Stunde, Minute, Tag ...). Leider kann es nicht in OGG oder MP3 ausgeben.
sox
rec file.ext
Dieses Programm funktioniert derzeit nicht mit ZSH-Vervollständigungen. Es zeigt in seiner grafischen Ausgabe einen Zähler an, aber auch andere Informationen. Es unterstützt MP3 und OGG.
pacat
parecord file.ext
Es unterstützt MP3 und OGG. In der grafischen Ausgabe kann jedoch kein Messgerät angezeigt werden.
pw-cat
pw-record file.ext
Es ist pacat
für PipeWire. Es unterstützt benutzerdefinierte Qualitätseinstellungen für OGG und MP3, während pacat
dies nicht der Fall ist. Es verfügt auch nicht über eine gemessene grafische Ausgabe.
Um von einem anderen Audiogerät, beispielsweise einem Headset, aufzunehmen, können Sie eine der aufgeführten Methoden verwendenHierum zunächst den Namen Ihres Aufnahmegeräts zu erhalten. Beispiel:
pw-cli list-objects | grep node.name
Angenommen, dies hat „alsa_input.usb-Logitech_Wireless_Headset.mono“ ergeben, verwenden wir diesen Namen dann mit der --target
Option:
pw-record --target alsa_input.usb-Logitech_Wireless_Headset.mono file.wav
Antwort2
Zuerst müssen Sie den Namen Ihres Ausgabegeräts extrahieren:
Dazu können Sie folgende Pakete installieren:
sudo apt-get install pulseaudio-utils lame mpg123
Und Renn:
pacmd list-sinks | grep -e 'name:' -e 'index' -e 'Speakers'
Die Ausgabe könnte wie folgt aussehen:
index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
index: 23
name: <alsa_output.pci-0000_00_03.0.hdmi-surround71>
Nachdem Sie den Namen gefunden haben, können Sie den folgenden Befehl ausführen, um die Ausgabe in einer MP3-Datei aufzuzeichnen:
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | lame -r -V0 - out.mp3
Oder sox
Sie können Folgendes tun, ich fand jedoch die erste Lösung robuster:
sox -t pulseaudio alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -t mp3 test.mp3
Wenn Sie die Aufzeichnung jedoch automatisch starten und stoppen möchten, können Sie Folgendes ausführen:
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | sox -t raw -b 16 -e signed -c 2 -r 44100 - test.ogg silence 1 0.1 3% 1 3.0 3%
Die Aufnahme beginnt, wenn ein Ton an den Lautsprecher gesendet wird, und wird beendet, wenn nach 3 Sekunden nichts empfangen wird. Weitere Informationen zu sox
finden Sie in derManpage für Linux.
Antwort3
Sie könnenarecord
dafür.
Rufen Sie Ihre verfügbaren Geräte mit ab arecord -l
. Das Ergebnis ist etwa wie folgt:
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Um dann mit dem USB-Mikrofon (Karte 1, Subgerät 0) aufzunehmen, verwenden Sie beispielsweise:
arecord --device="hw:1,0" --format=s16_le --rate=48 rec_$(date "+%F_%H-%M-%S").wav
Es gibt auch -f cd
, was eine Abkürzung für ist --format=s16_le --rate=44100
.
Standard-Audioquelle festlegen
Wenn Sie keine angeben --device
, arecord
wird aufgezeichnet von derStandardAudioquelle. Um die aktuelle Standardquelle anzuzeigen, führen Sie
pactl info | grep "Default Source"
Um die Standardquelle über ein minimales Textmenü zu ändern, können Sie verwendenfzf
:
pactl set-default-source $(pactl list short sources | cut -f2 | fzf)
Das finde ich bequemer, als die Karten- und Subgeräteindizes nachzuschlagen.
Hören Sie während der Aufnahme zu
Es ist oft nützlich, ein Audiogerät anzuhören und gleichzeitig davon aufzunehmen. Wir können dies tun, indem wir arecord
das Schreiben auf Standardausgang mit -
und die Weiterleitung der Audiodaten antee
das den Ton in eine Datei schreibt und weiterleitet an aplay
:
arecord -f cd - | tee rec.wav | aplay -
Dateikonvertierung
Konvertieren Sie die WAVE-Datei in ein Format Ihrer Wahl:
Antwort4
Ein großes Lob an @Ahmad. Das hat bei mir funktioniert:
sox -e signed-integer -L -b16 -c2 -r44100 -t raw "|parec -d alsa_output.pci-0000_0c_00.4.iec958-stereo.monitor" -t mp3 -c2 -C 320.01 stream.mp3 silence 1 0.1 3% 1 3.0 3%
wo die Parameter des Eingabestroms wie folgt angezeigt werden pacmd list-sinks
:
name: <alsa_output.pci-0000_0c_00.4.iec958-stereo>
sample spec: s16le 2ch 44100Hz
properties:
alsa.resolution_bits = "16"