Obwohl meine Artikel in letzter Zeit ein wenig Audio-lastig sind, habe ich noch einen in dieser Richtung. Die Anforderung ist, ein Audiosignal, welches auf eurem Computer wiedergegeben wird (interne Lautsprecher oder eingestöpselte Kopfhörer) mitzuschneiden. Ihr möchtet das aktuell Gehörte in einer Audio-Datei speichern. Wie geht das?
Die Anforderung klingt trivial, ist sie aber nicht. Was kommt euch als Erstes in den Sinn? Vermutlich VNC oder Audacity. Ja, mit beiden Anwendungen ist eine Monitor-Aufnahme möglich, jedoch nicht ohne Gefrickel. Als fortgeschrittene Linux-Anwender:in möchte man diese einfache Aufgabe am liebsten mit einem Befehl im Terminal erledigen.
Hier steht, wie das geht. Die Voraussetzung dafür ist, dass euer System Pipewire im Audiostack verwendet. Das sollte bei allen aktuellen GNU/Linux-Distributionen der Fall sein. Falls ihr euch nicht sicher seid, könnt ihr das mit diesem Befehl im Terminal überprüfen:
ps -e | grep pipewire
1778 ? 00:00:01 pipewire
1780 ? 00:00:01 pipewire-pulse
Pipewire bietet den Befehl pw-record an, um Audio aufzunehmen. pw-record befindet sich im Paket pipewire-audio, was evtl. zuerst installiert werden muss. Ob das nötig ist, seht ihr, indem ihr diesen Befehl ausführt:
pw-record --help
pw-record [options] [<file>|-]
-h, --help Show this help
--version Show version
-v, --verbose Enable verbose operations
...
Bevor man pw-record ausführt, sollte man wissen, von welcher Quelle (target) man aufnehmen möchte. Es genügt nicht zu sagen, dass man das aufnehmen möchte, was gerade abgespielt wird. Um die verfügbaren Targets zu erfahren, kann man diesen Befehl verwenden:
wpctl status
PipeWire 'pipewire-0' [1.0.3, ralf@ralf, cookie:591754417]
└─ Clients:
31. pipewire [1.0.3, ralf@ralf, pid:1780]
41. GNOME Shell Volume Control [1.0.3, ralf@ralf, pid:1294]
68. Firefox [1.0.3, ralf@ralf, pid:2252]
69. spotify [1.0.3, ralf@ralf, pid:6]
(unvollständige Ausgabe)
Dort seht ihr z. B. spotify als Client (target). Damit wisst ihr, wie der Aufnahme-Befehl aussehen kann:
pw-record --target spotify test.flac
Dieser Befehl erzeugt keine Ausgabe im Terminal über den Verlauf der Aufnahme. Sobald ihr Ctrl+c drückt, wird die Aufnahme beendet. Ihr findet die Datei (test.flac) im Verzeichnis, in dem ihr den Befehl ausgeführt habt. pw-record kennt weitere Optionen, die ihr hier findet.
Hier ist die Zusammenfassung:
- Voraussetzungen: pipewire, pipewire-audio
- Verfügbare Targets ermitteln: wpctl status
- Aufnehmen: pw-record --target [Name des Targets] [Name der Audio-Datei]
Wer häufig die lokale Audiowiedergabe mitschneiden möchte, kann sich einen Alias für pw-record anlegen. Falls das Target und die Ziel-Datei gleich bleiben, könnte der Alias so aussehen:
alias record='pw-record --target Firefox aufnahme.flac'
Nun kann man durch Eingabe des Befehls record im Termin das aufnehmen, was Firefox gerade abspielt.
Nachtrag: Wie den Kommentaren zu entnehmen ist, funktioniert das nicht mit der Dateiendung mp3, wohl aber mit flac. Falls man mp3 als Dateiendung nimmt, wird kein MP3, sondern eine PCM-Datei aufgenommen.
Für alle, denen das zu kompliziert ist, gibt es die Flatpak-Anwendung Recorder. Diese macht genau das, was ich bisher beschrieben habe. Dabei muss man nicht einmal das Target auswählen. Die Anwendung ist selbsterklärend.
Der Mitschnitt der Audio-Ausgabe auf einem Linux-PC ist kein Hexenwerk. Sowohl über die Kommandozeile, als auch mit einer grafischen Anwendung kommt man schnell und unkompliziert zum Ziel.
Quellen:
> Tut es nicht auch der "Tonaufzeichner" des Gnome-Projekts?
Was ist der "Tonaufzeichner des GNOME-Projekts"?
> @Ralf:
> Was ist der "Tonaufzeichner des GNOME-Projekts"?
> Das Dingens heißt "gnome-sound-recorder".
> Die Software befindet sich im offiziellen Repository von Debian, so dass keine Fremdquelle benötigt wird.
> Ihre Oberfläche ist einfach wie funktional und funktioniert tadellos.
> Deine Arbeitsschritte sind imho zwar "interessant", aber umständlich und unnötig, wenn man den Tonaufzeichner von Gnome hat.
Ich habe den mal installiert und ausprobiert. Der nimmt nur vom eingebauten Mikrofon auf. Die Quellen kann man nicht auswählen. Ausserdem ist die Entwicklung vor 3 Jahren stehengeblieben: https://gitlab.gnome.org/World/vocalis/-/releases Da ist Recorder doch die bessere Alternative zur Kommandozeile: https://flathub.org/apps/com.github.alexkdeveloper.recorder
> Ich kann etwa unter Firefox ein Youtube-Video oder eine Mediathek-Aufzeichnung öffnen und den Ton dann mit dem Gnome-Sound-Recorder aufnehmen.
> Was bedeutet schon "ist die Entwicklung vor 3 Jahren stehengeblieben", wenn eine Software tadellos funktioniert?
> Soll man auch einer Giraffe ein fünftes Bein implantieren?
> P.S.
> Du schreibst: "...Die Anforderung ist, ein Audiosignal, welches auf eurem Computer wiedergegeben wird (interne Lautsprecher oder eingestöpselte Kopfhörer) mitzuschneiden...".
> Mein PC hat kein Mikrofon. Der Gnome-Sound-Recorder nimmt bei meinem System (Debian-Stable / Gnome3 / Wayland) wie gefordert ein Audiosignal vom internen Lautsprecher oder Kopfhörer hervorragend auf.
> Bei Debian fahre ich mit der Stable-Version und dem offiziellen Repository produktiv nutzend sehr gut und frage mich, warum manche Leute sich mit Testing oder gar Sid herumplagen. Ich habe den Eindruck, dass es Mode wird, alles flatmäßige installieren zu wollen und zeitgeistmäßig immer das Neueste haben zu wollen, auch wenn man es eigentlich gar nicht braucht.
> P.S. 2
> https://wiki.gnome.org/Apps/SoundRecorder
...interessante Sache. Nach dieser Anleitung wird bei mir dann aber ein pcm-Audio (mit einer mp3-Extension) abgelegt, nicht etwa ein mp3-Audio. Nachteil ist dann natürlich, daß die Datei zu groß wird, aber keine entsprechende Qualität gegenübersteht, weil das Ausgangsmaterial bereits komprimiert ist (hier mp3 mit vermutlich 160 kb/s einer Musik-Radio-Sendung aus der WDR-Audiothek als Test).
Bei mir ebenfalls. Mit Angabe einer Datei auf
.flac
wurde es tatsächlich eine FLAC :) (sagt jeweilsfile
)Danke für eure Hinweise. Ich kann bestätigen, dass 'pw-record --target [Quelle] test.mp3' keine MP3-Datei aufnimmt, sondern PCM. Falls man flac als Dateiendung verwendet, funktioniert es: 'pw-record --target [Quelle] test.flac'
Ich mag zu diesem Zweck Audio-Recorder https://aur.archlinux.org/packages/audio-recorder Das erlaubt auch zeitgeusterte Aufnahmen