Montag, 2. November 2009

Streaming mit dem Apple iPhone

RealNetworks beschreibt in einem Whitepaper "Delievering media to the Apple iPhone", wie das Streamen zu einem iPhone möglich ist.

Das elfseitige Dokument beschreibt, wie der Helix Mobile Server mit dem Apple iPhone kommunizieren kann und welche Möglichkeiten es für das Übermitteln von Audio und Video gibt.

Die einfachste Möglichkeit ist dabei der sog. progressive Download: Dabei wird ein HTTP-Link mit einer QuickTime oder MPEG-Datei aufgerufen und heruntergeladen. Die Wiedergabe beginnt unmittelbar, man kann vor- und zurück spulen, allerdings nur in dem Bereich, der bereits heruntergeladen wurde. Für die anderen Stellen muss man warten, bis der entsprechende Bereich ebenfalls heruntergeladen wurde.

Die zweite Möglichkeit ist der segmentierte Download. Hierbei wird eine Index-Datei mit weiteren Links heruntergeladen. Sobald die Liste vollständig verfügbar ist, werden die Segmente per HTTP heruntergeladen. Dabei kann auch das sog. Rate Shifting verwendet werden - die einzelnen Teile können entsprechend der aktuellen Bandbreite in einer adäquaten Qualität heruntergeladen werden. Auf Grund der Einschränkungen beim HTTP-Abruf gehen einige Funktionen nicht:
  • server-side rate control
  • RTSP-based, live broadcasts
  • simulated-live broadcasts mit dem SLTA
  • server-side playlist management
  • channel switching
  • Zwischengespeicherte Inhalte mit dem Helix Mobile Proxy
  • keine HTTPS-Unterstützung
 Unterstützte Dateiformate sind:
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4v)
  • MP3 (.mp3)
  • QuickTime (.mov)
 Dabei muss der Inhalt als progressiver Download encodiert worden sein. Ein RTSP-Stream dieser Formate wird nicht unterstützt.




Abbildung 1: Encodieren und Segmentieren mit ein einzelnen Produkt

Schritt1: Encodieren der Medien mit den benötigten Codecs, Erstellen der segmentierten Streaming-Dateien (.ts) und des Index (.m3u8).
Schritt 2: Alle Dateien auf den Helix Mobile Server transferieren.
Schritt 3: Content per HTTP-Links zur Verfügung stellen.

Aktuell gibt es zwei kommerzielle Encoder, die Apple getestet hat:
 Alternativ kann man das auch in mehreren Arbeitsschritten machen:




Abbildung 2: Encodieren und Segmentieren mit mehreren Produkten

Schritt 1: Ein MPEG oder 3GPP Encoder (wie der Helix Mobile Producer) encodiert die Medien.
Schritt 2: Ein Produkt eines Drittanbieters erzeugt die segmentierten Daten (.ts).
Schritt 3: Ein Produkt wie z.B. der Apple Segmenter verarbeitet den Stream und erzeugt die Segmente (.ts) und generiert die benötigte Index-Datei (.m3u8).
Schritt 4: Alle benötigten Dateien werden in den Content-Ordner des Helix Mobile Servers kopiert.
Schritt 5: Content per HTTP-Links zur Verfügung stellen.

 Live Streaming ist somit auch möglich, es ist dabei aber zwingend notwendig das die Segmente in fast Echtzeit an den Helix Mobile Server übermittelt werden. Der Apple Segmenter kann die Index-Datei in einem bestimmten Zeitinterval aktualisieren. Somit startet der Client an einer der letzt encodierten Stellen.

An dem Helix Mobile Server müssen einige Einstellungen vorgenommen werden. Zunächst muss ein MountPoint, z.b. "/iPhone" erstellt werden, "Allow File Creation" und "Allow File Deletion" dabei auf "No" setzen. Des Weiteren muss HTTP Delivery aktiviert werden für das Verzeichnis "/iPhone". Sofern man nicht nur die progressiven Downloads nutzen möchte, müssen zum Schluss noch MIME Types angelegt werden:
  • application/x-mpegURL mit der Endung "m3u8" 
  • video/MP2T mit der Endung "ts"
0 Kommentare:
Kommentar veröffentlichen