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. Beachten Sie, dass eine typische Videodatei 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 identisch sein.
- Adaptive Streamingtechnologien wie DASH, SmoothStreaming und HLS. Diese sind keine Medienformate an sich. 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 demuxierte Streams |
WebM | JA | Nur demuxierte Streams |
Matroska | JA | Nur demuxierte 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 sie mithilfe von SCTE-Bedienungshilfen-Deskriptoren signalisiert wird |
CEA-708 | JA | In FMP4 eingebettet, wenn sie 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 |
Löschschlüssel | 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 demuxierte 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, sollten Sie ein geeigneteres Containerformat 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
für alle Extraktoren,
die diese 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 aus
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.
Neben 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 Audiobeispielformate decodiert. 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 |
JPEG Ultra HDR | JA | Vor Android 14 oder höher wird auf SDR zurückgesetzt nicht HDR-Displays |
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.
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. Das kann dazu führen,
zur Auswahl eines Software-Decodierers in Fällen, in denen der Stream die
Hardware-Decodierer für denselben MIME-Typ.