Blog Digitalgesellschaft Verwaltungsbetrieb Textarchiv Textarchiv Walter Kirk (✝) Impressum

 

Internetradio zeitgesteuert aufnehmen mit Sound eXchange

 

 

Vorbemerkung

Manchmal möchte man einen Audio-Stream aufnehmen und in einer Datei speichern. Also nicht in mehreren Audio-Dateien geteilt. Oder eine solche Aufnahme gelingt nicht mit anderen Programmen wie StreamRipper, weil die Livestream URL keine brauchbaren Ergebnisse ergibt.

Hierfür bietet sich das Programm Sound eXchange, Kurz: SoX, an (Linux, MacOS, Windows). Darüber hinaus ist es zweckmäßig, dass die Start- und Endzeit eingestellt werden kann.

Für SoX gibt es keine aktuell gehaltene GUI. Deshalb wird hier nur der Weg über die Kommandozeile aufgezeigt. Für zeitgerechte Aufnahmen können unter debian-basierten Linux-Distributionen das Programm SoX und die Anweisung at (execute commands at a later time) in Kombination genutzt werden.

Installation

Beide Programme können aus den Repositories heraus installiert werden:

Hierdurch werden die Programme at und sox sowie auch alle von sox unterstützen Formate installiert.

Audioausgabegerät

Zur Ermittlung der Audioausgabegeräte wird in einem Terminal eingegeben:

Das Ergebnis kann so aussehen:

Für die Aufnahme wird hier alsa_output.pci-0000_00_03.0.3.hdmi-surround.monitor ausgewählt.

Einstellungen

Livestream

Für die Aufnahme ist es notwendig, einen Livestream zu starten. Für das Beispiel wird in Firefox die gewünschte URL geöffnet.

Tonausgabe

Im Beispiel ist In den Einstellungen die Ausgabe auf HDMI einzustellen.

Sound eXchange (sox)

Syntax

sox -c 5 -v 5 -t pulseaudio alsa_output.pci-0000_00_03.0.3.hdmi-surround.monitor -t wav /geraet/media/internet/`date +"%Y%m%d-%H%M%S"`-output.wav trim 0 3540

Erläuterung

-c = Anzahl der Kanäle. Ohne Angabe sind 2 voreingestellt.

-v = Lautstärke (Gain)

-t = Audiogerät

-t = Audioformat und Speicherort

`date +"%Y%m%d-%H%M%S"`- = timestamp im Format: 20230226-150500-output.wav

-trim = start (0) Aufnahmedauer in Sekunden (3540)

Tipp

Um die 4 GB Grenze des Microsoft .wav-Format zu umgehen, ersetzt man .wav durch .w64.

Execute commands at a later time (at)

Syntax

echo sox -c 5 -v 5 - t pulseaudio Audioausgabe -t Audioformat /Speicherort trim Start Aufnahmedauer | at Zeit Tag

Mit ENTER wird die Aufnahme veranlasst. SoX wird mit den o.a. Einstellungen um die angegebene Zeit ausgeführt.

Die Zeitangabe veranlasst die Aufnahme am gleichen Tag. Wird hinter der Zeit auch das Datum im Format JJ-MM-TT angegeben, so lassen sich die Aufnahmen auch tageweise im Voraus planen.

Nach dem Start des PC werden die zukünftigen Jobs erledigt.

Aufnahme

Beispiel

Die Warnung hat in diesem Beispiel keine Bedeutung.

Mit dem o.a. Kommando wird eine Sendung um 15:05 Uhr im Umfang von 59 Minuten aufgezeichnet.

Anzeige der Aufgaben (Job-ID)

Im Beispiel ist die Job-ID 1

Löschen

SoX beenden

In diesem Beispiel kann SoX mit CTRL-C nicht so einfach gestoppt werden. Um dennoch den laufenden Prozess zu beenden, ist in einem Terminal einzugeben:

Nummer für sox herausfinden (PID_Number) und dann eingeben:

Die Nummer 3090 ist den eigenen Verhältnissen anzupassen.

Ausgabe

Im Beispiel wurde eine Datei erstellt: 20230226-150500-output.wav.

Pro und Kontra

Die Nutzung von SoX und at bedeutet:

Pro:

- das Audioformat kann ausgewählt werden, z.B..flac, .mp3, .ogg, .wav

- die Aufnahme wird automatisch beendet

- das Mithören der Aufnahme ist möglich

Kontra:

- das Audioausgabegerät ist zu ermitteln

- der Livestream muss gestartet und beendet werden.

Weitere Möglichkeiten

VLC

Im Hintergrund

Mit VLC als Client kann in einem Terminal ein Livestream im Hintergrund abgespielt werden.

Syntax

nvlc -I dummy --run-time 30 URL

nlvc -I dummy = Befehl für VLC ohne GUI

--run-time 30 = Dauer in Sekunden

URL = Internetradio Livestream Adresse

Beispiel

Kommandozeile

Die Aufzeichnung mit dem Programm VLC ist ebenfalls möglich.

Die Warnung prefetch stream error hat im Beispiel keine Bedeutung

Sonstige

Mit StreamRipper und Wget kann Internetradio ebenfalls in eine Datei aufgenommen werden. Hinweise hierzu enthalten die folgenden Blogbeiträge

Internetradio zeitgesteuert aufnehmen mit StreamRipper

Internetradio zeitgesteuert aufnehmen mit Wget.

Die Programme Gnome-Audio-Recorder oder Audio-Recorder können unter Linux hierfür grundsätzlich eingesetzt werden, sind jedoch nicht immer verfügbar, weil die Installation in den unterschiedlichen Distributionen unter Umständen nicht möglich ist.

Für zeitgesteuerte Aufnahmen kann auch der Befehl chron genutzt werden.

Mit Streamtuner2 und Audacious kann die Auswahl und das Abspielen der Sender vereinfacht werden (Linux).

Zusammenfassung

Für welchen Zweck auch immer eine einzige Audio-Datei benötigt wird, mit wenigen Einstellungen lassen sich auch solche Dateien mit SoX unter Linux zeitgerecht planen und erstellen. Das hilft vor allem dann, wenn andere Programme nicht zur Verfügung stehen.

Quelle

Man Page

at: https://manpages.ubuntu.com/manpages/trusty/man1/at.1posix.html

sox: https://linux.die.net/man/1/sox

Prozesse beenden

https://askubuntu.com/questions/520107/how-to-kill-a-script-running-in-terminal-without-closing-terminal-ctrl-c-doe

VLC Kommandozeile

https://ubuntuforums.org/archive/index.php/t-1359656.html

 

Top

 

 

© Wolfgang Kirk

 

Stand: 2023-02-26, aktualisiert: 2023-03-23, 09:30 Uhr