Live Streaming mit Flumotion

Aus LinuxUser 09/2006

Live Streaming mit Flumotion

Starke Strömung

Wollen Sie im großen Stil Multimedia-Inhalte unter das Internetvolk bringen, hilft Ihnen die Streaming Media Software Flumotion.

Aus dem Fernsehen kennt man die Live-Übertragung bereits seit Jahrzehnten – nun präsentieren zunehmend Veranstalter ihre Konferenzen, Konzerte oder Events via Live Streaming zeitgleich im Internet.

Im Unterschied zu Webcams, von denen eine Webseite alle zehn Sekunden ein Bild holt, sendet ein Multimedia Stream Server kontinuierlich Bild- und Sounddaten. Die Streaming-Software muss im ersten Schritt die Daten, die zum Beispiel von einer Kamera stammen, komprimieren, um bei der Übertragung Bandbreite zu sparen. Im zweiten Schritt liefert sie die Inhalte an verschiedene Empfänger mit unterschiedlichen Betriebssystemen aus – und das möglichst, ohne Aussetzer zu erzeugen. Diese Aufgabe meistert die freie Streaming-Lösung Flumotion. Sie stellt Datenströme für eine große Anzahl von Nutzern bereit, die diese dann über ihren Java-fähigen Browser empfangen – plattformübergreifend.

Dazu setzt Flumotion auf die freien Audio- und Video-Codecs Vorbis und Theora und streamt Daten von einer Firewire-Quelle, einer TV-Karte oder einer Webcam. Damit auch Windows- und Mac-Nutzer an die Daten gelangen, liefert ein Apache-Server eine HTML-Seite aus, die den Stream in ein Java-Applet namens Cortado einbettet. Die Empfänger rufen die Sendung über ihren Browser auf, alternativ auch mit dem Realplayer und einem installierten Theora-Plugin. Um einen Live Stream mit Linux zu streamen, brauchen Sie neben der Kamera die Flumotion-Software, das Java-Applet Cortado sowie den Webserver Apache [1]. Apache ist Teil der meisten Distributionen, Cortado und Flumotion [2] stehen unter der GPL: Die Firma Fluendo unterstützt die Entwicklung des freien Streaming Servers.

Arbeiter und Manager

Flumotion setzt auf Gstreamer: So genannte Feed-Komponenten – Feed bedeutet einfach Stream oder Datenstrom – empfangen ein Signal, wandeln es um und senden es dann wieder. So generiert zum Beispiel eine Producer-Komponente aus den DV-Daten einer Kamera einen Feed, den die Converter-Komponente entgegen nimmt und ins Theora-Format konvertiert. Die Consumer-Komponente schickt den umgewandelten Datenstrom dann ins Netzwerk (Abbildung 1). Diese Abfolge der Komponenten heißt auch Flow: Es gibt verschiedenste Gstreamer-Komponenten, die als Producer, Converter und Consumer für ganz unterschiedliche Formate dienen.

Abbildung 1: Komponenten in Aktion: Der Manager von Flumotion kontrolliert sowohl den Worker als auch die Komponenten.

Abbildung 1: Komponenten in Aktion: Der Manager von Flumotion kontrolliert sowohl den Worker als auch die Komponenten.

Davon bekommen Sie aber nichts mit. Sie starten lediglich den Worker- und den Manager-Daemon, wobei letzterer den gesamten Prozess koordiniert. Der Worker loggt sich beim Manager ein und ruft auf dessen Geheiß die gerade benötigten Komponenten auf. Neben den Feed-Komponenten gibt es noch andere Bestandteile wie den Tester, mit dem Sie eine bestimmte Menge an Clients simulieren, um die Belastbarkeit des Feeds zu testen.

Flumotion-Admin dient als grafische Oberfläche, die Ihnen den Umgang mit der Software erleichtert. Die Kommunikation zwischen den Komponenten und Daemons passiert über TCP, das Sie wahlweise mit SSL verschlüsseln, wobei SSL-Zertifikate zum Einsatz kommen.

Flumotion einspielen

Die folgende Anleitung beschreibt die Installation auf Kubuntu Dapper Drake. Für andere Linux-Versionen funktioniert der Weg analog, allerdings hören die Pakete auf etwas andere Namen. Leider liefen im Test die fertigen Debian-Pakete nicht, die Installation der Sourcen klappte dagegen sehr gut. Nach einer Standard-Installation von Dapper Drake brauchen Sie zusätzliche Python-Software, die Sie eventuell nicht auf Ihrer Installations-DVD finden. Binden Sie daher zunächst weitere Paketquellen für Ubuntu ein (siehe Kasten “Zusätzliche Paketquellen”).

Zusätzliche Paketquellen

Öffnen Sie mit sudo pico /etc/apt/sources.list die für Paketquellen zuständige Datei und entfernen Sie das # vor dem Eintrag deb http://de.archive.ubuntu.com/ubuntu/ dapper universe. Ergänzen Sie die Zeile noch um multiverse restricted, ebenso die darunter liegende Zeile. Sie lassen die nächste Zeile leer, tippen dann deb http://packages.freecontrib.org/ubuntu/plf/ dapper free non-free und speichern die Einstellungen. Ein beherztes sudo apt-get update bringt die Paketdatenbank auf den neuesten Stand.

Welche Abhängigkeiten Flumotion offiziell benötigt, entnehmen Sie der Datei README[3]. Um auf Nummer sicher zu gehen, installieren Sie ein paar Pakete mehr über sudo apt-get install python-gtk2-dev gstreamer* python-gst* apache2-utils checkinstall und führen sudo apt-get install gcc make automake aus, um die Werkzeuge zum Übersetzen der Quellen einzuspielen.

Nun laden Sie den Quellcode der Version 0.2.1 von der Heft-CD herunter, entpacken ihn in das Home-Verzeichnis und wechseln in das neue Unterverzeichnis flumotion-0.2.1. Wählen Sie ein anderes als das Home-Verzeichnis, müssen Sie die Pfade entsprechend anpassen.

Die Kommandos ./configure, make und sudo checkinstall installieren den Streaming Media Server. Der letzte Befehl baut aus dem übersetzen Programm gleich ein Debian-Paket, das Sie bequem wieder deinstallieren (siehe Kasten “Checkinstall”).

Checkinstall

Mehr Informationen zu Checkinstall bietet ein LinuxUser-Artikel [4]. Die Fragen, die das Programm Ihnen stellt, bestätigen Sie einfach jeweils mit [Eingabe], nur an einer Stelle geben Sie den Namen flumotion ein. Checkinstall baut und installiert das Paket dann automatisch, der Befehl sudo dpkg -r --purge flumotion entfernt es wieder.

Erzeugen Sie ein Passwort, mit dem sich der Worker beim Manager einloggt: Dabei hilft das im Paket apache2-utils enthaltene Programm htpasswd. Geben Sie htpasswd -nb user test ein und bestätigen Sie die Aktion mit [Eingabe]. Die Ausgabe lautet dann in etwa user:pe3unRVcD64ek, wobei das verschlüsselte Passwort nach dem Doppelpunkt jeweils variiert. Anschließend öffnen Sie die Datei planet.xml im Verzeichnis ~/flumotion-0.2.1/conf/managers/default/ und ersetzen den dort vorhandenen Eintrag user durch Ihren neuen Benutzernamen sowie das Passwort und speichern die Datei: Flumotion ist jetzt startklar.

Ready for Take-off

Nun setzen Sie die Streaming-Maschinerie in Gang. Dazu rufen Sie zuerst den Manager auf:

sudo flumotion-manager -d 3 --certificate=/home/Benutzername/flumotion-0.2.1/conf/default.pem /home/Benutzername/flumotion-0.2.1/conf/managers/default/planet.xml

Nach Eingabe Ihres Benutzerpassworts startet Flumotion den Manager. Dass der Aufruf so lang ausfällt, resultiert daraus, dass Sie zunächst auf ein SSL-Zertifikat mit dem Namen default.pem verweisen, anschließend auf die Konfigurationsdatei planet.xml.

TIPP

Das Zertifikat dient als Dummy und ist Teil des Flumotion-Quellcodes: Um die Streaming Software sicher einzusetzen, benötigen Sie ein echtes SSL-Zertifikat. Alternativ verwenden Sie Flumotion ohne SSL – dann kann allerdings jemand die Daten mitlesen. Ändern Sie auch Benutzernamen und Passwort.

Der Aufruf des Flumotion-Managers erzeugt zugleich auch einen Ordner .flumotion im Home-Verzeichnis, der einen Zugriff nur mit Root-Rechten gestattet. Das ändern Sie, indem Sie mit

sudo chown -R Benutzername:Benutzername /home/Benutzername/.flumotion

den Zugriff auf das Verzeichnis und seine Dateien auch gewöhnlichen Benutzern einräumen. Anschließend starten Sie den Worker:

sudo flumotion-worker -d 3 -u Benutzername -p Passwort

Aufgrund der Option -d 3 gibt der Worker einige Statusinformationen aus. Mit den Parametern -u und -p übergeben Sie beim Login den Benutzernamen und das Passwort, das Sie mit Htpasswd erzeugt haben. Die Ausgabe Logged in to manager bestätigt eine erfolgreiche Anmeldung des Arbeiters.

Als normaler Nutzer geben Sie schließlich flumotion-admin -d 3 ein und starten damit ein GUI, mit dessen Hilfe Sie Worker und Manager konfigurieren. Über Forward erreichen Sie jeweils den nächsten Punkt. Wählen Sie zuerst Connect to a running manager und geben Sie das vorhin erstellte Login und Passwort ein.

Zaubertricks

Im Dialogfeld Source nutzen Sie als Video- und Audioquellen Test Video Source sowie Test Audio Source. Flumotion überträgt dann ein einfaches Testbild sowie einen 440-Hz-Ton. Später wählen Sie hier dann ein angeschlossenes Gerät aus, etwa eine Kamera.

Nach einem Klick auf Forward legen Sie Seitenverhältnis, Framerate, Format und Pattern für die Videoquelle fest, wobei es sich bei Pattern schlicht um ein Muster für das spätere Testbild handelt. Belassen Sie am besten alles bei den Vorgaben, auch die folgenden Einstellungen sollten Sie nicht ändern. Darüber bestimmen Sie, welche Qualität Testbild und Testton haben. Streamen Sie einen eigenen Film, passen Sie diese Werte natürlich an, um Bandbreite zu sparen oder das Bild in einem größeren oder kleineren Format auszuliefern.

Auch im Fenster HTTP Streamer lassen Sie die Voreinstellungen einfach stehen: Die Option Burst on connect sorgt dafür, dass Flumotion sich anfangs mehr Bandbreite nimmt, um den Puffer zu füllen. Nach Abschluss der Konfiguration erscheint ein Fenster mit vielen Smileys (Abbildung 2). Sie symbolisieren den Zustand der einzelnen Worker, die sich nun nacheinander einloggen, was gelegentlich ein bis zwei Minuten dauert. Grinsen alle Smileys, funktioniert Flumotion. Will ein Smiley partout nicht lachen, zeigt eine Fehlermeldung, welches Problem ansteht. Meist fehlen Gstreamer-, Python- oder Twisted-Module: Überprüfen Sie also, ob bei Ihnen alle oben angegebenen Programme laufen.

Abbildung 2: Was gibt's da zu lachen, wo doch jetzt alle hart arbeiten müssen? Die Smileys zeigen, dass Flumotion auf Sendung ist.

Abbildung 2: Was gibt’s da zu lachen, wo doch jetzt alle hart arbeiten müssen? Die Smileys zeigen, dass Flumotion auf Sendung ist.

Ein kleiner Test zum Abschluss: Rufen Sie auf dem selben Rechner Kaffeine auf, wählen Sie URL öffnen und geben Sie http://127.0.0.1:8800 ein. Kaffeine zeigt nach einer Weile des Pufferns das Testbild an (Abbildung 3). Wollen Sie stattdessen Ihre Webcam einbinden, geben Sie im Wizard-Fenster Source einfach Webcam an und im nächsten Dialogfenster zum Beispiel /dev/video0: Gewöhnlich erkennt Flumotion das Gerät von selbst. Schwierigkeiten treten auf, wenn die Gerätedateien zu restriktive Rechte voraussetzen.

Abbildung 3: Das Fluendo-Testbild erscheint hier im Firefox, als Stream eingebettet in ein Java-Applet.

Abbildung 3: Das Fluendo-Testbild erscheint hier im Firefox, als Stream eingebettet in ein Java-Applet.

Plattformübergriff

Damit auch andere Betriebssysteme wie Windows oder Mac den Stream mit dem Browser empfangen, benötigen Sie das Java-Applet Cortado – es sei denn Sie nutzen den Realplayer mit Xiph-Plugin [5]. Sie kopieren einfach die Datei cortado-ovt-0.1.2.jar[6] in das Verzeichnis /var/www/ (das aber erst nach der Installation des Apache-Servers erscheint) und benennen Sie um in cortado.jar.

Der Browser des Betrachters benötigt ein Java-Plugin. Die Mac-Browser bringen Java bereits mit. Um Java mit dem Microsoft Internet Explorer zu nutzen, installieren Sie am besten die neueste Java-Version [7] von Sun. Wie Sie Java unter Linux als Firefox-Plugin installieren, erklärt der Kasten “Java installieren”.

Java installieren

Zunächst sollten Sie prüfen, ob Sie Java schon auf dem PC haben: Der Befehl java -version gibt darüber Aufschluss. Ob Ihr Firefox bereits ein Java-Plugin nutzt, offenbart die Eingabe von about:plugins in die Adressleiste.

Sun wartet auf seiner Java-Seite [8] mit einer detaillierten deutschsprachigen Erklärung auf, wie Sie Java installieren und in den Browser integrieren. Unter Ubuntu und Debian nutzen Sie die selbstextrahierende Linux-Binärdatei, unter Suse das angebotene RPM-Paket.

Auf dem Kriegspfad

Ein Apache-Server aufzusetzen, ist mittlerweile ein Kinderspiel: Geben Sie unter Kubuntu sudo apt-get install apache2 ein, so läuft wenig später ein Server unter http://127.0.0.1. Das Wurzelverzeichnis des Apache heißt /var/www/, dorthin gehört auch die Datei namens index.html (siehe Kasten “index.html”), die das Cortado-Applet – das ja bereits dort liegt – einbettet. Was macht nun die HTML-Datei?

index.html

<html>
  <center>
    <applet archive="cortado.jar" code="com.fluendo.player.Cortado.class" width="360" height="288">
      <param name="url" value="http://192.168.1.183:8800" />
      <param name="video" value="true" />
      <param name="audio" value="true" />
      <param name="bufferSize" value="500" />
    </applet>
  </center>
</html>

Zunächst definiert die Zeile 3, wie das einzubindende Java-Applet heißt und wo es liegt. Zeile 4 übergibt die Adresse des Streams an das Applet, anschließend folgen in den Zeilen 5 und 6 noch Parameter, die bestimmen, ob das Applet Audio- und Videodaten überträgt. Zeile 7 definiert noch einen Puffer von 500 KByte – fertig.

Rufen Sie nun in einem Browser von einem beliebigen Rechner im LAN die IP-Adresse Ihres Rechners auf, erscheint ein wunderschönes Testbild. Und mal ehrlich: Auf welchem Fernsehsender läuft denn sowas heute noch?

LinuxUser 09/2006 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