Formats compatibles

Lorsque vous définissez les formats compatibles avec ExoPlayer, il est important de noter que les "formats multimédias" sont définis à plusieurs niveaux. Du niveau le plus bas au plus élevé:

  • Format des échantillons multimédias individuels (par exemple, un frame de vidéo ou un frame d'audio). Il s'agit d'exemples de formats. Notez qu'un fichier vidéo typique contient des contenus multimédias dans au moins deux formats d'échantillons : un pour la vidéo (par exemple, H.264) et un pour l'audio (par exemple, AAC).
  • Format du conteneur qui contient les échantillons multimédias et les métadonnées associées. Il s'agit de formats de conteneur. Un fichier multimédia ne comporte qu'un seul format de conteneur (par exemple, MP4), qui est généralement indiqué par l'extension de fichier. Notez que pour certains formats audio uniquement (par exemple, MP3), les formats d'échantillon et de conteneur peuvent être identiques.
  • Technologies de streaming adaptatif telles que DASH, SmoothStreaming et HLS Il ne s'agit pas de formats multimédias en tant que tels, mais il est tout de même nécessaire de définir le niveau de compatibilité d'ExoPlayer.

Les sections suivantes définissent la compatibilité d'ExoPlayer à chaque niveau, du plus élevé au plus bas. Les deux dernières sections décrivent la prise en charge des formats de sous-titres autonomes et de la lecture vidéo HDR.

Streaming adaptatif

DASH

ExoPlayer est compatible avec DASH avec plusieurs formats de conteneur. Les flux multimédias doivent être démultiplexés, ce qui signifie que la vidéo, l'audio et le texte doivent être définis dans des éléments AdaptationSet distincts dans le fichier manifeste DASH (CEA-608 est une exception, comme indiqué dans le tableau ci-dessous). Les formats d'échantillons audio et vidéo contenus doivent également être compatibles (pour en savoir plus, consultez la section Formats d'échantillons).

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 prise en charge prévue
Sous-titres
TTML OUI Brut ou intégré au format FMP4, conformément à la norme ISO/CEI 14496-30
WebVTT OUI Brut ou intégré au format FMP4, conformément à la norme ISO/CEI 14496-30
CEA-608 OUI Intégré au format FMP4 lorsqu'il est signalé à l'aide de descripteurs d'accessibilité SCTE
CEA-708 OUI Intégré au format FMP4 lorsqu'il est signalé à l'aide de descripteurs d'accessibilité SCTE
Métadonnées
Métadonnées EMSG OUI Intégrés au format FMP4
Protection du contenu
Widevine OUI Scénario "cenc" : API 19 et versions ultérieures ; scénario "cbcs" : API 25 et versions ultérieures
PlayReady SL2000 OUI Android TV, schéma "cenc" uniquement
ClearKey OUI API 21 et versions ultérieures, schéma "cenc" uniquement
Lecture en direct
Lecture en direct régulière OUI
Lecture en direct CMAF à latence ultrafaible OUI
CMCD (Common Media Client Data) OUI Guide d'intégration

SmoothStreaming

ExoPlayer est compatible avec SmoothStreaming avec le format de conteneur FMP4. Les flux multimédias doivent être démultiplexés, ce qui signifie que la vidéo, l'audio et le texte doivent être définis dans des éléments StreamIndex distincts dans le fichier manifeste SmoothStreaming. Les formats d'échantillons audio et vidéo contenus doivent également être compatibles (pour en savoir plus, consultez la section Formats d'échantillons).

Fonctionnalité Compatible Commentaires
Conteneurs
FMP4 OUI Flux démultiplexés uniquement
Sous-titres
TTML OUI Intégrés au format FMP4
Protection du contenu
PlayReady SL2000 OUI Android TV uniquement
Lecture en direct
Lecture en direct régulière OUI
CMCD (Common Media Client Data) OUI Guide d'intégration

HLS

ExoPlayer est compatible avec HLS avec plusieurs formats de conteneur. Les formats d'échantillons audio et vidéo contenus doivent également être compatibles (pour en savoir plus, consultez la section Formats d'échantillons). Nous encourageons vivement les producteurs de contenus HLS à générer des flux HLS de haute qualité, comme décrit 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 AES-128 NON
Widevine OUI API 19 ou version ultérieure ("cenc") et 25 ou version ultérieure ("cbcs")
PlayReady SL2000 OUI Android TV uniquement
Contrôle du serveur
Mises à jour delta OUI
Bloquer le rechargement de la playlist OUI
Blocage du chargement des indices de préchargement OUI À l'exception des 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
CMCD (Common Media Client Data) 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 (pour en savoir plus, consultez la section Formats d'échantillons). Pour en savoir plus sur la compatibilité des conteneurs et des formats d'images, consultez la section Images.

Format du conteneur Compatible Commentaires
MP4 OUI
M4A OUI
FMP4 OUI
WebM OUI
Matroska OUI
MP3 OUI Certains flux ne sont accessibles que par recherche de débit constant**
Ogg OUI contenant Vorbis, Opus et FLAC
WAV OUI
MPEG-TS OUI
MPEG-PS OUI
FLV OUI Non inclus dans l'index de recherche*
ADTS (AAC) OUI Peut être rembobiné uniquement à l'aide de la recherche de débit constant**
FLAC OUI À l'aide de la bibliothèque FLAC ou de l'extracteur FLAC de la bibliothèque ExoPlayer***
AMR OUI Peut être rembobiné uniquement à l'aide de la recherche de débit constant**

* La recherche n'est pas prise en charge, car le conteneur ne fournit pas de métadonnées (par exemple, un indice d'échantillon) permettant à un lecteur multimédia d'effectuer une recherche de manière efficace. Si la recherche est requise, nous vous suggérons d'utiliser un format de conteneur plus approprié.

** Ces extracteurs disposent d'indicateurs FLAG_ENABLE_CONSTANT_BITRATE_SEEKING pour activer la recherche approximative à l'aide d'une hypothèse de débit constant. Cette fonctionnalité n'est pas activée par défaut. Le moyen le plus simple d'activer cette fonctionnalité pour tous les extracteurs compatibles consiste à utiliser DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, comme décrit ici.

*** L'extracteur de la bibliothèque FLAC produit un audio brut, qui peut être géré par le framework à tous les niveaux d'API. L'extracteur FLAC de la bibliothèque ExoPlayer produit des trames audio FLAC et repose donc sur un décodeur FLAC (par exemple, un décodeur MediaCodec qui gère FLAC (requis à partir du niveau d'API 27) ou la bibliothèque FFmpeg avec FLAC activé). DefaultExtractorsFactory utilise l'extracteur 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. Vous trouverez ci-dessous des exemples de formats et de types de réseaux compatibles.

Exemples de formats acceptés

  • H264 (la description multimédia SDP doit inclure des données SPS/PPS dans l'attribut fmtp pour l'initialisation du décodeur).
  • AAC (avec flux de bits ADTS)
  • AC3.

Types de réseaux compatibles

  • RTP sur unicast UDP (le multicast n'est pas pris en charge).
  • RTSP entrelacé, RTP sur RTSP via TCP.

Exemples de formats

Par défaut, ExoPlayer utilise les décodeurs de la plate-forme Android. Par conséquent, les formats d'exemples compatibles dépendent de la plate-forme sous-jacente plutôt que d'ExoPlayer. Consultez la section Formats multimédias acceptés pour obtenir des informations sur les exemples de formats compatibles avec les appareils Android. Notez que certains appareils peuvent prendre en charge des formats supplémentaires en plus de ceux listés.

En plus des décodeurs de plate-forme Android, ExoPlayer peut également utiliser des extensions de décodeur logiciel. Ils doivent être compilés manuellement et inclus dans les projets qui souhaitent les utiliser. Nous fournissons actuellement des bibliothèques de décodeur logiciel pour AV1, VP9, FLAC, Opus, FFmpeg, MIDI et IAMF.

Bibliothèque FFmpeg

La bibliothèque FFmpeg permet de décoder différents formats d'échantillons audio. Vous pouvez choisir les décodeurs à inclure lors de la compilation de la bibliothèque, comme indiqué dans le fichier README.md de la bibliothèque. Le tableau suivant fournit un mappage du format d'échantillon audio au nom du décodeur FFmpeg correspondant.

Exemple de format Nom(s) du ou des décodeurs
Vorbis vorbis
Opus opus
FLAC flac
ALAC alac
PCM μ-law pcm_mulaw
PCM A-law pcm_alaw
MP1, MP2, MP3 mp3
AMR-NB amrnb
AMR-WB amrwb
AAC aac
AC-3 ac3
E-AC-3 eac3
DTS, DTS-HD dca
TrueHD mlp truehd

Images

ExoPlayer est compatible avec les formats d'image suivants. Consultez la section Bibliothèques de chargement d'images pour découvrir comment intégrer des bibliothèques externes pouvant prendre en charge un autre ensemble de formats.

Format d'image Compatible Notes
BMP OUI
GIF NON Aucune compatibilité avec l'extracteur
JPEG OUI
Photo animée JPEG OUI Images fixes et vidéos compatibles
JPEG Ultra HDR OUI Retourne à la SDR avant Android 14 ou sur les écrans non HDR
PNG OUI
WebP OUI
HEIF/HEIC OUI
Photo animée HEIC En partie Seules les images fixes sont acceptées*
AVIF (référence) OUI Décodé sur Android 14 ou version ultérieure uniquement

* La partie vidéo des photos animées HEIC peut être obtenue avec MetadataRetriever et lue en tant que fichier autonome.

Formats de sous-titres autonomes

ExoPlayer est compatible avec les fichiers de sous-titres autonomes dans différents formats. Les fichiers de sous-titres peuvent être installés en mode hors connexion, comme décrit sur la page des éléments multimédias.

Format du conteneur Compatible Type MIME
WebVTT OUI MimeTypes.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 de vidéos HDR (High Dynamic Range) dans différents conteneurs, y compris Dolby Vision au format MP4 et HDR10+ au format Matroska/WebM. Le décodage et l'affichage du contenu HDR dépendent de la compatibilité de la plate-forme Android et de l'appareil. Consultez la section Lecture de vidéos HDR pour découvrir comment vérifier les fonctionnalités de décodage/d'affichage HDR et les limites de la compatibilité HDR entre les versions d'Android.

Lorsque vous lisez un flux HDR qui nécessite la prise en charge d'un profil de codec particulier, le sélecteur MediaCodec par défaut d'ExoPlayer sélectionne un décodeur compatible avec ce profil (le cas échéant), même si un autre décodeur du même type MIME qui n'est pas compatible avec ce profil apparaît plus haut dans la liste des codecs. Cela peut entraîner la sélection d'un décodeur logiciel lorsque le flux dépasse les capacités d'un décodeur matériel pour le même type MIME.