Lorsque vous définissez les formats compatibles avec ExoPlayer, notez bien que "formats multimédias" sont définies à plusieurs niveaux. Du niveau le plus bas au niveau la plus élevée, il s'agit des éléments suivants:
- Format des échantillons multimédias individuels (par exemple, une image de la vidéo ou une image de l'audio). Il s'agit d'exemples de formats. Notez qu'un fichier vidéo classique proposer des contenus multimédias dans au moins deux exemples de formats ; une pour la vidéo (par exemple, H.264) et une pour l'audio (par exemple, AAC).
- Format du conteneur qui héberge les échantillons multimédias et les fichiers de métadonnées. Il s'agit des formats de conteneur. Un fichier multimédia ne contient qu'un seul conteneur (par exemple, MP4), généralement indiqué par l'extension de fichier. Remarque que pour certains formats audio uniquement (par exemple, MP3), les formats d'échantillon et de conteneur peuvent être identiques.
- Les technologies de streaming adaptatif telles que DASH, SmoothStreaming et HLS Ces ne sont pas des formats multimédias, mais vous devez tout de même définir le niveau d'assistance d'ExoPlayer.
Les sections suivantes définissent la compatibilité d'ExoPlayer à chaque niveau, du plus élevé au la plus faible. Les deux dernières sections décrivent la prise en charge de formats de sous-titres autonomes. et la lecture de vidéos HDR.
Streaming adaptatif
DASH
ExoPlayer est compatible avec DASH avec plusieurs formats de conteneur. Les flux multimédias doivent être
démuxé, ce qui signifie que la vidéo, l'audio et le texte doivent être définis dans des
Les éléments AdaptationSet
dans le fichier manifeste DASH (la norme CEA-608 fait exception à la règle
décrites dans le tableau ci-dessous). Les formats d'échantillons audio et vidéo contenus doivent
également être pris en charge (consultez les
exemples de formats).
Fonctionnalité | Compatible | Commentaires |
---|---|---|
Conteneurs | ||
FMP4 | OUI | Flux démultiplexés uniquement |
WebM | OUI | Flux démultiplexés uniquement |
Matroska | OUI | Flux démultiplexés uniquement |
MPEG-TS | NON | Aucune assistance prévue |
Sous-titres | ||
TML | OUI | Brut ou intégré dans FMP4 conformément à la norme ISO/IEC 14496-30 |
WebVTT | OUI | Brut ou intégré dans FMP4 conformément à la norme ISO/IEC 14496-30 |
CEA-608 | OUI | Intégré dans FMP4 en cas de signalement via des descripteurs d'accessibilité SCTE |
CEA-708 | OUI | Intégré dans FMP4 en cas de signalement via des descripteurs d'accessibilité SCTE |
Métadonnées | ||
Métadonnées EMSG | OUI | Intégré à FMP4 |
Protection du contenu | ||
Widevine | OUI | "cenc" schema: API 19+; "cbcs" schéma: API 25 ou version ultérieure |
PlayReady SL2000 | OUI | Android TV, "cenc" schéma uniquement |
ClearKey | OUI | API 21 ou version ultérieure, "cenc" schéma uniquement |
Lecture en direct | ||
Lecture en direct régulière | OUI | |
Lecture en direct CMAF à très faible latence | OUI | |
Common Media Client Data (CMCD) | OUI | Guide d'intégration |
SmoothStreaming
ExoPlayer est compatible avec SmoothStreaming au format de conteneur FMP4. Flux multimédias doivent être démuxés, c'est-à-dire que la vidéo, l'audio et le texte doivent être définis dans des Éléments StreamIndex dans le fichier manifeste SmoothStreaming. Le contenu audio et formats d'échantillon vidéo doivent également être acceptés (consultez les exemples de formats).
Fonctionnalité | Compatible | Commentaires |
---|---|---|
Conteneurs | ||
FMP4 | OUI | Flux démultiplexés uniquement |
Sous-titres | ||
TML | OUI | Intégré à FMP4 |
Protection du contenu | ||
PlayReady SL2000 | OUI | Android TV uniquement |
Lecture en direct | ||
Lecture en direct régulière | OUI | |
Common Media Client Data (CMCD) | OUI | Guide d'intégration |
HLS
ExoPlayer est compatible avec le protocole HLS avec plusieurs formats de conteneurs. Le contenu audio et formats d'échantillon vidéo doivent également être acceptés (consultez les exemples de formats). Mer d'encourager les producteurs de contenu HLS à générer des flux HLS de haute qualité. tel que décrit cliquez ici.
Fonctionnalité | Compatible | Commentaires |
---|---|---|
Conteneurs | ||
MPEG-TS | OUI | |
FMP4/CMAF | OUI | |
ADTS (AAC) | OUI | |
MP3 | OUI | |
Sous-titres | ||
CEA-608 | OUI | |
CEA-708 | OUI | |
WebVTT | OUI | |
Métadonnées | ||
ID3 | OUI | |
SCTE-35 | NON | |
Protection du contenu | ||
AES-128 | OUI | |
Exemple de code AES-128 | NON | |
Widevine | OUI | API 19 ou versions ultérieures (schéma "cenc") et API 25+ (schéma "cbcs") |
PlayReady SL2000 | OUI | Android TV uniquement |
Contrôle des serveurs | ||
Mises à jour delta | OUI | |
Blocage de l'actualisation de la playlist | OUI | |
Blocage du chargement des indices de préchargement | OUI | Sauf pour les plages d'octets dont la longueur n'est pas définie |
Lecture en direct | ||
Lecture en direct régulière | OUI | |
HLS à faible latence (Apple) | OUI | |
HLS à faible latence (communauté) | NON | |
Common Media Client Data (CMCD) | OUI | Guide d'intégration |
Formats de conteneurs progressifs
Les flux dans les formats de conteneur suivants peuvent être lus directement par ExoPlayer. Les formats d'échantillons audio et vidéo contenus doivent également être compatibles (consultez les Exemples de formats. Pour connaître la compatibilité avec les conteneurs d'images et les formats, consultez Images :
Format du conteneur | Compatible | Commentaires |
---|---|---|
MP4 | OUI | |
M4A | OUI | |
FMP4 | OUI | |
WebM | OUI | |
Matroska | OUI | |
MP3 | OUI | Certains flux ne peuvent être recherchés qu'à l'aide de la recherche de débit constant** |
Ogg | OUI | Contient Vorbis, Opus et FLAC |
WAV | OUI | |
MPEG-TS | OUI | |
MPEG-PS | OUI | |
FLV | OUI | Recherche impossible* |
ADTS (AAC) | OUI | Recherche uniquement possible en utilisant la recherche de débit constant** |
FLAC | OUI | Utilisation de la bibliothèque FLAC ou de l'extracteur FLAC dans la bibliothèque ExoPlayer*** |
AMR | OUI | Recherche uniquement possible en utilisant la recherche de débit constant** |
* La recherche n'est pas acceptée, car le conteneur ne fournit pas de métadonnées (par exemple, un exemple d'index) pour permettre à un lecteur multimédia d'effectuer une recherche de manière efficace. Si la recherche est nécessaire, nous vous suggérons d'utiliser un format de conteneur plus approprié.
** Ces extracteurs ont des indicateurs FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
pour
la recherche approximative en utilisant une hypothèse de débit constant. Ce
n'est pas activée par défaut. Le moyen le plus simple d'activer
pour tous les extracteurs compatibles consiste à utiliser
DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
, tel que décrit
cliquez ici.
*** L'extracteur de la bibliothèque FLAC génère du contenu audio brut, qui peut être traité.
par le framework à tous les niveaux d'API. Sortie de l'extracteur FLAC de la bibliothèque ExoPlayer
Trames audio FLAC, ce qui implique d'avoir un décodeur FLAC (par exemple, un MediaCodec
qui gère le format FLAC (requis pour le niveau d'API 27) ou
bibliothèque FFmpeg avec FLAC activé). DefaultExtractorsFactory
utilise le
d'extension si l'application a été créée avec la bibliothèque FLAC.
Sinon, il utilise l'extracteur de la bibliothèque ExoPlayer.
RTSP
ExoPlayer est compatible avec RTSP en direct et à la demande. Exemples de formats compatibles et les types de réseau suivants :
Exemples de formats compatibles
- H264 (la description du support SDP doit inclure des données SPS/PPS dans le fichier fmtp pour l'initialisation du décodeur).
- AAC (avec flux de bits ADTS)
- AC3.
Types de réseaux compatibles
- Unicast RTP sur UDP (la multidiffusion n'est pas prise en charge).
- Entrelacement RTSP, RTP sur RTSP via TCP
Exemples de formats
Par défaut, ExoPlayer utilise les décodeurs de la plate-forme Android. D'où le format compatible d'exemples de formats dépendent de la plate-forme sous-jacente plutôt que d'ExoPlayer. Consultez l'article Formats multimédias compatibles pour en savoir plus sur les exemples de formats compatibles avec les appareils Android. Notez que d'autres appareils peuvent être compatibles avec d'autres formats que ceux énumérés.
Outre les décodeurs de la plate-forme Android, ExoPlayer peut également utiliser les extensions de décodeur logiciel. Ils doivent être créés manuellement et inclus dans projets qui souhaitent les utiliser. Nous proposons actuellement un décodeur logiciel des bibliothèques pour AV1 VP9, FLAC Opus et FFmpeg.
Bibliothèque FFmpeg
La bibliothèque FFmpeg accepte décoder divers formats d'échantillons audio. Vous pouvez choisir à inclure lors de la création de la bibliothèque, comme indiqué dans le README.md de la bibliothèque. La le tableau suivant fournit une correspondance entre le format d'échantillon audio et le format Nom du décodeur FFmpeg.
Exemple de format | Noms des décodeurs |
---|---|
Vorbis | Vorbis |
Opus | opus |
FLAC | Flac |
ALAC | Alac |
Loi μ-PCM | pcm_mulaw |
PCM A-law | alaw_pcm |
MP1, MP2 et MP3 | mp3 |
AMR-NB | Amrnb |
AMR-WB | Amrwb |
AAC | aac |
AC-3 | ac3 |
E-AC-3 | eac3 |
DTS, DTS-HD | ADR |
TrueHD | mlp truehd |
Images
ExoPlayer accepte les formats d'image suivants. Voir Bibliothèques de chargement d'images sur la manière d'intégrer des bibliothèques externes pouvant servir à une différents ensembles de formats.
Format d'image | Compatible | Notes |
---|---|---|
BMP | OUI | |
GIF | NON | Non compatible avec les extracteurs |
JPEG | OUI | |
Photo animée JPEG | OUI | Image fixe et vidéo acceptée |
JPEG Ultra HDR | OUI | Retour à la SDR antérieure à Android 14 ou version ultérieure écrans non HDR |
PNG | OUI | |
WebP | OUI | |
HEIF/HEIC | OUI | |
Motion Photo HEIC | En partie | Seules les images fixes sont acceptées* |
AVIF (référence) | OUI | Décodage sous Android 14 ou version ultérieure uniquement |
* La partie vidéo des photos animées HEIC peut être obtenue avec MetadataRetriever et lu comme un fichier autonome.
Formats de sous-titres autonomes
ExoPlayer accepte les fichiers de sous-titres autonomes dans de nombreux formats. Sous-titre peuvent être téléchargés indépendamment, comme indiqué sur la page des éléments multimédias.
Format du conteneur | Compatible | Type MIME |
---|---|---|
WebVTT | OUI | Types MIME.TEXT_VTT |
TTML / SMPTE-TT | OUI | MimeTypes.APPLICATION_TTML |
SubRip | OUI | MimeTypes.APPLICATION_SUBRIP |
SubStationAlpha (SSA/ASS) | OUI | MimeTypes.TEXT_SSA |
Lecture de vidéos HDR
ExoPlayer gère l'extraction des vidéos HDR (High Dynamic Range) dans divers conteneurs, y compris Dolby Vision en MP4 et HDR10+ dans Matroska/WebM. Décodage et l'affichage du contenu HDR dépend de la compatibilité de la plate-forme Android appareil. Voir Lecture vidéo HDR pour en savoir plus sur la vérification des capacités de décodage/d'affichage HDR et des limites Compatibilité HDR avec toutes les versions d'Android.
Lorsque vous lisez un flux HDR qui nécessite un profil de codec particulier,
Le sélecteur MediaCodec
par défaut d'ExoPlayer choisira un décodeur compatible avec cette
profil (si disponible), même si un autre décodeur pour le même type MIME que
ne prend pas en charge ce profil apparaît
plus haut dans la liste des codecs. Cela peut entraîner
en sélectionnant un décodeur logiciel dans les cas où le flux dépasse
d'un décodeur matériel pour le même type MIME.