Radiostreams mit wenig Bandbreite

Nachdem ich heute vor dem Problem stand einen Radio-Stream hören zu wollen, der mit 128kbit/s sendet, meine Leitung hier das aber nicht verträgt (ISDN) habe ich mal eine Möglichkeit gebastelt wie man das Problem umgehen kann. Diese Anleitung funktioniert natürlich auch, wenn Ihr z.B. euren Lieblingsstream unterwegs auf dem iPhone mit FStream über eine EDGE-Verbindung hören wollt. (Macht mit 128kbit auch keinen Spaß...)

Gleich vorweg: Diese Anleitung setzt im Endeffekt eine Kopie des originalen Streams auf. Ihr solltet das Ganze nur für euch persönlich aufsetzen. (Maximal noch eurem besten Freund erzählen.) Ich habe keine Ahnung wie das in Deutschland mit der Kopie eines Streams rechtlich ausschaut. Selbst wenn der eigentliche Streambesitzer nichts dagegen hat, könnten da gewisse staatliche Stellen so ihre Einwände haben. Solange Ihr das allerdings nur für euch persönlich baut sollte da nichts dagegen sprechen. (Hoffe ich...)

Die Anleitung ist im Übrigen für erfahrene Linux-Administratoren gedacht, da Software per Hand nachinstalliert werden muss. Solltet Ihr die entsprechende Erfahrung nicht haben, fragt bitte jemanden, der diese Ahnung hat.

Voraussetzungen

Fangen wir also mit dem benötigten "Material" an: Ihr braucht einen Server, der eine entsprechende Bandbreite (achtet auch auf den Traffic!) hat. Also z.B. eine günstige virtuelle Büchse in einem Rechenzentrum. Darauf sollte ein Ubuntu-System laufen. Wenn es ein Debian ist könnte die Anleitung auch noch 1:1 funktionieren.

Vorbereiten

Als ersten Schritt müssen wir auf dem Server einige Pakete installieren. Dazu wird der folgende Befehl ausgeführt:
aptitude install libogg-dev libvorbis-dev libmad0-dev libmp3lame-dev libflac-dev icecast2 build-essential
Damit wird einerseits der IceCast2-Server installiert, den wir später nutzen um den runtergerechneten Stream wieder zur Verfügung zu stellen. Andererseits legt der Befehl schon den Grundstein für die Installation vom Streamtranscoder. Den müssen wir auf Ubuntu leider manuell installieren, da es ihn nicht in der Paketverwaltung gibt.

Installieren vom Streamtranscoder

Im nächsten Schritt werden als root folgende Befehle ausgeführt:
cd ~
mkdir src
cd src
wget http://www.oddsock.org/tools/streamTranscoderV3/streamtranscoderv3-3.1.11.tar.gz
tar xzf streamtranscoderv3-3.1.11.tar.gz
cd streamtranscoderv3-3.1.11
./configure
Hierbei sollten bis jetzt keine Fehler auftreten. Falls doch fehlen wahrscheinlich Bibliotheken. Diese müsst Ihr dann über die Paketverwaltung nachinstallieren.

Der Streamtranscoderv3 wird dann über die Befehle

make
make install
installiert.

Konfigurieren des IceCast2

Die Dokumentation des IceCast2-Servers ist eigentlich relativ selbsterklärend. Daher gehe ich da nicht detailliert drauf ein. Wichtig ist, dass Ihr in der Datei "/etc/icecast2/icecast.xml" die Passwörter alle ändert. (Insgesamt 3 Stück). Außerdem müsst Ihr in der "/etc/default/icecast2" in der letzten Zeile den IceCast-Server aktivieren. Danach lässt sich der IceCast-Server starten und ist bereit unsere Streams aufzunehmen.

Konfigurieren des Streamtrancoderv3

Der Streamtranscoderv3 wartet leider schon seit 2007 auf eine sinnvolle Dokumentation, die es aber bisher noch nicht gibt. Daher hier kurz das Vorgehen, wie man ihn einrichtet: Als Erstes wechselt Ihr auf einen normalen Benutzer. Der Streamtranscoder sollte nicht als Root laufen!

Jetzt führt Ihr den Befehl "streamTranscoderv3" einmal aus. Dabei wird die Konfigurationsdatei "streamTranscoder_0.cfg" angelegt. In dieser Datei stellt Ihr den Quellstream ein und ändert ganz unten die Anzahl der Encoder auf mindestens 1.

Anschließend wird der Befehl "streamTranscoderv3" wieder aus. Jetzt wird die Konfigurationsdatei "streamTranscoder_1.cfg" automatisch erzeugt. In dieser Datei passt Ihr jetzt die Optionen für euren Stream an, wie er zum IceCast-Server gesendet werden soll. (Die Datei ist wieder selbsterklärend).

Streamtranscoder starten

Wenn Ihr beide Konfigurationen angepasst habt, könnt Ihr den Befehl "streamTranscoderv3" zum dritten Mal ausführen und damit den Streamtranscoder starten. Jetzt solltet Ihr mit einem beliebigen Client zu eurem IceCast-Server verbinden und die Musik anhören können.

Später könnt Ihr den Streamtranscoder mittels "streamTranscoderv3 -b" starten. Damit legt er sich in den Hintergrund und Ihr könnt die Verbindung zum Server schließen.