Unterstützte Formate

Wenn Sie die von ExoPlayer unterstützten Formate definieren, müssen Sie beachten, dass Medienformate auf mehreren Ebenen definiert werden. Von der untersten bis zur höchsten Ebene sind das:

  • Das Format der einzelnen Medienproben (z. B. ein Video- oder Audioframe). Dies sind Beispielformate. Beachten Sie, dass eine typische Videodatei Medien in mindestens zwei Beispielformaten enthält: eines für Video (z. B. H.264) und eines für Audio (z. B. AAC).
  • Das Format des Containers, der die Medienproben und die zugehörigen Metadaten enthält. Dies sind Containerformate. Eine Mediendatei hat ein einzelnes Containerformat (z. B. MP4), was häufig durch die Dateiendung angegeben wird. Bei einigen Nur-Audio-Formaten (z. B. MP3) können die Beispiel- und Containerformate identisch sein.
  • Adaptive Streamingtechnologien wie DASH, SmoothStreaming und HLS. Dies sind keine Medienformate als solche. Sie müssen aber festlegen, welche Unterstützung ExoPlayer bietet.

In den folgenden Abschnitten wird die ExoPlayer-Unterstützung auf den einzelnen Stufen von der höchsten bis zur niedrigsten Stufe definiert. In den letzten beiden Abschnitten wird die Unterstützung für eigenständige Untertitelformate und die HDR-Videowiedergabe beschrieben.

Adaptives Streaming

DASHBOARD

ExoPlayer unterstützt DASH mit mehreren Containerformaten. Medienstreams müssen entnommen werden. Das heißt, Video, Audio und Text müssen im DASH-Manifest in separaten AdaptationSet-Elementen definiert sein. CEA-608 ist eine Ausnahme, wie in der Tabelle unten beschrieben. Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden. Weitere Informationen finden Sie im Abschnitt Beispielformate.

Funktion Unterstützt Kommentare
Container
FMP4 JA Nur demuxtisierte Streams
WebM JA Nur demuxtisierte Streams
Matroska JA Nur demuxtisierte Streams
MPEG-TS NEIN Kein Support geplant
Untertitel
TTML JA Unbearbeitet oder gemäß ISO/IEC 14496-30 in FMP4 eingebettet
WebVTT JA Unbearbeitet oder gemäß ISO/IEC 14496-30 in FMP4 eingebettet
CEA-608 JA In FMP4 eingebettet, wenn SCTE-Deskriptoren für die Barrierefreiheit verwendet werden
CEA-708 JA In FMP4 eingebettet, wenn SCTE-Deskriptoren für die Barrierefreiheit verwendet werden
Metadaten
EMSG-Metadaten JA Eingebettet in FMP4
Inhaltsschutz
Widevine JA Schema „cenc“: API 19+; „cbcs“-Schema: API 25+
PlayReady SL2000 JA Android TV, nur „cenc“-Schema
Löschschlüssel JA API 21+, nur "cenc"-Schema
Live-Wiedergabe
Regelmäßige Livewiedergabe JA
CMAF-Live-Wiedergabe mit extrem niedriger Latenz JA
Common Media Client Data (CMCD) JA Integrationsleitfaden

SmoothStreaming

ExoPlayer unterstützt SmoothStreaming mit dem Containerformat FMP4. Medienstreams müssen aufgeteilt werden. Das bedeutet, dass Video, Audio und Text in separaten StreamIndex-Elementen im SmoothStreaming-Manifest definiert sein müssen. Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden. Weitere Informationen finden Sie im Abschnitt Beispielformate.

Funktion Unterstützt Kommentare
Container
FMP4 JA Nur demuxtisierte Streams
Untertitel
TTML JA Eingebettet in FMP4
Inhaltsschutz
PlayReady SL2000 JA Nur Android TV
Live-Wiedergabe
Regelmäßige Livewiedergabe JA
Common Media Client Data (CMCD) JA Integrationsleitfaden

HLS

ExoPlayer unterstützt HLS mit mehreren Containerformaten. Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden. Weitere Informationen finden Sie im Abschnitt Beispielformate. Wir empfehlen Erstellern von HLS-Inhalten dringend, HLS-Streams hoher Qualität zu generieren, wie hier beschrieben.

Funktion Unterstützt Kommentare
Container
MPEG-TS JA
FMP4/CMAF JA
ADTS (AAC) JA
MP3 JA
Untertitel
CEA-608 JA
CEA-708 JA
WebVTT JA
Metadaten
ID3 JA
SCTE 35 NEIN
Inhaltsschutz
AES-128 JA
Beispiel AES-128 NEIN
Widevine JA API 19+ ("cenc"-Schema) und 25+ ("cbcs"-Schema)
PlayReady SL2000 JA Nur Android TV
Serversteuerung
Delta-Aktualisierungen JA
Aktualisieren der Playlist wird blockiert JA
Laden von Vorabladehinweisen blockieren JA Mit Ausnahme von Bytebereichen mit nicht definierten Längen
Live-Wiedergabe
Regelmäßige Livewiedergabe JA
HLS mit niedriger Latenz (Apple) JA
HLS mit niedriger Latenz (Community) NEIN
Common Media Client Data (CMCD) JA Integrationsleitfaden

Progressive Containerformate

Streams in den folgenden Containerformaten können direkt von ExoPlayer wiedergegeben werden. Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden. Weitere Informationen finden Sie im Abschnitt Beispielformate.

Container format Unterstützt Kommentare
MP4 JA
M4A JA
FMP4 JA
WebM JA
Matroska JA
MP3 JA Einige Streams sind nur mit einer konstanten Bitrate auffindbar.**
Ogg JA Mit Vorbis, Opus und FLAC
WAV JA
MPEG-TS JA
MPEG-PS JA
FLV JA Nicht suchbar*
ADTS (AAC) JA Nur suchbar mit konstanter Bitrate**
FLAC JA Verwendung der FLAC-Bibliothek oder des FLAC-Extraktors in der ExoPlayer-Bibliothek***
Logo: AMR JA Nur suchbar mit konstanter Bitrate**
JPEG-Foto mit Bewegtbild JA Nur der MP4-Inhalt wird extrahiert.

* Die Suche wird nicht unterstützt, da der Container keine Metadaten (z. B. einen Beispielindex) enthält, die ein Mediaplayer eine effiziente Suche ermöglicht. Wenn eine Suche erforderlich ist, empfehlen wir die Verwendung eines geeigneteren Containerformats.

** Diese Extraktoren haben FLAG_ENABLE_CONSTANT_BITRATE_SEEKING-Flags, die die ungefähre Suche unter Verwendung einer Annahme einer konstanten Bitrate ermöglichen. Diese Funktion ist nicht standardmäßig aktiviert. Die einfachste Möglichkeit, diese Funktion für alle Extraktoren zu aktivieren, die sie unterstützen, ist die Verwendung von DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, wie hier beschrieben.

*** Der Extrahierer der FLAC-Bibliothek gibt rohe Audiodaten aus, die vom Framework auf allen API-Ebenen verarbeitet werden können. Der FLAC-Extrahierenr der ExoPlayer-Bibliothek gibt FLAC-Audioframes aus und benötigt daher einen FLAC-Decoder (z. B. einen MediaCodec-Decoder, der FLAC verarbeitet (erforderlich ab API-Level 27) oder die FFmpeg-Bibliothek mit aktiviertem FLAC). Der DefaultExtractorsFactory verwendet den Erweiterungsextraktor, wenn die Anwendung mit der FLAC-Bibliothek erstellt wurde. Andernfalls wird der ExoPlayer-Bibliotheksextraktor verwendet.

RTSP

ExoPlayer unterstützt sowohl Live- als auch On-Demand-RTSP. Unterstützte Beispielformate und Netzwerktypen sind unten aufgeführt.

Unterstützte Beispielformate

  • H264 (die Beschreibung der SDP-Medien muss SPS/PPS-Daten im duxp-Attribut für die Decodierer-Initialisierung enthalten)
  • AAC (mit ADTS-Bitstream).
  • AC3

Unterstützte Netzwerktypen

  • RTP über UDP-Unicast (Multicast wird nicht unterstützt).
  • Verschränktes RTSP, RTP über RTSP mit TCP.

Beispielformate

Standardmäßig verwendet ExoPlayer die Plattformdecoder von Android. Daher hängen die unterstützten Beispielformate von der zugrunde liegenden Plattform und nicht von ExoPlayer ab. Weitere Informationen zu Beispielformaten, die von Android-Geräten unterstützt werden, finden Sie unter Unterstützte Medienformate. Einzelne Geräte können zusätzliche Formate unterstützen.

Zusätzlich zu den Decodern der Android-Plattform kann ExoPlayer auch Software-Decoder-Erweiterungen nutzen. Sie müssen manuell erstellt und in Projekte einbezogen werden, in denen sie verwendet werden sollen. Wir bieten derzeit Software-Decodierer-Bibliotheken für AV1, VP9, FLAC, Opus und FFmpeg an.

FFmpeg-Bibliothek

Die FFmpeg-Bibliothek unterstützt das Decodieren verschiedener Audiobeispielformate. Sie können auswählen, welche Decoder beim Erstellen der Bibliothek verwendet werden sollen. Informationen hierzu finden Sie in der Datei README.md der Bibliothek. Die folgende Tabelle enthält eine Zuordnung vom Audiobeispielformat zum entsprechenden FFmpeg-Decodernamen.

Beispielformat Decoder-Name(n)
Vorbis Vorbis
Opus Opus
FLAC FLAC
Logo: ALAC AAC
PCM-μ-Gesetz pcm_mulaw
PCM A-Gesetz pcm_alaw
MP1, MP2, MP3 MP3
AMR-NB Amrnb
AMR-WB Amrwb
AAC AAC
AC-3 Ac3
AC-3 EAC3
DTS, DTS-HD DCA
TrueHD MPP TrueHD

Eigenständige Untertitelformate

ExoPlayer unterstützt eigenständige Untertiteldateien in einer Vielzahl von Formaten. Untertiteldateien können wie auf der Seite „Medienelemente“ beschrieben per Sideload übertragen werden.

Container format Unterstützt MIME-Typ
WebVTT JA MIME-Typen.TEXT_VTT
TTML / SMPTE-TT JA MimeTypes.APPLICATION_TTML
SubRip JA MIME-Typen.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) JA MIME-TypenTEXT_SSA

HDR-Videowiedergabe

ExoPlayer extrahiert das HDR-Video (High Dynamic Range) in verschiedenen Containern, darunter Dolby Vision in MP4 und HDR10+ in Matroska/WebM. Das Decodieren und Anzeigen von HDR-Inhalten hängt davon ab, ob die Android-Plattform und das Android-Gerät unterstützt werden. Unter HDR-Videowiedergabe erfahren Sie, ob Sie die HDR-Decodierungs-/-Anzeigefunktionen und die Einschränkungen der HDR-Unterstützung in verschiedenen Android-Versionen prüfen können.

Bei der Wiedergabe eines HDR-Streams, der Unterstützung für ein bestimmtes Codec-Profil erfordert, wählt die Standardauswahl MediaCodec von ExoPlayer einen Decoder aus, der dieses Profil unterstützt (falls verfügbar), auch wenn ein anderer Decoder für denselben MIME-Typ, der dieses Profil nicht unterstützt, weiter oben in der Codec-Liste erscheint. Dies kann dazu führen, dass ein Softwaredecoder ausgewählt wird, wenn der Stream die Funktionen eines Hardwaredecoders für denselben MIME-Typ überschreitet.