[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren:Pakete installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [sourceforge2:streamripper:Streamripper] {en} 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 [:Internetradio_aufzeichnen: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 [:Adobe_Flash:] oder [wikipedia:Windows_Media:Windows Media] zur Ausstrahlung nutzen, ist das Programm nicht geeignet. = Installation = Streamripper kann über das folgende Paket installiert [1] werden: {{{#!vorlage Paketinstallation streamripper, universe }}} = Verwendung = Die generelle Syntax lautet [2]: {{{#!vorlage Befehl streamripper URL OPTIONEN }}} Mit URL ist hier die Internet-Adresse eines Streams gemeint. Beispiel: {{{#!vorlage Befehl 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 Relay-Server] (siehe unten) einrichten. Beendet wird die Aufnahme mit der Tastenkombination [[Vorlage(Tasten, strg+c)]]. == Optionen == {{{#!vorlage Tabelle Optionen +++ Parameter Zweck +++ `-d ` Ort, an dem die Aufnahme gespeichert wird +++ `-l ` Dauer der Aufnahme in Sekunden +++ `-q` Nummeriert die einzelnen Dateien mit Präfix 001 bis 999 +++ `-a` Speichert den Stream zusätzlich am Stück in einer Datei und erstellt ein [wikipedia:Cuesheet:] ('''.cue''') zur späteren Bearbeitung +++ `-A` Verhindert das Erstellen der '''.cue'''-Dateien, funktioniert nur mit `-a` +++ `-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 ` Nutzung eines Proxys. Beispiel: `-p http://proxyip:port` +++ `-o ...` Sollen bereits vorhandene Titel ersetzt werden. Zur Auswahl stehen: `never`, `always`, `larger` und `version`. }}} Siehe auch: [http://streamripper.git.sourceforge.net/git/gitweb.cgi?p=streamripper/streamripper;a=blob_plain;f=README Streamripper-Readme] {en} == 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 und nur auf dem eigenen Rechner empfangen werden. == Zeitgesteuerte Aufnahmen == === Record-Station === Eine einfache Möglichkeit, um Internetradio zeitgesteuert aufzunehmen, ist das Plugin "record-station" für den Audio-Player [:Rhythmbox:]. Weitere Informationen gibt es unter [http://wiki.ubuntuusers.de/Rhythmbox#Record-Station Record-Station]. === Cron === Eine weitere Möglichkeit für Fans der Kommandozeile ist der Aufruf von Streamripper über [:Cron:]. Elegant geht das mit folgendem Befehl in der [:Cron#Eine-Crontab-fuer-einen-Benutzer-einrichten:crontab] des Benutzers. Hier ein Beispiel: {{{ /usr/bin/streamripper [URL] [-d [Pfad wo die Dateien gespeichert werden sollen]] [-l [Dauer der Aufnahme in Sekunden]]> /dev/null 2>&1 }}} {{{#!vorlage Experten [:Cron:]-Jobs senden ihren Output nach "mail". Da unter Ubuntu das Paket [packages:mailx:] standardmäßig nicht installiert ist, führt der Aufruf von Streamripper über `cron` nach ca. 5-6 Minuten zu einem Absturz. Abhilfe schafft das Installieren des fehlenden Pakets oder das Anfügen von "`> /dev/null 2>&1`" am Ende der Zeile im Skript. Außerdem fehlen in obigen Beispiel noch die konkreten Zeitangaben, wann `cron` den Befehl ausführen soll. }}} === 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 Aufnahmelänge, eingegeben wird. Mit der Tastenkombination [[Vorlage(Tasten, Strg+D)]] wird die Befehlszeile abgeschlossen. Beispiel: {{{#!vorlage Befehl 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 lang den Stream von Deutschlandradio Kultur auf. Auch komplexere Zeitangaben sind mit Hilfe des Linux-User Artikels [http://www.linux-user.de/ausgabe/2006/02/094-zubefehl/ Cron, At - Punktlandung] {de} möglich. === Gnome-Schedule === Alternativ bietet sich das Programm [:GNOME_Schedule:] an, mit dem sich Systembefehle – und damit auch Streamripper – zeitgesteuert starten lassen. Auch wiederkehrende Ereignisse nach Kriterien wie z.B Tag, Woche oder Monat sind möglich. Die Installation erfolgt übr das Paket: {{{#!vorlage Paketinstallation gnome-schedule, universe }}} Ein Problem ist, dass als Resultat der Aufnahme eine Datei mit dem Namen '''-.mp3''' entsteht. Dies kann man mit einem Skript verhindern, das die Aufnahme nach ihrem Ende mit dem aktuellen Zeitstempel als Dateinamen kennzeichnet: {{{#!code bash #!/bin/bash # Skript zum Speichern eines Radio mp3-Streams # Wichtig! Ausfuehrbarmachen nicht vergessen! (chmod u+x skriptname) DATUM=`date +%Y-%m-%d_%RUhr` streamripper Streamadresse -D ~/radiorips -l 3300 && mv ~/radiorips/incomplete/*mp3 ~/radiorips/$DATUM.mp3 && rmdir ~/radiorips/incomplete/ && sudo shutdown -h +1 }}} In diesem Beispiel wird die Aufnahme im Verzeichnis '''~/radiorips/incomplete''' aufgezeichnet. Nach Abschluss der Aufnahme wird die Datei umbenannt in '''Zeitstempel.mp3''' und im Verzeichnis '''~/radiorips/''' abgelegt. Anschließend wird der Ordner '''~/radiorips/incomplete''' gelöscht und der Rechner heruntergefahren. Soll der Rechner nicht heruntergefahren werden, muss die letzte Zeile "`sudo shutdown -h +1`" auskommentiert (das Zeichen `#` an den Anfang der Zeile setzen) oder gelöscht sowie die `&&`-Operatoren in der vorherigen Zeile gelöscht werden. == 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 Streamripper zusätzlich eine Schnittpunkt-Datei anlegen. Mit dem Programm [:mp3splt:mp3splt-gtk] kann man diese öffnen und muss nur noch Feineinstellungen betreiben, um die Dateien exakt in einzelne Titel zu schneiden. Dazu ein Beispielskript: {{{#!code bash #!/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 an und zusätzlich eine '''.cue'''-Datei, 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 = == 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 Stream, 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 [:man:Manpage] zu entnehmen. 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 = * [sourceforge2:streamripper:Projektseite] {en} * [:Internetradio_aufzeichnen:] {Übersicht} Übersichtsartikel # tag: Multimedia, Internet, Audio, Radio, Internetradio