MediaStreaming SDK

MediaStreaming ist als Ersatz für den MediaPlayer unter Android gedacht, da dieser nur wenige Formate unterstützt, bzw. erst ab neueren Versionen. So ist es zB. unter Android Versionen < 3.0 nicht möglich, Apple HTTP Streaming abzuspielen – selbst ab Android 3.0 ist dies nur sehr bedingt möglich. Genau aus diesen Anforderungen heraus ist MediaStreaming entstanden.

FFmpeg

Das FFmpeg-Projekt besteht aus einer Reihe von freien Computerprogrammen und Programmbibliotheken, welche digitales Video- und Audiomaterial aufnehmen, konvertieren, senden (streamen) und in verschiedene Containerformate verpacken können. Unter anderem enthält es mit libavcodec eine Sammlung unterschiedlicher Audio- und Video-Codecs.

Für MediaStreaming wurde FFmpeg auf Android portiert und speziell optimiert. Der Quelltext zu FFmpeg steht frei zur Verfügung: http://ffmpeg.org/download.html

Player

Für den Einsatz als vollwertigen Videoplayer wurden in MediaStreaming folgende grundlegenden Funktionalitäten implementiert:

  • Videoausgabe
    Basiert weder auf Open GL noch auf einem SDL Wrapper. Diese musste hardwarenahe gelöst werden um eine performante Wiedergabe gewährleisten zu können. Optional ist ein Rendering über Open GL ES 1.0 auch möglich.
  • Audioausgabe
    Basiert (bis auf einige hardwarebedingte Ausnahmen) ebenfalls nicht auf Open GL sondern wurde auch „low level" umgesetzt. Optional ist ein Rendering über Open SL ES 1.0 auch möglich.
  • Audio-/Videosynchronisierung
    Master Clock = Audio Clock (System Clock, wenn nicht vorhanden)
  • Frame Dropping
    Wenn die Hardware mit der Decodierung bzw. Ausgabe von anspruchsvolleren Videocodecs oder Bitraten nicht mitkommt, werden bestimmte Bilder „ausgelassen".
  • Threading
    Ein speziell ausgeklügeltes Threading ermöglicht die optimale Ausnützung der oft nur bedingt vorhandenen Systemressourcen.

Formate

Eine Unzahl an Formate kann aktuell unterstützt werden. Allerdings werden die Bibliotheken von uns immer speziell für die Anforderungen kompiliert. So werden immer nur die notwendigen Komponenten mitkompiliert, um ein bestimmtes Format (zB. Apple HTTP Streaming oder RTSP) abspielen zu können - eine komplette Unterstützung für sämtliche Formate und Codecs wäre aus platzgründen nicht möglich/sinnvoll.

Protokolle

  • Lokale Datei
  • HTTP
  • HTTP Proxy
  • HTTPS
  • Apple HTTP Live Streaming (HLS)
  • RTMPS
  • RTMPT
  • RTMPTE
  • RTP
  • MMSH
  • MMST
  • ... (10+)

Containerformate

  • MPEG-TS
  • MPEG4
  • AAC
  • MP3
  • FLV
  • Matroska
  • ... (100+)

Codecs

  • ... 200+

Anforderungen

Hardware

Für ca. 60 Geräte kann eine vollständige Funktionalität angenommen werden, da auf diesen die Entwicklung und Tests stattfinden bzw. wir entsprechend positives Feedback aus Google Play erhalten haben. Nur auf einigen wenigen Geräten funktioniert MediaStreaming hardwarebedingt nur mit eingeschränkter Performance bzw. nur über den OpenGL Renderer.

CPU

Es werden jeweils optimierte Versionen der Bibliotheken für folgende CPUs mitgeliefert:

  • ARMv5
  • ARMv6 (ohne VFP*)
  • ARMv7
  • ARMv7 NEON

* ... ARMv6 mit VFP wird in einer der nächsten Versionen hinzugefügt

Soll aus Platzgründen auf die optimierten Versionen verzichtet werden, so genügt es zum Beispiel nur die ARMv5 Bibliothek zusammen mit der Applikation auszuliefern. Eine CPU Erkennung kümmert sich automatisch darum, die entsprechend optimierteste Version zu laden, sofern diese auch mit der App mitgeliefert wurde.

Android Versionen

Folgende Android-Versionen werden derzeit unterstützt:

  • Android 1.6 Donut (API Level 4)*
  • Android 2.0/2.1 Eclair (API Level 5,6,7)
  • Android 2.2 Froyo (API Level 8)
  • Android 2.3 Gingerbread(API Level 9,10)
  • Android 3.x Honeycomb(API Level 11,12,13)
  • Android 4.0 Ice Cream Sandwich (API Level 14,15)
  • Android 4.1/4.2/4.3 Jelly Bean (API Level 16,17,18)

* ... nur über OpenGL möglich

Umsetzung

Lizenzierung

Die Lizenz für MediaStreaming ist Projektgebunden - die erwähnten Kosten beziehen sich auf jeweils ein Projekt (zB. App XY die in den Market gestellt wird). Für jede weitere App, in der MediaStreaming in irgendeiner Form verwendet wird, fallen dieselben Kosten nochmal an.

Updates und Support

Um neue Geräte/CPUs oder neue Android Versionen zu unterstützen, stehen möglichst regelmäßige Updates zur Verfügung. (optional)

Kosten

1-2 Lizenzen

Pro Projekt: € 3.500,00 (inkl. Updates für das erste Jahr)
Jährliche Kosten pro Projekt für Wartung, Support und Updates (optional): € 1.000,00

ab der 3. Lizenz

Pro Projekt: € 3.100,00 (inkl. Updates für das erste Jahr)
Jährliche Kosten pro Projekt für Wartung, Support und Updates (optional): € 800,00

ab der 8. Lizenz

Pro Projekt: € 2.800,00 (inkl. Updates für das erste Jahr)
Jährliche Kosten pro Projekt für Wartung, Support und Updates (optional): € 600,00

Alle Preisangaben zuzüglich der gesetzlichen MwSt.

Quellcode

Die Media Streaming Libraries selber werden in binärer Form und ohne jeglichen Quellcode geliefert. Nur der Quelltext von FFmpeg und dem Java-Teil wird mitgeliefert, sowie ein Beispiel-Videoplayer.

Dokumentation

Eine explizite Dokumentation wird nicht mitgeliefert, da sich MediaStreaming genauso integrieren lässt, wie der Android MediaPlayer: http://developer.android.com/reference/android/media/MediaPlayer.html
Der mitgelieferte Beispielplayer kann als Vorlage zur Integration verwendet werden.