Radio 2.0
Wir schreiben das Jahr 2017 und noch immer wird Radio über analogen UKW-Funk gesendet. Da PolitikerInnen das analoge UKW-Radio immer noch nicht beerdigt haben, bleibt nur das Internet als digitales Radio zu nutzen. Im folgenden Beitrag schreibe ich, wie Webradio und die Playlists der "traditionellen" Radiosender unter Linux benutzt werden können. Zunächst einmal eine Tabelle mit Internetstreams von Radiosendern aus Berlin mit Stand vom 27.12.2021. Update 27.12.2021 - der RBB hat neue URLs für die Livestreams vergeben (mit einem Verteiler dispatcher.rndfnk.com).
Berliner Radiosender im Netz
Hier sind die Sender als Playlist zum Herunterladen.
Webradio in der Kommandozeile
Eine Seite mit Links zu Internetradios gibt es unter anderem im Wiki von Ubuntuusers oder in der Tabelle oben. Auch wenn es Programme mit grafischer Oberfläche fürs Internetradio gibt wie zum Beispiel Rhythmbox, benutze ich als Kommandozeilen-Freak lieber das Programm mplayer zum Aufnehmen und Abspielen von Webradio. In den folgenden Kommandozeilen bedeutet das Zeichen "#" eine Kommentarzeile. Zuerst muss der mplayer installiert werden. Bei Linux-Systemen mit dem Advanced Packaging Tool (apt) funktioniert die Installation folgendermaßen:
sudo apt-get install mplayer
Webradio anhören
Nach der Installation von mplayer kann es mit dem Anhören losgehen. Hier ein Beispiel mit der Internetadresse von Radio Fritz in Berlin:
streamURL="https://dispatcher.rndfnk.com/rbb/fritz/live/mp3/mid"
# play the stream with a buffer (cache) and non verbose
mplayer -quiet -cache 100 "$streamURL"
Zum Beenden von mplayer einfach q für Quit oder Control + C drücken.
Webradio speichern
Zum Speichern des Internetradios auf Festplatte kennt mplayer den Parameter dumpstream. Mit der folgenden Kommandozeile speichert mplayer den Internetstream in einer Datei mit Datum und Uhrzeit:
Aufnahme abspielen
Zum Abspielen der Aufnahme kann ebenfalls mplayer benutzt werden:
alias m='mplayer'
m internetStream_*
# or use a graphical program like:
rhythmbox internetStream_*
Musik aus einer Aufnahme herausschneiden
Um ein Musikstück aus einer Radioaufnahme herauszuschneiden, gibt es unter Linux natürlich auch freie Software. Das Programm dafür nennt sich mp3splt (split MP3). Eine ausführliche Anleitung gibt es auf Sourceforge.
mp3splt internetStream_*.mp3 0.10 1.00
# this means cut from 10 seconds to the 1 minute position
Werbung stummschalten
Einige Radiosender schalten vor dem Internetstream noch Werbung - meistens aber nicht länger als 30 Sekunden. Auch dafür gibt es in Linux eine Lösung - am Beispiel von Radio Energy:
streamURL="https://scdn.nrjaudio.fm/adwz1/de/33001/mp3_128.mp3"
# create a first in first out queue (fifo) for mplayer
mkfifo /tmp/mplayer.fifo
# sleep 30 seconds in the background, then set the volume of mplayer to 100%
(sleep 30; echo "set_property volume 100" > /tmp/mplayer.fifo) &
# start mplayer mute and in slave mode
mplayer -volume 0 -slave -input file=/tmp/mplayer.fifo -quiet -cache 100 "$streamURL"
Alternativ könnte ein Internetstream mit vorgesetzter Werbung immer im Hintergrund mitlaufen und nur bei Benutzung die Stummschaltung aufgehoben werden. Allerdings wäre das Energieverschwendung (kleines Wortspiel).
Um die Berliner Radiosender nacheinander abzuspielen, ist die playlist-Option von mplayer hilfreich:
mplayer -quiet -cache 100 -playlist radiostations_berlin.m3u
Anschließend kann mit der Taste > zur nächsten Radiostation gesprungen werden.
Playlists der Radiosender herunterladen
Um die Playlist von einem Radiosender herunterzuladen sind keine Programmierkenntnisse erforderlich. Allerdings werden Kenntnisse über reguläre Ausdrücke (regular expressions) benötigt. Zunächst lädt das Programm wget die Playlist vom Webserver in eine temporäre Datei. Das Verzeichnis /dev/shm/ befindet sich im Arbeitsspeicher von Linux-Systemen und belastet somit die Festplatte nicht. Anschließend wird die Datei mit dem stream editor sed bearbeitet und mit grep gefiltert. Beginnen wir mit einem einfachen Beispiel von Jazzradio Berlin. Der folgende Block kann in einem Terminal mit Bash-Shell ausgeführt werden.
Playlist von Jazzradio Berlin herunterladen
Das folgende Shell-Skript lädt die Playlist mit den aktuell gespielten Titeln von Jazzradio.net herunter:
#!/bin/bash
# download the playlist
wget -T 15 -q https://jazzradio.net/playlist -O /dev/shm/jazzradio.html
# check if download was success
if [ \$? -ne 0 ];then
echo "Playlist download failed."
exit 1
fi
# check if the string 'previous' exists
grep -q -i "zuvor << previous" /dev/shm/jazzradio.html
if [ \$? -ne 0 ];then
echo "Playlist does not contain the string 'previous'."
exit 2
fi
# filter the web result
grep -m 1 -A 3 "zuvor << previous" /dev/shm/jazzradio.html | tail -n 3 | tr -d '\n'; echo
EOF
chmod 755 downloadJazzradioPlaylist.sh
# start download
./downloadJazzradioPlaylist.sh
Mit wget wird zunächst die Webseite https://jazzradio.net/playlist heruntergeladen. Die Option -q bedeutet quiet - also ohne Ausschriften von wget. Die Option -T ist der Timeout zum Warten auf eine Antwort des Webservers. In diesem Fall wird 15 Sekunden auf die Antwort gewartet. Die heruntergeladene Webseite wird in der Datei /dev/shm/jazzradio.html gespeichert. Mit der folgenden if-Abfrage -ne 0 wird der Rückgabewert von wget überprüft. Ist der Rückgabewert nicht 0 (ne bedeutet not equal), dann kommt die Ausschrift, dass die Playlist nicht heruntergeladen werden konnte. Nach erfolgreichem Herunterladen wird mit grep auf die Zeichenkette "playing last" in der Datei gefiltert, wobei die Groß- und Kleinschreibung ignoriert wird. Ist die Zeichenkette vorhanden, dann ersetzt sed die Tags mit den spitzen Klammern (<>) durch "newlines" - also Zeilenumbrüche. Anschließend werden leere Zeilen und die Zeichenkette "playing last" weggefiltert. Wenn alles erfolgreich lief, sollten nur die Uhrzeiten und die Lieder der Playlist übrig bleiben.
Für weitere Fragen gilt wie üblich unter Linux RTFM - read the fine manual - also die schöne Anleitung lesen. Über die Kommandozeile lassen sich die Anleitungen mit folgenden Befehlen anzeigen:
man wget
man grep
man sed
Die Anleitung von sed enthält allerdings keine Anleitung zu regulären Ausdrücken. Einige Beispiele zu regulären Ausdrücken in sed mit Erklärung gibt es hier: http://sed.sourceforge.net/sed1line_de.html. Meistens benutze ich nur die Option s von sed. Sie steht für substitute - also das Ersetzen von Zeichenketten durch andere Zeichen.
Falls noch etwas unklar sein sollte, dann kannst du die Kommentar-Funktion benutzen.