Unterstützte Formate

Bei der Definition der Formate, die ExoPlayer unterstützt, ist zu beachten, dass „Medienformate“ auf mehreren Ebenen definiert sind. Von der untersten Ebene zur am höchsten sind, sind diese:

  • Das Format der einzelnen Medienbeispiele (z. B. ein Frame eines Videos oder ein Frame) Audio). Dies sind Beispielformate. Eine typische Videodatei wird Medien in mindestens zwei Beispielformaten enthalten; eine für Video (z. B. H.264) und eine für Audio (z. B. AAC).
  • Das Format des Containers, der die Medienbeispiele und die zugehörigen Metadaten. Dies sind Containerformate. Eine Mediendatei hat einen einzelnen Container (z. B. MP4), was üblicherweise durch die Dateiendung angegeben wird. Hinweis dass bei einigen reinen Audioformaten (z. B. MP3) die Sample- und Containerformate kann identisch sein.
  • Adaptive Streamingtechnologien wie DASH, SmoothStreaming und HLS. Diese sind keine Medienformate. Es muss jedoch definiert werden, Supportstufe von ExoPlayer.

In den folgenden Abschnitten wird die Unterstützung von ExoPlayer für jedes Level definiert, von der höchsten bis zur niedrigste. In den letzten beiden Abschnitten wird die Unterstützung für eigenständige Untertitelformate beschrieben. und HDR-Videowiedergabe.

Adaptives Streaming

DASH

ExoPlayer unterstützt DASH mit mehreren Containerformaten. Media-Streams müssen Das heißt, Video, Audio und Text müssen getrennt voneinander definiert werden. AdaptationSet-Elemente im DASH-Manifest (CEA-608 ist eine Ausnahme, da wie in der Tabelle unten beschrieben). Die enthaltenen Audio- und Video-Beispielformate müssen auch unterstützt werden (siehe Beispielformate.

Funktion Unterstützt Kommentare
Container
FMP4 JA Nur Demuxed-Streams
WebM JA Nur Demuxed-Streams
Matroska JA Nur Demuxed-Streams
MPEG-TS NEIN Keine Unterstützung geplant
Untertitel
TTML JA RAW oder in FMP4 gemäß ISO/IEC 14496-30 eingebettet
WebVTT JA RAW oder in FMP4 gemäß ISO/IEC 14496-30 eingebettet
CEA-608 JA In FMP4 eingebettet, wenn es mithilfe von SCTE-Bedienungshilfen-Deskriptoren signalisiert wird
CEA-708 JA In FMP4 eingebettet, wenn es mithilfe von SCTE-Bedienungshilfen-Deskriptoren signalisiert wird
Metadaten
EMSG-Metadaten JA In FMP4 eingebettet
Inhaltsschutz
Widevine JA „cenc“ Schema: API 19+; „cbcs“ Schema: API 25+
PlayReady SL2000 JA Android TV, „cenc“ Nur Schema
ClearKey JA API 21 oder höher, „cenc“ Nur Schema
Live-Wiedergabe
Regelmäßige Live-Wiedergabe JA
CMAF-Livewiedergabe mit extrem niedriger Latenz JA
Common Media Client Data (CMCD) JA Integrationsleitfaden

SmoothStreaming

ExoPlayer unterstützt SmoothStreaming mit dem FMP4-Containerformat. Medien-Streams müssen getrennt sein, d. h. Video, Audio und Text müssen getrennt voneinander definiert werden. StreamIndex-Elemente im SmoothStreaming-Manifest Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden (siehe Beispielformate.

Funktion Unterstützt Kommentare
Container
FMP4 JA Nur Demuxed-Streams
Untertitel
TTML JA In FMP4 eingebettet
Inhaltsschutz
PlayReady SL2000 JA Nur Android TV
Live-Wiedergabe
Regelmäßige Live-Wiedergabe 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 (siehe Beispielformate. Mi. Ersteller von HLS-Content ausdrücklich ermutigen, HLS-Streams hoher Qualität zu generieren wie beschrieben hier.

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
AES-128-Beispiel NEIN
Widevine JA API 19 oder höher (Schema „cenc“) und API 25 oder höher (Schema „cbcs“)
PlayReady SL2000 JA Nur Android TV
Serversteuerung
Delta-Aktualisierungen JA
Neuladen der Playlist wird blockiert JA
Laden von Vorabladehinweisen blockieren JA Außer für Bytebereiche mit undefinierter Länge
Live-Wiedergabe
Regelmäßige Live-Wiedergabe 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 (siehe Beispielformate. Informationen zur Unterstützung von Image-Containern und -Formaten finden Sie unter Bilder:

Container format Unterstützt Kommentare
MP4 JA
M4A JA
FMP4 JA
WebM JA
Matroska JA
MP3 JA Einige Streams können nur über die konstante Bitratesuche gefunden werden**
OGG JA Enthält Vorbis, Opus und FLAC
WAV (WAV) JA
MPEG-TS JA
MPEG-PS JA
FLV JA Nicht suchbar*
ADTS (AAC) JA Suche nur mit konstanter Bitrate-Suche möglich**
FLAC JA Sie können die FLAC-Bibliothek oder den FLAC-Extraktor in der ExoPlayer-Bibliothek verwenden.***
Logo: AMR JA Suche nur mit konstanter Bitrate-Suche möglich**

* Die Suche wird nicht unterstützt, da der Container keine Metadaten bereitstellt (z. B. ein Beispielindex), damit ein Mediaplayer eine Suche auf effiziente Weise ausführen kann. Wenn eine Suche erforderlich ist, empfehlen wir, ein geeigneteres Containerformat zu verwenden.

** Diese Extraktoren haben FLAG_ENABLE_CONSTANT_BITRATE_SEEKING-Flags für eine ungefähre Suche mit einer konstanten Bitratenannahme möglich. Dieses ist standardmäßig nicht aktiviert. Das geht am einfachsten Funktionalität für alle Extraktoren, die dies unterstützen, besteht darin, DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, wie beschrieben finden Sie hier.

*** Der Extraktor der FLAC-Bibliothek gibt Audio-Rohdaten aus, die verarbeitet werden können. des Frameworks auf allen API-Ebenen. Der FLAC-Extraktor der ExoPlayer-Bibliothek gibt FLAC-Audioframes und ist daher auf einen FLAC-Decoder (z. B. MediaCodec) angewiesen. der FLAC verarbeitet (erforderlich ab API-Level 27), oder der FFmpeg-Bibliothek mit aktiviertem FLAC). DefaultExtractorsFactory verwendet die Methode Erweiterungsextraktor, wenn die Anwendung mit der FLAC-Bibliothek erstellt wurde. Andernfalls wird der ExoPlayer-Extraktor der ExoPlayer-Bibliothek verwendet.

RTSP

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

Unterstützte Beispielformate

  • H264 (die SDP-Medienbeschreibung muss SPS/PPS-Daten in fmtp enthalten) für die Decoder-Initialisierung.
  • 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 werden die unterstützten Die Beispielformate hängen von der zugrunde liegenden Plattform ab, nicht von ExoPlayer. Weitere Informationen finden Sie im Artikel Unterstützte Medienformate für Dokumentation zu Beispielformaten, die von Android-Geräten unterstützt werden. Beachten Sie, dass können auf einzelnen Geräten weitere Formate unterstützt werden.

Außer den Plattformdecoder der Android-Plattform kann ExoPlayer auch Software-Decoder-Erweiterungen. Diese müssen manuell erstellt und in die sie nutzen möchten. Wir bieten derzeit einen Softwaredecoder an. Bibliotheken für AV1 VP9 FLAC Opus und FFmpeg

FFmpeg-Bibliothek

Die FFmpeg-Bibliothek unterstützt verschiedene Audio-Beispielformate decodieren. Sie können auswählen, Decoder für den Bau der Bibliothek, wie in der README.md der Bibliothek. Die Die folgende Tabelle zeigt eine Zuordnung vom Audiobeispielformat zum entsprechenden Name des FFmpeg-Decoders.

Beispielformat Decoder-Name(n)
Vorbis Vorbis
Opus Opus
FLAC FLAC
AAC Alac
PCM-μ-Gesetz pcm_mulaw
PCM A-Gesetz pcm_alaw
MP1, MP2, MP3 MP3
AMR-NB Amrnb
AMR-WB Amrwb
AAC AAC
AC-3- AC3
E-AC-3 (E-AC-3) EAC3
DTS, DTS-HD DCA
TrueHD mlp truehd

Bilder

ExoPlayer unterstützt die folgenden Bildformate. Weitere Informationen finden Sie unter Bibliotheken zum Laden von Bildern . Dort erfahren Sie, wie Sie externe Bibliotheken integrieren, die ein mit unterschiedlichen Formaten.

Bildformat Unterstützt Hinweise
BMP JA
GIF NEIN Keine Unterstützung für Extraktoren
JPEG JA
JPEG-Foto mit Bewegtbild JA Standbilder und Videos werden unterstützt
PNG JA
WebP JA
HEIF/HEIC JA
HEIC-Foto mit Bewegtbild Teilweise Nur Standbilder werden unterstützt*
AVIF (Baseline) JA Nur mit Android 14 und höher decodiert

* Der Videoteil von HEIC-Bewegungsfotos kann mit MetadataRetriever und als eigenständige Datei wiedergegeben werden.

Eigenständige Untertitelformate

ExoPlayer unterstützt eigenständige Untertiteldateien in verschiedenen Formaten. Untertitel Dateien können, wie auf der Seite mit den Medieninhalten beschrieben, per Sideload übertragen werden.

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

HDR-Videowiedergabe

ExoPlayer extrahiert HDR-Videos (High Dynamic Range) aus verschiedenen Container wie Dolby Vision in MP4 und HDR10+ in Matroska/WebM. Decodierung HDR-Inhalte und die Anzeige von HDR-Inhalten . Weitere Informationen finden Sie unter HDR-Videowiedergabe um mehr über die Überprüfung der HDR-Decodierung/-Anzeigefunktionen und die Einschränkungen HDR-Unterstützung in allen Android-Versionen.

Bei der Wiedergabe eines HDR-Streams, der die Unterstützung eines bestimmten Codec-Profils erfordert, Mit der Standardauswahl von „MediaCodec“ von ExoPlayer wird ein Decoder ausgewählt, der diese Funktion unterstützt (falls verfügbar), auch wenn ein anderer Decoder für denselben MIME-Typ unterstützt, steht dieses Profil weiter oben in der Liste der Codec. Dies kann dazu führen, zur Auswahl eines Software-Decodierers in Fällen, in denen der Stream die Hardware-Decodierer für denselben MIME-Typ.