Flumotion

{i} Diese Seite ist ist Teil der Technischen Dokumentation von Radio Helsinki. Alle weiteren Seiten der Dokumentation: /Flumotion

Allgemeines

Flumotion ist eine in Python geschriebene Open Source Streaming Plattform die auf GStreamer aufbaut. Im Wesentlichen bildet Flumotion ein Framework um GStreamer Pipelines zu erstellen die dann die gewünschte Funktion erfüllen. Ausserdem bietet Flumotion eine Möglichkeit die einzelenen Komponenten des Systems über mehrere Server zu verteilen und zu steuern.

Aufbau des Systems

Flumotion wird bei Radio Helsinki für den Livestream eingesetzt und läuft gemeinsamt mit unserem Archiv auf dem Server streamer. Eine per runit überwachte Instanz von gst-launch liest die rohen Audiodaten von der Soundkarte ein und verteilt diese über Multicast RTP. Von dieser Multicast Adresse holt sich Flumotion die Rohdaten und encodiert sie zunächst in Ogg-Vorbis mit 160kbit/s. Diese Version ist intern über http://streamer.helsinki.at:8000/streamfeed.ogg anhörbar. Weitere auf einem Server bei mur.at laufenden Komponenten holen sich den Stream, transcodieren Diesen in andere Bitraten und Formate und bieten Streams zum anhören. Eine Übersicht über die vergfügbaren Formate und Bitraten ist unter http://stream.helsinki.at/ zu finden.

Diagramm

Gesamtsystem

Um dieses Bild zu verändern kann die SVG Version verwendet werden.

Stream Flow

Um dieses Bild zu verändern kann die SVG Version verwendet werden.

Server

streamer.helsinki.at

Auf diesem Rechner (in den obigen Diagrammen als blau dargestellt) läuft der Manager des Stream Flows. Weiters wird auf diesem Rechner das Audiosignal mittels eines Line-In Eingangs eingelesen. Ausserdem beherbergt dieser Server auch noch das ca. 30 Tage umfassende Flac Archiv und das gesetzlich vorgeschriebene Archiv in Ogg-Vorbis mit 250 kBit. Zu guter letzt wird auf diesem Rechner noch der Ogg Feed für den Live Stream generiert. Sowohl der archiv Flow als auch der stream Flow bekommen die Audiodaten per RTP vom rawaudiosrc Flow. Über dieses Interface können künftig auch noch andere Flows auf den Raw Audio Stream zugreifen. Die folgenden XML Dateien bilden die Konfiguration der verschiedenen Manager und Worker auf diesem Server.

manager-stream.xml

worker-streamfeed.xml

stream.helsinki.at

Auf diesem Server (in den obigen Diagrammen als rot dargestellt) bei mur.at wird das in Ogg-Vorbis mit 160 kBit eingespeiste Signal in verschiedene Formate und Bitraten transkodiert und per HTTP angeboten. Die folgenden XML Dateien bilden die Konfiguration der verschiedenen Worker auf diesem Server. Die Porter Komponente läuft in einem eigenen Flumotion Flow um den Port mit anderen Streams von mur.at teilen zu können.

worker-rhstream-input.xml

worker-rhstream-enc-ogg.xml

worker-rhstream-enc-mp3.xml

worker-rhstream-http.xml

Wartung

Worker und Manager

Für das starten und stoppen der Manager und Worker ist das Initscript /etc/init.d/flumotion zuständig. Wird dieses (z.b. beim boot) mit dem einzigen Parameter start aufgerufen wir zunächst aus der Datei /etc/default/flumotion ausgelesen ob und wenn ja welche Manager und Worker zu starten sind. Sollten die beiden Variablen MANAGER_AUTOSTART und WORKER_AUTOSTART leer sein wird versucht alle Manager und alle Worker zu starten. Eine Liste der konfigurierten Manager und Worker kann mit dem Kommando # sudo /etc/init.d/flumotion list ausgegeben werden. Das Komamndo # sudo /etc/init.d/flumotion status zeigt die laufenden und erkannten aber nicht laufenden Manager und Worker an. Um manuell einen Worker oder Manager zu starten kann das Kommando # sudo /etc/init.d/flumotion start worker <worker-name> bzw. # sudo /etc/init.d/flumotion start manager <manager-name> verwendet werden. Selbige Syntax kann auch in mit dem Parameter stop und restart verwendet werden umd die entsprechenden Operationen auf den Manager oder Worker auszuführen.

Beispiele

Alle Manager und Worker die beim Booten gestartet wurden neustarten (eigentlich werden alle laufenden gestoppt und die neu gestartet die auch beim booten gestartet werden:

# /etc/init.d/flumotion restart

Nur einen bestimmten Manager neu starten:

# /etc/init.d/flumotion restart manager stream

Nur einen bestimmten Worker beenden:

# /etc/init.d/flumotion stop worker streamfeed

alle Manager und Worker beenden

# /etc/init.d/flumotion stop

CategoryDocumentation