Audiostreaming mit GnuMP3d

Debian Swirl

http://www.black-board.net
Es ist nicht gestattet dieses Tutorial losgelöst von dem Namen BlackBoard und der URL zu verbreiten.


Das Tutorial befindet sich noch in der Entwicklung. Wenn du mitwirken möchtest, melde dich hier.
Dies ist ein Aufruf - wenn du Ahnung hast, mach mit!



1. Einleitung


gnump3d-logo

Wer kennt sie nicht, die unzähligen Livestreams von Radiosendern in der ganzen Welt, welche eine gute Abwechslung zur eigenen Musiksammlung bieten. Aber was soll man tun, wenn man beispielsweise bei einem Bekannten zu Besuch ist und ihm das eine oder andere Stück aus der eigenen Sammlung vorspielen möchte? Natürlich ist dies in Zeiten von MP3-Playern kein Problem mehr, aber gute Geräte mit hoher Kapazität um die komplette Musik zu speichern kosten auch entsprechend.

Hier setzt GnuMP3d an. Dabei handelt es sich um einen einfachen Streamingserver, mit dem man Streams der eigenen Sammlung über eine Weboberfläche erstellen kann. GnuMP3d ist sicherlich keine Lösung für User, die ein Webradio betreiben wollen, hier eignen sich Programme wie Icecast2 besser, aber für den oben genannten Zweck ist er genau richtig.

GnuMP3d ist eine relativ einfache, schnelle und stabile Streaminglösung.


2. Installation und Konfiguration


Die Installation ist wie gewohnt recht einfach:

apt-get install gnump3d

Vorab sei schonmal erwähnt, dass man auf der Clientseite neben einem Browser auch einen Player benötigt, der mit m3u-Playlisten umgehen und Streams abspielen kann (z.B. XMMS).

Die Konfiguration erfolgt über die Datei /etc/gnump3d/gnump3d.conf . Da die Konfiguration durch die vielen Kommentare recht lang ist, hier nur die wichtigsten Parameter im Überblick:


Listing 1 - /etc/gnump3d/gnump3d.conf

port = 8888
root = /home/user/music/

allowed_clients = all
enable_browsing = 1
theme = Tabular

always_stream = 1
recursive_randomize = 1

Bei der Bearbeitung der Konfiguration stellt man schnell fest, dass es noch eine Menge weiterer Parameter gibt, welche aber zunächst keine Rolle spielen. Besonders wichtig ist erstmal die Portnummer. Über diesen Port stellt GnuMP3d später die Weboberfläche und den Stream bereit. Man sollte hier einen Port größer als 1024 wählen, da der Server ansonsten unter root laufen muss, was ein unnötiges Sicherheitsrisko darstellt.

Mit dem Parameter root gibt man den lokalen Pfad zum Verzeichnis an, in dem sich die Musikdateien befinden.

Durch allowed_clients=all akzeptiert der Server Verbindungen von allen Rechnern, alternativ kann man hier auch einzelne IP-Adressen oder Netzbereiche angeben. Der Passwortschutz muss nicht extra aktviert werden (enable_password_protection = 1), da dieser per Default eingeschaltet ist und eine zusätzliche Aktivierung zu Problemen mit dem Zugriff auf Dateien in Unterordnern führt. Damit die Weboberfläche zur Verfügung gestellt wird, muss der Parameter enable_browsing auf 1 gesetzt werden. Die Option theme legt dann das Aussehen der Oberfläche fest, gültige Werte sind die Verzeichnisnamen in /usr/share/gnump3d/ .

always_stream gibt an ob die Musik richtig gestreamt (1) oder erst heruntergeladen (0) werden soll. Will man, dass die Songs in einer zufälligen Reihenfolge abgespielt werden, setzt man recursive_randomize auf 1.


Auch in Zeiten von DSL-Flatrates ist der Upstream immer noch recht mager, daher bietet es sich für den einen oder anderen User an, das Downsampling (der Stream wird mit einer niedrigeren Bitrate codiert) zu aktivieren:

Listing 2 -Downsampling

downsample_enabled = 1
downsample_"level"_"file suffix" = command args
downsample_high_mp3 = /usr/bin/lame --mp3input -b 96 $FILENAME -
downsample_medium_mp3 = /usr/bin/lame --mp3input -b 64 $FILENAME -
downsample_low_mp3 = /usr/bin/lame --mp3input -b 32 $FILENAME -
downsample_high_ogg = sox -t ogg $FILENAME -t raw - | oggenc --raw --downmix -b 96 -
downsample_medium_ogg = sox -t ogg $FILENAME -t raw - | oggenc --raw --downmix -b 64 -
downsample_low_ogg = sox -t ogg $FILENAME -t raw - | oggenc --raw --downmix --resample 22050 -b 32 -
downsample_clients = ALL
default_quality = medium

Beim Downsampling codiert GnuMP3d den Stream direkt über die Ausgabe des Kommandos. Bei sehr langsamen Computern bietet sich diese Methode allerdings nicht an, da es zu hörbaren Aussetzern kommen kann.

Für die Codierung des Streams benötigt man allerdings zusätzliche Programme:

  • MP3: lame
  • Ogg: sox und oggenc


Theoretisch kann man das Downsampling auch mit anderen Encodern realisieren, in diesem Fall ist dann aber etwas mehr Aufwand notwendig. Wer einen brauchbaren Klang erzielen möchte, sollte mit der Bitrate allerdings nicht unter 64kbps gehen, da der Qualitätsverlust hier deutlich hörbar ist.


3. GnuMP3d starten


Bevor man den Server starten kann, ist es notwendig im root-verzeichnis die Datei .password anzulegen (Passwortschutz per default aktiviert). Das File hat ein recht einfaches Format: user:password

Im Anschluss kann man GnuMP3d mit dem Befehl: /etc/init.d/gnump3d restart neu starten. Der erste Start kann allerdings eine Weile dauern da erstmal ein Index aller Dateien erstellt wird. Um sicherzustellen, dass alle Dateien indiziert wurden, kann man folgenden Befehl verwenden: gnump3d-index –stats


4. Weboberfläche


Vorschau


GnuMP3d startet zumindest beim ersten Mal mit dem in der Config angegebenen Theme, danach hat der User die Möglichkeit dieses über Preferences zu ändern (das Ergebnis wird über einen Cookie gespeichert).

5. Links


Verfasser


Letzte Aktualisierung 02.02.2007 von LX