Formats compatibles

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é Autorisé 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é Autorisé 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é Autorisé 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 Autorisé 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 Autorisé Notes
BMP OUI
GIF NON Non compatible avec les extracteurs
JPEG OUI
Photo animée JPEG OUI Image fixe et vidéo acceptée
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 divers formats. Sous-titre peuvent être téléchargés indépendamment, comme indiqué sur la page des éléments multimédias.

Format du conteneur Autorisé 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 le d'un décodeur matériel pour le même type MIME.