Kurs:Neueste Internet- und WWW-Technologien/Streaming Media

Aus Wikiversity
Zur Navigation springen Zur Suche springen

Entwicklungsgeschichte[Bearbeiten]

Einer der ersten Versuche Bilder live über das Internet zu übertragen war 1992 die Trojan Room Coffee Machine. Über eine Schwarzweiß-Kamera wurde der Füllstand einer Kaffee-Maschine als Bild übertragen und alle drei Minuten aktualisiert. Sie stellt sozusagen den ersten Prototypen einer Webcam dar. [1]

Mit Verbesserung der Bandbreite des Internets in den späten 1990ern beschleunigte sich auch die Entwicklung und Verbreitung von Streaming. Der bedeutendste Anbieter von Streaming-Technologie in dieser Zeit war RealNetworks. Mit den Einstieg von Adobe, Apple und Microsoft in dieses Feld, verloren sie aber schnell ihre Vormachtstellung. [2] In den Zeiten des Internetbooms entstanden so eine Vielzahl von Internetradios und Videoplattformen.[3]

Ziele der Technologie[Bearbeiten]

Streaming Media bildet das Internet-Äquivalent zum Rundfunk wie Radio und Fernsehen. Technisch gesehen handelt es sich dabei aber in den meisten Fällen nicht um Rundfunk, da eine Punkt-zu-Punkt-Verbindung zwischen dem Media-Servern und den Clienten verwendet wird. [4] Es soll das bereitstellen von großen Audio- und Videoinhalten im Internet ermöglichen. Vor allem der Schutz der Inhalte vor unerlaubter Weiterverwendung sowie die begrenzte Bandbreite im Internet sind Probleme die mit Media Streaming gelöst werden sollen.

Vergleich mit ähnlichen Technologien[Bearbeiten]

Eine Technik die oft mit Streaming verwechselt wird, ist der sogenannte Progressive Download. Dabei wird der Header einer Media-Datei zuerst übertragen und anschließend der eigentliche Inhalt der Datei. [5] Dadurch kann der Inhalt abgespielt werden, noch bevor die Datei komplett runtergeladen wurde. Ein Nachteil dieser Technik gegenüber von Streaming ist, dass kein freies Spulen innerhalb des Inhalts möglich ist. Es ist nur ein Spulen innerhalb des bereits runtergeladenen Inhalts möglich ist. Ein weiterer Nachteil ist, dass kein effektiver Schutz der Inhalte vor Weiterverwendung möglich ist.

Einsatzgebiete[Bearbeiten]

Bei Streaming Media unterscheid man im wesentlich in zwei Kategorien:

Video-on-Demand[Bearbeiten]

Beim Video-on-Demand können Nutzer Inhalte frei abrufen und beliebig pausieren sowie vor- und zurückspulen. Dabei sind die gestreamten Inhalte für jeden Nutzer individuell. Beispiele für dieses Anwendungsgebiet sind Youtube, Soundcloud und Maxdome.

Live-Streaming[Bearbeiten]

Bei Live-Streaming werden direkt oder zuvor aufgenommene Inhalte übertragen werden. Dabei wird zu jedem Nutzer derselbe Inhalt gestreamt und ein pausieren oder spulen ist nicht möglich. Beispiele sind Internetradio, Live-Übertragungen von Konferenzen, IP-TV oder Video-Chats

Grundbregriffe[Bearbeiten]

Singlecast[Bearbeiten]

Beim Singlecast wird eine Peer-to-Peer-Verbindung zwischen Server und Client aufgebaut. Dadurch können die abgespielten Inhalte zwischen den Clients unabhängig sein. Ein Nachteil dieses Verfahrens ist die große Netzwerk- und Serverlast, die durch die vielen notwendigen Verbindungen bei mehreren Clients auftritt.

Multicast[Bearbeiten]

Eine Übertragung über eine Multicast-Verbindung ist dem klassischen Rundfunk am ähnlichsten. Der Server überträgt bei diesem Verfahren die Pakete an eine Multicast-Adresse, die dahinterliegende Netzwerk-Topologie repliziert diese Pakete und leitet sie an die Clients, welche zur Multicast-Adresse gehören weiter. Dadurch wird die Serverlast für das Codieren und Übertragen des Streams minimiert und die Netzwerkauslastung verteilt sich auf das gesamte Netzwerk. Multicast-Verfahren basieren meist auf IPv4-Multicast. Da IPv4-Multicast nur eine Erweiterung des IPv4-Standards ist, wird er nicht von allen Geräten unterstützt. Dadurch ist eine Multicast-Übertragung über das Internet oft nicht möglich, weswegen die Technik hauptsächlich im lokalen Netzwerken zum Einsatz kommt. Ein weiterer Nachteil der Technik ist, dass keine Video-On-Demand-Inhalte damit übertragen werden können.

Pull-based[Bearbeiten]

Bei einer pull-based Übertragung stellt der Client den aktiven Teil dar. Er verwaltet den Abspielzeitpunkt und fordert fortlaufend Ausschnitte des Streams beim Server an. Auch die Anpassung der angeforderten Bildqualität an die Bandbreite erfolgt durch den Client. Diese Art der Übertragung ist sehr gut geeignet um das Last des Streaming auf mehrere Server zu verteilen. Da kein Session-Management auf dem Server erfolgen muss und somit auch keine Synchronisation zwischen den Servern notwendig ist, wird diese Technik sehr häufig verwendet um das Streaming mit Hilfe von Cloud-Computing zu skalieren. Ein Nachteil des Verfahrens ist es, dass es sich aufgrund der Charakteristik der Kommunikation nicht für Multicast-Übertragungen eignet. Die Übertragung erfolgt meist über das HTTP Protokoll.

Push-based[Bearbeiten]

Im Falle einer push-based Übertragung übernimmt hingegen der Server die aktive Rolle bei der Kommunikation ein. Zu Beginn baut der Client eine Verbindung zu einem Server auf und fordert einen Stream an. Der Server schickt anschließend kontinuierlich Pakete an den Client. Über Befehle kann der Client die Übertragung dieser Pakete beeinflussen und somit den Stream pausieren oder auch spulen. Bei diesem Verfahren hat der Server eine recht hohe Rechenlast, da er die Sessions zu den jeweiligen Clients verwalten muss und auch die Bildqualität der Streams an die Bandbreite zu den jeweiligen Clients anpassen muss. Protokolle die auf diesem Verfahren bassieren sind RTP, RTSP und RMTP. Die Art der Kommunikation erlaubt sowohl Single- als auch Multicast-Übertragung.

Praxisbeispiele[Bearbeiten]

Übertragung eines Streams mit dem VideoLAN Client[Bearbeiten]

Mit Hilfe des VideoLAN Clients kann auf eine recht einfache Weise ein Stream über ein lokales Netzwerk oder das Internet übertragen werden. Der VideoLAN Client unterstützt dabei eine ganze Reihe von Protokollen und Codecs an. Zu den unterstützden Protokollen gehören: HTTP, WMSP, RTP, RTSP, UDP und IceCast. Als Video-Codecs werden H.264, WMV und VP80 unterstützt und als Audio-Codecs AAC, WMA, Vorbis und MP3. In der Praxis zeigt sich aber, dass nicht alle der Protokolle und Codecs auch zuverlässig funktionieren. Der VideoLAN Client ist daher nicht für einen professionellen Einsatz geeignet.

Um einen Stream über den VideoLAN-Client zu übertragen sind folgende Schritte notwendig:

  1. Im Menü "Medien->Stream" auswählen.
  2. Die gewünschte Quelle für den Stream auswählen. Zur Auswahl stehen das Abspielen einer Datei, das Abspielen einer DVD/Blueray, die Weiterübertragung eines anderen Netzwerk-Streams sowie die Live-Übertragung einer DirectShow-Quelle(Webcam, TV-Karte, Desktop).
  3. Auf "Stream" klicken.
  4. Den Tab "Ziel auswählen" anklicken.
  5. Das gewünschte Protokoll auswählen und auf "Hinzufügen" klicken. (empfohlen: RTSP)
  6. Einen freien Port auswählen sowie den Pfad für die Übertragung angeben(kann beliebig gewählt werden).
  7. Ein passendes Codec auswählen oder die Transcodierung deaktivieren. Eine Transcodierung ist sehr rechenaufwändig und ist nicht auf jeden Computer flüssig möglich. Liefert die Ausgangsquelle keine Daten in einem geeigneten Format, kann die Übertragung aber ohne Transcodierung zuviel Bandbreite benötigen. Eine gute Wahl für das Codec sind H.264 + AAC.
  8. Mit einen Klick auf "Stream" wird das Streaming begonnen.

Der so gestartete Stream kann mit dem VideoLAN-Client auch geöffnet werden:

  1. Im Menü "Medien->Netzwerkstream öffnen" auswählen.
  2. Die URL des Streams eingeben: {Protokoll}://{Adresse des Servers}:{Port}/{Pfad}. Eine Beispiel für eine gültige Adresse ist: rtsp://192.168.1.1:5544/livestream
  3. Auf "Wiedergabe" klicken.

Video-on-Demand mit dem Flash Media Server[Bearbeiten]

Der Flash Media Server bietet die Möglichkeit Videos im Flash- oder MP4-Format über das HTTP oder RTMP-Protokoll zu streamen. Das Streaming über das HTTP-Protokoll kann dabei für Adobe Player oder Apple Player(auch iOS-Geräte) erfolgen. Zum Testen des Flash Media Server gibt es eine eingeschränkte Version für Entwickler, welche man nach Anmeldung kostenlos herunterladen kann. Um das Streaming über HTTP-Protokoll nutzen zu können muss bei der Installation des Flash Media Server der Apache Server mit installiert werden.

Ein Video-On-Demand Stream wird auf folgende Weise eingerichtet:

  1. Videos im FLV, F4V oder MP4-Format in den Ordner {Installations-Verzeichnis}/webroot/vod kopieren.
  2. Adobe HTTP Dynamic Streaming:
    1. Strobe Media Player im Verzeichnis: {Installations-Verzeichnis}/webroot/samples/videoPlayer/videoplayer.html öffnen
    2. Die URL für den Stream ist: http://{Server-Adresse}/hds-vod/{Video-Datei}.f4m
    3. Der Flash Media Server erstellt automatisch eine passende f4m-Metadatei für den Player. Die URL kann natürlich auch für andere Flash Player verwendet werden.
  3. Apple HTTP Live Streaming:
    1. Den Safari Browser auf einem iOS-Gerät öffnen.
    2. Die URL für den Stream ist: http://{Server-Adresse}/hls-vod/{Video-Datei}.m3u8
    3. Auch für Apple Live Streaming erstellt der Flash Media Server automatisch die notwendige Metadatei.
  4. Adobe RTMP Streaming:
    1. Strobe Media Player im Verzeichnis: {Installations-Verzeichnis}/webroot/samples/videoPlayer/videoplayer.html öffnen
    2. Die URL für den Stream ist: rtmp://{Server-Adresse}/vod/{Video-Datei}.f4m
    3. Wie bei den vorherigen Varianten wird die Metadatei automatisch erstellt

Multibitrate-Streams mit dem Flash Media Server[Bearbeiten]

Um eine automatische Anpassung der Bildqualität an die Bandbreite zu ermöglichen unterstützt der Flash Media Server Mutlibitrate-Streams. Multibitrate-Streams können auf folgende Weise konfiguriert werden:

  1. Ein Video mit mehreren unterschiedlichen Bitraten kodieren und als einzelne Dateien speichern z.B. sample1_150kbps.f4v, sample1_700kbps.f4v, sample1_1500.kbps.f4v
  2. Alle Videos in das Verzeichnis {Installations-Verzeichnis}/webroot/vod kopieren
  3. Metadateien mit dem F4M/M3U8 Generator erzeugen. Dieser befindet sich unter {Installations-Verzeichnis}/tools/f4mconfig/configurator/f4mconfig.html
  4. Adobe HTTP Dynamic Streaming:
    1. f4m-Dateityp wählen
    2. Name der Videodateien(absoluter oder relativer Pfad) und jeweilige Bitrate eintragen.
    3. Videodatei mit "Add" hinzufügen(Schritte für alle Videos wiederholen)
    4. Mit "Save Manifest" die Metadatei erzeugen und unter {Installations-Verzeichnis}/webroot/vod speichern
    5. Auf den Stream kann über die URL: http://localhost/{name}.f4m zugegriffen werden.
  5. Apple HTTP Live Streaming:
    1. m3u8-Dateityp wählen
    2. Name der Videodateien(absoluter oder relativer Pfad), jeweilige Bitrate, Programm-ID und Auflösung eintragen. Die Programm-ID muss für jedes Video gleich sein.
    3. Videodatei mit "Add" hinzufügen(Schritte für alle Videos wiederholen)
    4. Mit "Save Manifest" die Metadatei erzeugen und unter {Installations-Verzeichnis}/webroot/vod speichern
    5. Auf den Stream kann über die URL: http://localhost/{name}.m3u8 zugegriffen werden.

Live-Übertragung mit dem Flash Media Server[Bearbeiten]

Um einen Livestream zu übertragen wird zusätzlich zum Flash Media Server der Flash Media Live Encoder benötigt. Dieser kann nach Anmeldung kostenlos bei Adobe runtergeladen werden. Der Flash Media Live Encoder nimmt dabei das Video von einer Kamera und einem Mikrofon auf, codiert es und überträgt es zum Flash Media Server. Dieser wiederum übernimmt die Weiterverteilung des Live-Streams an die Client-Anwendungen. Ein Livestream lässt sich mit folgenden Schritten einrichten:

  1. Den Flash Media Live Encoder starten
  2. Unter "Video->Device" die zu verwendende Kamera auswählen sowie unter Audio->Device das zu verwendende Mikrofon
  3. Unter "Preset" können einige Vorgefertigte Einstellungen für die Codecs genutzt werden. Alternativ können Codec, Bitrate und Auflösung auch manuell eingestellt werden.
  4. Im rechten Feld wird unter "FMS-URL" die Adresse des Server eingegeben: rtmp://{Server-Adresse}/live
  5. Im Feld "Stream" kann ein Name für den Live-Stream festgelegt werden z.B. livestream
  6. Zusätzlich zum Live-Stream kann auch eine Aufnahme als Datei angelegt werden um diese später als Video-On-Demand anzubieten. Dazu muss der Hacken bei "Save to file" gesetzt werden und der Dateiname eingetragen werden.
  7. Mit einem Klick auf "Start" wird die Aufnahme und die Übertragung an den Server begonnen
  8. Mit dem Strobe Media Player kann auch der Live-Stream geöffnet werden. Die URL für den Livestream ist: rtmp://{Server-Adresse}/live/{Stream-Name}

Video on Demand mit dem Helix Media Server[Bearbeiten]

Der Helix Media Server von RealNetworks unterstützt eine Vielzahl von Protokollen und Formaten. Er eignet sich dadurch besonders gut, wenn möglichst viele Endgeräte auf einen Stream zugreifen können sollen, da nur ein Server installiert werden muss. Neben der Unterstützung vieler Protokolle bietet der Helix Media Server die verfügbaren Videos auf Abruf in das notwendige Format zu konvertieren und passende Meta-Dateien für das Streaming bereitzustellen. So müssen Videos auf dem Server nur in einem Format codiert werden und können trotzdem auf verschiedenen Endgeräten bereitgestellt werden.

Um Videos mit dem Helix Media Server zu streamen müssen sie in den Ordner: {Installations-Verzeichnis}/Content/ abgelegt sein. Es können dabei auch Unterordner verwendet werden.

Der Zugriff auf diese Video erfolgt dabei über die URL: {Protokoll}://{Adresse}:{port}/{Mount-Point}/{Pfad}/{Video-Datei}

Unterstützte Protokolle:

Protokoll Verwendung
http Progressive Download oder Apple HTTP Live Streaming
https Progressive Download oder Apple HTTP Live Streaming(encrypted)
mms Microsoft Media Services für Windows Media Player und Silverlight
rtmp Real-Time Messaging Protocol für Flash Player
rtsp Real-Time Streaming Protocol für Real Player, 3GPP und MPEG-4 Clienten

Die Ports für die Protokolle lassen sich auf der Admin Console einrichten:

  1. http://{Adresse}:16161/admin/index.html öffnen
  2. Server Setup->Ports auswählen
  3. Port für das jeweilge Protokoll eintragen
  4. Einstellungen mit "Apply" übernehmen

Es gibt folgende Vordefinierte Mount-Points die Videos automatisch in ein passendes Format konvertieren und die nötige Meta-Datei erzeugen:

Mount-Point Funktion
/ Streaming der Inhalte ohne das Video zu konvertieren und eine Meta-Datei zu erzeugen z.B. wenn Inhalte im richtigen Format inkl. Meta-Datei vorliegen
/iPhone/ Für m3u8-Meta-Dateien und bereits passend segmentierte Videos
/iPhone-src/ Videos werden automatisch in segmentierte Videos für Apple HTTP Live Streaming umgewandelt
/asxgen/ Streaming für Windows Mediaplayer Inhalte über HTTP, automatische Erzeugung der ASX-Meta-Datei
/flashgen/ Streaming von Inhalten für Flash Player über HTTP, automatische Erzeugung der Meta-Datei
/m3ugen/ Streaming von Inhalten für Apple HTTP Live Streaming, m3u8-Meta-Dateien werden automatisch erzeugt
/ramgen/ oder /sdpgen/ Streaming von Inhalten für RealPlayer

Mit Hilfe von URL-Aliasing können kürzere URLs für bestimmte Pfade oder Videos festgelegt werden. Dazu sind folgende Schritte notwendig:

  1. http://{Adresse}:16161/admin/index.html öffnen
  2. "Server-Setup->URL Aliasing" auswählen
  3. Auf "+" klicken um eine neues Alias hinzuzufügen
  4. Beschreibung für das Alias eingeben(dient nur der Übersicht, Name kann beliebig gewählt werden)
  5. Kurzversion der URL unter Alias eintragen z.B. /desert
  6. Name der Resource eintragen auf die zugegriffen werden soll z.B. /flash/Desertrace.f4v
  7. Mit "Apply" die Änderungen übernehmen

Diskussion[Bearbeiten]

Von den drei vorgestellten Programmen ist der VLC Player am wenigsten geeignet um Media Streams einer großen Anzahl von Nutzern bereit zustellen. Er eignet sich aber gut um auf einfache Art und Weise einen Stream von einem Rechner auf einen anderen zu übertragen oder Streams aus verschiedenen Quellen zu öffnen.

Der Adobe Flash Media Server ist im Moment die am weitesten verbreitetste Lösung zum Streaming von Video- und Audio-Inhalten. Viele Plattformen wie z.B. auch Youtube setzen auf diese Lösung. Seit der neusten Version ist es auch möglich Streams über das Apple HTTP Live Streaming Protokoll direkt auf iOS-Geräte zu übertragen. Dies war durch die fehlende Unterstützung von Flash unter iOS Anfangs noch ein großes Problem. Durch die einfache Konfiguration und die hohe Verbreitung eignet sich der Adobe Flash Media Server sehr gut um Video-On-Demand sowie Live-Streams für viele verschiedene Geräte anzubieten.

Um mit einer Lösung auf viele verschiedene Clienten streamen zu können, ist der RealNetworks Media Server eine gute Wahl. Mit einer einzigen Serverlösung ist es möglich Inhalte auf Flash Player, Real Player, Windows Media Player, Quicktime Player und iOS-Geräte zu streamen. Videos können dabei dynamisch in das für das Protokol notwendige Format konvertiert werden.

Ein großes Problem bei Streaming Media stellt, die hohe Netzwerk- und Serverauslastung dar, wenn viele Clienten auf einen Stream zugreifen. Streaming Server werden aus diesen Grund häufig in Cloud-Umgebungen ausgeführt. Adobe z.B. bietet ihren Media Server auch als Service in der Amazon Cloud an.[6]

Quellen[Bearbeiten]

  1. 'The Trojan Room Coffe Machine'(abgerufen am 12.07.2012)
  2. Tim Pritlov: 'Chaosradio Express Folge 137: AV Streaming'(veröffentlicht am 22.11.2009)
  3. 'Wikipedia: Geschichte und Entwicklung des Streaming Media'(abgerufen am 12.07.2012)
  4. 'Wikipedia: Streaming Media'(abgerufen am 12.07.2012)
  5. Tim Pritlov: 'Chaosradio Express Folge 137: AV Streaming'(veröffentlicht am 22.11.2009)
  6. 'Adobe Media Server 5 on Amazon Web Services'(abgerufen am 21.07.2012)

Weiterführende Links[Bearbeiten]