MPEG/Vorbis Streaming Server

Inhalt

Problematik

Einige von euch kennen das Problem sicher auch: Man hat zwar seine CD-Sammlung im Regal, aber immer CD's wechseln ist mühsam, wir sind nämlich keine Dj's! Nachdem wir dann bemerkt haben, dass wir all diese Files auf den PC kopieren können, und gleich mit einem guten encoder (vorzugsweise oggenc, für OGG Vorbis) "verkleinert" haben, stellt sich gleich das nächste Problem: Ich habe 3 (drei) Rechner, auf welchen ich gerne meine Musik hören möchte, aber der Aufwand, alles rumzukopieren und wieder aufeinander abzugleichen (wenn man nicht alle CD's auf dem selben Rechner rippt), ist doch enorm, hat jedoch den Vorteil, dass bei Plattencrashes nicht alles wieder neu kopiert werden muss. Dezentralisierung hat schon seine Vorteile, aber in diesem Bereich habe ich persönlich andere Prioritäten, und wer sagt denn, dass man kein Inkrementelles Backup mit einem Shell-Script und TAR machen kann.

Idee

Wenn eben nicht dezentral, dann eben zentral. Es gibt die Möglichkeit, seine Mediendateien auf einem einzigen Rechner zu speichern, und diese anderen Computern zugänglich zu machen. Und schon sind wir beim Streaming Server! Es gibt eine Anzahl an freien Streaming Servern, welche auf (fast) jedem Unixoiden System kompilierbar sind. Ich werde mich hier auf GNUMP3d beziehen, da ich diesen auch selbst im Einstatz habe.

Möglichkeiten

GNUMP3d bringt viele nette Features mit, unter anderem auch globale Playlists, welche unter anderem auch von öffentlichen Streaming Servern verwendet werden. Da dies aber ein ziemlich komplexes Thema ist, werde ich hier nicht darauf eingehen, auch weil es eigentlich niemandem etwas bringen würde, ausser er hätte eine Menge Geld, um sich die ganzen Streaming Lizenzen erwerben zu können.
Hier geht es vielmehr darum, für ein LAN im eigenen Haushalt einen Streaming Server einzurichten, so dass Clients wie XMMS auf *NIX/X11 oder WinAmp auf Windows, sowie iTunes auf OS X eine Playlist holen können.

Realisation

Streaming von Mediendateien geschieht normalerweise über HTTP (RFC 2616). Was unterscheidet also einen Streaming Server von einem normalen Webserver? Vieles! Das wichtigste ist, dass nicht einfach Daten übertragen werden. Der Datenfluss wird gethrottelt. D.h. der Client kann aus den Header-Informationen des gestreamten File lesen, mit welcher Bitrate gespielt werden muss, füllt dementschprechend seinen Buffer, und gibt dem Server Anweisungen, wie viele Daten noch gesendet werden dürfen.
Weiter gehört zu einem (guten) Streaming Server natürlich auch das dynamische generieren von Playlists, damit sich der Benutzer seine Musik aus verschieden Alben auswählen kann.
Natürlich gehören auch weiter Features wie das individuelle konfigurieren der Benutzerschnittstelle (welche bei GNUMP3d übrigens über einen Webbrowser geschieht) oder auch das sichern durch ein Passwort dazu.

Installation

GNUMP3d ist bei jeder neueren Linux-Distribution und auch in den Ports der BSD-Derivaten verfügbar. Falls dies bei deiner Distro nicht der Fall sein sollte, kann der Server auf http://www.gnu.org/software/gnump3d/" heruntergeladen werden. Das übliche
./configure; make; make install
sollte zum Ziel, eine lauffähige Version zu haben, führen. Jetzt müssen wir nur noch ein wenig Konfigurationsarbeit leisten. Das ganze findet in der Datei
/etc/gnump3d/gnump3d.conf
oder entsprechend statt. Das File ist ziemlich selbsterklären, trotzden einige Bemerkungen zu den einzelnen Parametern:

Parameter Erklärung
port Gibt den TCP Port an, auf welchem der Server hört
root Wo sind die Mediendateien und Playlists abgelegt?
errorlog Das Error Logfile kann zum debuggen wichtig sein!
user Unter welchem Benutzer soll der Server laufen?
allowed_clients Welche IP-Ranges dürfen überhaupt streamen?
theme_directory Das Verzeichnis, wo User-Interface-Themes abgelegt sind
theme Welches Theme verwendet werden soll (dies sind Unterdirectories im theme_directory)
song_format Wie sollen die Dateien im Interface dargestellt werden?
shoutcast_streaming Ob Metainformation wie z.B. Interpret und Titel mitgesendet werden sollen

Weitere Info's zum Konfigurationsfile gibts natürlich in der entsprechenden manpage. Der Server kann nun wie folgt gestarted werden:

gnump3d --background

Diverses

Was ich für den täglichen gebrauch eingerichted habe sind:

Weblinks