Streamripper
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Streamripper 🇬🇧 ist ein Werkzeug für die Kommandozeile, mit dem man MP3- oder OGG/Vorbis-Streams aufnehmen und direkt auf der Festplatte speichern kann. Die Lieder werden automatisch nach dem Interpreten benannt und einzeln abgespeichert, als Format dient das ursprünglich gesendete (faktisch entstehen also Dateien mit der Endung .mp3 oder .ogg). Viele grafische Programme zum Aufzeichnen von Internetradio benutzen Streamripper im Hintergrund, so dass man mit der Kommandozeile nicht zwangsläufig in Berührung kommen muss.
Für Sender, die proprietäre Formate wie Windows Media zur Ausstrahlung nutzen, ist das Programm nicht geeignet.
Installation¶
Streamripper kann über das folgende Paket installiert [1] werden:
streamripper (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install streamripper
Oder mit apturl installieren, Link: apt://streamripper
Verwendung¶
Die generelle Syntax lautet [2]:
streamripper URL [OPTIONEN]
Mit URL ist hier die Internet-Adresse eines Streams gemeint. Beispiel:
streamripper http://dradio-ogg.t-bn.de/dkultur_high.ogg
Da der Stream direkt auf die Festplatte gespeichert wird, ist es normal, dass man nichts hört. Um den laufenden Stream auch hören zu können, muss man Streamripper als Relay-Server (siehe unten) einrichten. Beendet wird die Aufnahme mit der Tastenkombination Strg + C .
Optionen¶
Optionen | |
Parameter | Zweck |
-d ORDNER | Ort, an dem die Aufnahme gespeichert wird |
-l SEKUNDEN | Dauer der Aufnahme in Sekunden |
-q | Nummeriert die einzelnen Dateien mit Präfix 0000_ bis 9999_ |
-a | Speichert den Stream zusätzlich am Stück in einer Datei und erstellt ein Cuesheet (.cue) zur späteren Bearbeitung |
-A | Verhindert das Erstellen der .mp3-Dateien für die einzelnen Tracks. Nützlich in Verbindung mit -a oder -r |
-1 | (minus eins) Schreibt keine ID3V1 Tags |
-r | Öffnet ein Relay auf Port 8000 , über den ein Stream während der Aufnahme empfangen werden kann |
-p PROXY | Nutzung eines Proxys. Beispiel: -p http://proxy-ip:port |
-o ... | Sollen bereits vorhandene Titel ersetzt werden. Zur Auswahl stehen: never , always , larger und version . |
-s | Erstellt kein Unterverzeichnis für jeden Stream (Standard ist ein Ordner mit dem Namen des Streams) |
Siehe auch: Streamripper-Readme 🇬🇧
Relay-Server¶
Wer einen Stream gleichzeitig aufnehmen und hören will, sollte die Relay-Funktion von Streamripper nutzen. Ansonsten kann es leicht passieren, dass man den Stream doppelt herunterlädt (einmal für die Aufnahme und einmal zur Wiedergabe). Diese Funktion wird mit der Option -r
aktiviert. Zusätzlich kann eine frei wählbare Portnummer oberhalb von 1024 angegeben werden. Lässt man die Portnummer weg, wird automatisch der Port 8000
genutzt.
Nun kann man in vielen Audioplayern eine neue Stream-Quelle mit der URL http://localhost:8000/
anlegen bzw. abspielen lassen. Diese Quelle kann aber nur während der Aufnahme empfangen werden. Möchte man einen anderen Rechner zum Mithören nutzen, ändert man die URL in http://IP-ADRESSE:8000/
.
Zeitgesteuerte Aufnahmen¶
Eine Aufnahme zu bestimmten Zeiten (einmalig oder regelmäßig) lässt sich auf verschiedene Arten umsetzen.
cron¶
Für Nutzer der Kommandozeile kann Streamripper über Cron genutzt werden. Elegant geht das mit einem Befehl in der crontab des Benutzers. Hier ein Beispiel, um das Programm jeden Tag um Mitternacht zu starten:
0 0 * * * /usr/bin/streamripper URL -d /PFAD/ZUM/SPEICHERN -l DAUER_DER_AUFNAHME_IN_SEKUNDEN > /dev/null 2>&1
Experten-Info:
Cron-Jobs senden ihre Ausgabe nach "mail". Da unter Ubuntu das Paket mailx standardmäßig nicht installiert ist, führt der Aufruf von Streamripper über cron
nach einigen Minuten zu einem Absturz. Abhilfe schafft das Installieren des fehlenden Pakets oder das Anfügen von "> /dev/null 2>&1
" am Ende der Zeile.
at¶
Weniger elegant, aber einfach lässt sich die Startzeit im Terminal mit dem Befehl at festlegen. Nach Eingabe der Startzeit gibt at
eine Warnung aus, worauf der eigentliche Befehl, in diesem Fall "streamripper
", mit der gewünschten Stream-Adresse (URL) und der Aufnahmelänge eingegeben wird. Mit der Tastenkombination
Strg +
D wird die Befehlszeile abgeschlossen. Beispiel:
at 20:10 warning: commands will be executed using /bin/sh at> streamripper http://dradio-ogg.t-bn.de/dkultur_high.ogg -l 3600 at> Strg+D
job 1 at Tue Dec 1 20:10:00 2009
Um 20:10 Uhr wird "streamripper
" gestartet und zeichnet 1 Stunde (3600 Sekunden) lang den Stream von Deutschlandradio Kultur auf. Auch komplexere Zeitangaben sind mit Hilfe des Linux-User Artikels Cron, At - Punktlandung 🇩🇪 möglich.
Stream mit Schnitt-Datei aufzeichnen¶
Da Streamripper einzelne Musikdateien nicht immer an der richtigen Stelle trennt, kann es sinnvoll sein, hier selbst Hand anzulegen. Dazu zeichnet man den Radiosender als einen Titel auf und lässt das Programm zusätzlich eine Schnittpunkt-Datei anlegen. Mit dem Programm mp3splt-gtk kann man diese öffnen und muss nur noch Feineinstellungen betreiben, um die Dateien exakt in einzelne Titel zu schneiden.
Ein Beispielskript:
1 2 | #!/bin/bash streamripper http://www.foo.com/radio.php -a /home/BENUTZERNAME/$(date +%x_%X).mp3 -L /home/BENUTZERNAME/$(date +%x_%X) --xs2 |
Dieses Skript legt beim Ausführen im Ordner /home/BENUTZERNAME/ die eigentliche .mp3- oder .ogg-Datei des Radiosenders und zusätzlich eine .cue-Datei an, die die Schnittpunkte in Textform beinhaltet. Der Dateien werden durch "$(date +%x_%X)
" nach dem aktuellen Datum und der Uhrzeit benannt, damit man bei mehreren Aufnahmen keine (vorhandenen) Dateien überschreibt oder vertauschen kann.
Problembehebung¶
Doppelpunkte in Stream-Adresse¶
Doppelpunkte in der Stream-URL führen zu folgender Fehlermeldung:
error -9 [SR_ERROR_PARSE_FAILURE]
bye..
shutting down
Das Problem ist bekannt 🇬🇧, aber nicht behoben. Lösungsmöglichkeiten sind in der verlinkten Anleitung beschrieben.
Titel werden nicht sauber getrennt¶
Bei manchen Sendern kann es passieren, dass Streamripper die einzelnen Titel nicht korrekt trennt und sich so Teile des vorhergehenden oder nachfolgenden Titels am Anfang bzw. Ende der aufgezeichneten Datei wiederfinden. Streamripper verwendet grundsätzlich die Angaben innerhalb des Streams, wann ein Liedwechsel erfolgt. Manchmal werden diese Angaben durch den Sender absichtlich falsch gesetzt, um die Aufnahme zu erschweren. Abhilfe schafft nur Experimentieren mit eigenen Werten, die als Optionen bei Programmstart übergeben werden müssen. Details sind der Manpage von Streamripper zu entnehmen. Ein Beispiel:
streamripper http://somafm.com/bootliquor.pls --xs_offset=1200 --xs_padding=1000:1000
Daneben gibt es auch Streams, die bewusst keine Metadaten (Künstler und Titel) senden. Dann hat Streamripper natürlich Probleme, Dateien beim Speichern korrekt zu benennen.
Links¶
Projektseite 🇬🇧
Internetradio aufzeichnen Übersichtsartikel