Streaming mit dem Darwin Streaming Server

Aus LinuxUser 01/2005

Streaming mit dem Darwin Streaming Server

Datenstrom mit Hängern

Mit dem Darwin Streaming Server bietet Apple eine freie Version des kommerziellen Quicktime-Servers an. Er beherrscht die zukunftsträchtigen Formate MP3 und MPEG-4-Video und kommt mit einem Web-Frontend. Wie Sie ihn trotz einiger Schwierigkeiten zum Laufen bekommen, verrät dieser Praxisartikel.

Video-Streaming ist unter Linux noch immer ein Stiefkind. Freie Serverprogramme unterstützen häufig nur exotische Formate, kommerzielle Produkte dagegen sind kostspielig. So funktioniert der Real-Server der gleichnamigen Firma zwar gut, geht aber mit einigen Tausend Euro richtig ins Geld. Ihr freier Basic-Server bedient maximal fünf Clients und versagt nach einjähriger Testphase den Dienst [1].

Die Firma Apple hat dagegen vor einiger Zeit die wesentlichen Teile ihres Quicktime-Servers unter einer Open-Source-Lizenz freigegeben, der Apple Public Source License [2]. Der Darwin Streaming Server (DSS) beherrscht das gängige Audio-Format MP3, Quicktime- und MPEG-4-Videofilme.

Freier Server für MP3 und MPEG-4

Um an die Software zu kommen, müssen Sie sich zuerst auf der Apple-Website [3] registrieren. Klicken Sie dann auf der DSS-Seite [4] unter Source Code auf Streaming Server 5.0.1, startet gleich der Download. Alternativ wählen Sie das für Red Hat 9.0 gedachte Paket – das klappte im Test mit Debian, Suse 9.1 und Fedora Core 3. Wer den Quellcode trotzdem selbst kompilieren will oder muss, findet einige Hinweise dazu im Kasten Eigenbau.

Eigenbau

Um den Sourcecode selbst zu kompilieren, entpacken Sie die Zip-Datei mit unzip DarwinStreamingSrc5.0.1.1.zip. Dann wechseln Sie ins neu angelegte Verzeichnis DarwinStreamingSrc5.0.1.1 und geben den Befehl ./Buildit ein. Das Skript ./Install bewegt die Dateien an den richtigen Ort: /usr/local/bin und /usr/local/sbin für die Programme, /etc/streaming für die Konfigurationsfiles. Das Installationsskript fragt auch gleich nach einem Loginnamen und einem Passwort für den Administrator des Darwin-Servers.

Leider enthalten die Skripts Fehler: Buildit legt die kompilierten Dateien nicht dort ab, wo Install sie erwartet:

copying qtpasswd to /usr/local/bin/qtpasswd
cp: cannot stat `qtpasswd': No such file or directory

Beobachten Sie also die Ausgabe des Installationsskripts und kopieren Sie die Dateien von Hand an den richtigen Ort. Finden Sie die Dateien nicht ohne weiteres, hilft der Befehl find:

# find -name "qtpasswd"
./qtpasswd.tproj/qtpasswd

Dieses File kopieren Sie an die von Install vorgesehene Stelle: cp ./qtpasswd.tproj/qtpasswd /usr/local/bin. So verfahren Sie mit allen benötigten Dateien.

Auch wenn die Programmdateien auf vielen Distributionen laufen, funktioniert das Installationsskript nicht unbedingt fehlerfrei. Zum Beispiel fehlt manchmal die nötige Benutzergruppe, die Sie als Administrator leicht von Hand einrichten: groupadd qtss. Auch die Konfigurationsdatei der Source-Code-Distribution ist unbrauchbar. Verwenden Sie besser diejenige des Binärpakets, denn sie enthält bereits sinnvolle Einstellungen.

Stimmen Konfigurationsfile, User- und Gruppeneinstellungen, lässt sich der Server als Administrator mit /usr/local/sbin/DarwinStreamingServer starten. Die Option -d sorgt dafür, dass der Server im Vordergrund läuft. Die Tastenkombination [Strg-C] bricht ihn wieder ab. Das Skript /usr/local/sbin/streamingadminserver.pl schaltet die Verwaltung über die Web-Oberfläche ein.

Einstellen über Browser

Erscheint die Meldung Launching Streaming Server..., können Sie das Web-Frontend ausprobieren. Dazu geben Sie im Browser die URL http://Serveradresse:1220/ ein. Laufen Server und Browser auf demselben Rechner, verwenden Sie als Serveradresse localhost, sonst den Rechnernamen oder die IP-Adresse. Startet man DarwinStreamingServer ohne Web-Frontend, funktioniert der Server sonst normal. Es ist also auch möglich, die Konfigurationsdatei von Hand zu editieren. Ein killall -HUP DarwinStreamingServer bringt den Server dazu, die veränderte Datei neu einzulesen.

Am Web-Frontend melden Sie sich mit dem bei der Installation gewählten Usernamen und dem entsprechenden Passwort an. Auf der folgenden Seite fragt Darwin ein weiteres Passwort ab, das er für eingehende MP3-Streams verwendet, die er selbst weiterverteilt.

Dann bietet der Server an, die Verbindung mit SSL zu verschlüsseln. Dazu benötigt er einige Software-Pakete, die möglicherweise fehlen: die OpenSSL-Bibliothek, das Perl-Modul Net::SSLeay und vor allem ein gültiges SSL-Zertifikat. Das so gesicherte Web-Frontend finden Sie unter Port 1240. Betreiben Sie Darwin nur zu Hause oder im abgesicherten eigenen Netz, können Sie auf SSL verzichten.

Schließlich folgt der Pfad zu den Videodateien, per Default /usr/local/movies, wohin das Installationsskript die Beispieldateien geschrieben hat. Als letzten Schritt bietet Darwin an, Streaming über Port 80 einzuschalten, was helfen kann, Firewalls zu überbrücken. Die beschriebenen Optionen lassen sich im Webinterface auch nachträglich noch ändern. Nach diesen ersten Einstellungen erscheint das Hauptfenster des Web-Frontends (Abbildung 1).

Abbildung 1: Das Hauptfenster des Web-Interfaces zeigt statistische Daten des laufenden Servers.

Abbildung 1: Das Hauptfenster des Web-Interfaces zeigt statistische Daten des laufenden Servers.

Wie erwähnt liegen nach der Installation im Hauptverzeichnis (Master Directory) /usr/local/movies die Beispiel-Videodateien. Um sie unter Linux abszuspielen brauchen Sie einen Player, der die Formatfamilie MPEG-4 und das Streaming-Protokoll RTSP beherrscht. Den bekannten MPlayer [5] muss man dazu mit der LIVE-Bibliothek [6] neu kompilieren. Die meisten Player, wie etwa der VideoLAN-Client vlc, [7] benötigen für MPEG-4-Dateien die Bibliothek FFMpeg [8]. Wie Sie das Programm Totem fürs Abspielen einrichten, beschreibt ein Artikel im LinuxUser [9].

MPEG-4 selbstgemacht

Eigene MPEG-4-Dateien zu encoden ist fast schon eine Wissenschaft. Haben Sie bereits digitales Videomaterial auf der Festplatte liegen, sind Sie schon einen Schritt weiter. Wie Sie es in andere Formate konvertieren, zeigt der Transcode-Workshop in [10]. Um davon ausgehend zu MPEG-4 zu kommen, bedarf es mehrerer Schritte:

  • Extrahieren Sie die Audiodaten aus dem Original in getrennte Files, zum Beispiel mit ffmpeg -vn
  • Kodieren Sie die Audiospur mit dem Programm faac ins AAC-Format.
  • Wandeln Sie das Video mit ffmpeg in ein MPEG-4-konformes Videoformat.
  • Fügen Sie Audio und Video mit mp4creator aus dem MPEG4IP-Paket [11] in das MPEG-4-Containerformat zusammen. Im Fachjargon heißt das “multiplexen”. Die Option -hint baut so genannte Hints in die Datei ein, kleine Marken, die der Server für schnellen Vor- und Rücklauf braucht.

Das erwähnte Paket MPEG4IP enthält übrigens auch MPEG-4-Player mit und ohne grafischer Oberfläche. Das Utility mp4info gibt für eins der mitgelieferten MPEG-4-Beispiele folgende Informationen aus:

$ mp4info sample_100kbit.mp4
mp4info version 1.1
sample_100kbit.mp4:
Track   Type    Info
1       audio   MPEG-4 AAC LC, ?
 70.031 secs, 28 kbps, 22050 Hz
2       video   MPEG-4 Simple @ L3?
 , 70.000 secs, 63 kbps, 192x240 @ ?
15.00 fps
3       hint    Payload MP4V-ES for?
 track 2
4       hint    Payload mpeg4-?
 generic for track 1
5       scene   BIFS
6       od      Object Descriptors

Die erste “Spur” (Track) enspricht der Tonspur im AAC-Format, dann folgt der Videotrack und schließlich die Hints. Danach folgen Szenendaten und Objektdeskriptoren, die hier keine Verwendung finden.

Playlists für MP3

Der Darwin-Server kann auch MP3-Dateien streamen, braucht dafür aber so genannte Playlists. Um ein solche anzulegen, klicken Sie in der linken Spalte des Web-Frontends auf Playlists. Rechts oben neben dem großen Feld finden sich die beiden relevanten Links: New MP3 Playlist für MP3-Dateien und New Movie Playlist für Filme (Abbildung 2).

Abbildung 2: Der Darwin-Streaming-Server erlaubt, mit den Links rechts oben Playlisten für Filme und MP3-Dateien anzulegen.

Abbildung 2: Der Darwin-Streaming-Server erlaubt, mit den Links rechts oben Playlisten für Filme und MP3-Dateien anzulegen.

Klicken Sie auf New MP3 Playlist, so erscheint eine Webseite wie in Abbildung 3. Die beiden Textfelder oben bestimmen den Namen der Playlist sowie den so genannten Mountpoint: Also den Teil der URL, unter der Playerprogramme die Playlist finden. Wer es gerne genau nimmt, stellt in der Ausklappliste darunter noch das richtige Musikgenre ein.

Abbildung 3: Das Web-Interface für Playlists ist recht komfortabel. Die Stücke lassen sich per Drag'n'Drop hinzufügen.

Abbildung 3: Das Web-Interface für Playlists ist recht komfortabel. Die Stücke lassen sich per Drag’n’Drop hinzufügen.

In der rechten oberen Hälfte legen Sie unter Play Mode den Abspielmodus der Liste fest, nämlich hintereinander (Sequential), hintereinander mit unendlicher Wiederholung (Sequential Looped) oder zufällig mit Gewichtung (Weighted Random). Damit Darwin die Titel wirklich zufällig wiedergibt, tragen Sie im Textfeld hinter Repetition eine Null ein. Andernfalls spielt der Server jedes Stück mindestens einmal ab, bevor er ein anderes zum zweiten Mal spielt.

Im linken Feld zeigt das Interface verfügbare Musiktitel, im rechten die zu einer Playlist gehörigen. Der clevere Javascript-Einsatz der Apple-Programmierer macht es möglich, die Titel per Drag’n’Drop einfach von einem ins andere Feld zu ziehen. In Unterverzeichnisse wechseln Sie durch einen Doppelklick oder den Link Open Folder unterhalb des Textfelds.

Im rechten Feld stellen Sie hinter dem Liedtitel die Gewichtung des Stücks für die Wiedergabeart Weighted Random ein: Je größer die Zahl (von eins bis zehn), desto häufiger spielt Darwin das MP3 ab. Haben Sie die Playlist zusammengestellt, bestätigen Sie die Änderungen ganz unten mit dem Button Save Changes.

Die folgende Webseite listet alle eingerichteten Playlists auf, die aber zunächst noch gestoppt sind. Ein Klick auf das Icon hinter dem Status startet die jeweilige Playlist. MP3-Player finden den Stream unter der Adresse http://Servername:8000/Mountpunkt. Die dazugehörigen Logdateien schreibt Darwin im Verzeichnis /var/streaming/playlists in ein Unterverzeichnis, das so heißt wie die Playlist. Dabei kennzeichnen die Dateinamenserweiterungen .err die Fehlerdatei, .config die Konfigurations, .log die Logdatei und .playlist die Playlist selbst.

Tabelle 1: Wichtige Dateien und Pfade

Name Funktion
/usr/local/sbin/DarwinStreamingServer Hauptprogramm
/usr/local/sbin/streamingadminserver.pl Perl-Skript fürs Web-Frontend
/etc/streaming/ Konfigurationsverzeichnis
/etc/streaming/streamingserver.xml Konfigurationsdatei des Servers
/var/streaming/logs Verzeichnis für Logdateien

Per Default kennt Darwin für Video- und Musikdateien nur das zentrale Verzeichnis /usr/local/movies. Der Befehl createuserstreamingdir otto legt im Homeverzeichnis des Users otto eine Verzeichnisstruktur Sites/Streaming an, wo er seine Mediadateien ablegen darf. Player erreichen diese Dateien über Adressen der Art rtsp://Servername/Benutzer/movie.mp4.

Fehlersuche mangelhaft

Die Komplexität der ganzen Unternehmung macht es einigermaßen schwierig, die Ursachen für eventuell auftauchende Probleme zu finden. So geben die Abspielprogramme geben meist nur unverständliche Fehlermeldungen aus. Häufig ist unklar, ob der Player die Datei auf dem Server nicht gefunden hat oder nur den nötigen Codec nicht besitzt.

Auf der Serverseite sieht es ähnlich aus. Zwar schreibt der Darwin-Server einige Logdateien, die aber praktisch nur unbrauchbare Informationen enthalten. So tauchte in /var/streaming/logs/Error.log kein einziger Hinweis auf Fehler, geschweige denn zu deren Behebung auf. Der Punkt Error Log im Web-Interface zeigt dieselben, sinnlosen Daten. Einzig die Logdateien der Playlists lieferten zumindest einige detaillierte Informationen und Anhaltspunkte zur Fehlersuche.

Unter technischem Aspekt gesehen bietet der Darwin-Streaming-Server einiges an Zukunftspotenzial. Zusammen mit freien Tools wie FFMpeg und MPEG4IP lässt sich eine freie Streaming-Lösung aufbauen, die auch morgen noch Bestand hat. Leider bleibt der Bedienkomfort – trotz gut gestaltetem Web-Interface – auf der Strecke. Dabei wären die Probleme bei Installation und Fehlersuche vermutlich noch einfach zu beheben. Der Linux-Support steht bei Apple allerdings wohl nicht an erster Stelle.

Infos

[1] Helix Basic Server: http://forms.real.com/rnforms/products/servers/eval/mbps.html

[2] Apple Public Source License: http://www.opensource.apple.com/apsl

[3] Registrierung: https://signin.apple.com

[4] Darwin Streaming Server: http://developer.apple.com/darwin/projects/streaming/

[5] MPlayer: http://www.mplayerhq.hu

[6] LIVE-Bibliothek für RTSP: http://www.live.com/liveMedia

[7] VideoLAN: http://videolan.org/vlc/

[8] FFMpeg: http://ffmpeg.sourceforge.net

[9] Frauke Oster, Kino-Feeling mit Totem, LinuxUser 11/04, S.26

[10] Jörn Reder, Unterm Messer, LinuxUser 11/04, S.35

[11] MPEG4IP: http://mpeg4ip.sourceforge.net

LinuxUser 01/2005 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben