Ce document décrit la prise en charge des codecs multimédias, des conteneurs et des protocoles réseau fournie par la plate-forme Android.
Les tableaux ci-dessous décrivent la compatibilité avec les formats multimédias intégrée à la plate-forme Android. OUI signifie que le format est disponible sur les appareils portables et les tablettes exécutant toutes les versions d'Android. Lorsqu'une plate-forme Android spécifique est indiquée, le format est disponible sur les téléphones et tablettes exécutant cette version et toutes les versions ultérieures. Il est également possible que le format soit disponible dans les versions antérieures, mais cela n'est pas garanti. La compatibilité avec les formats multimédias peut varier sur les facteurs de forme autres que les téléphones et les tablettes.
Notez qu'un appareil mobile particulier peut être compatible avec d'autres formats ou types de fichiers qui ne sont pas listés dans ces tableaux. De plus, si vous utilisez directement un MediaCodec, vous pouvez accéder à n'importe quel format multimédia disponible, quels que soient les types de fichiers et les formats de conteneur compatibles.
Compatibilité audio
| Format | Encodeur | Décodeur | Types de fichiers et formats de conteneurs | Détails | |
|---|---|---|---|---|---|
| Extracteur | Muxer | ||||
| AAC-LC | OUI | OUI |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF non accepté) • MPEG-TS (.ts, non compatible avec la recherche, Android 3.0+) |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF non pris en charge) • MPEG-TS (non sûr) (.ts, non consultable, Android 3.0+) |
Contenu mono/stéréo/5.0/5.1 pris en charge avec des taux d'échantillonnage standards de 8 à 48 kHz. |
| HE-AACv1 (AAC+) | Android 4.1 et versions ultérieures | OUI | |||
| HE-AACv2 (AAC+ amélioré) | OUI | Contenu stéréo/5.0/5.1 avec des taux d'échantillonnage standards de 8 à 48 kHz. | |||
| xHE-AAC | Android 9 et versions ultérieures | Prise en charge du contenu jusqu'à 8 canaux avec des taux d'échantillonnage standards de 8 à 48 kHz | |||
| AAC ELD (AAC à faible délai amélioré) | Android 4.1 et versions ultérieures | Android 4.1 et versions ultérieures | Contenu mono/stéréo avec des taux d'échantillonnage standards de 16 à 48 kHz | ||
| AMR-NB | OUI | OUI |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4,75 à 12,2 kbit/s échantillonnés à 8 kHz |
| AMR-WB | OUI | OUI | 9 débits de 6,60 kbit/s à 23,85 kbit/s échantillonnés à 16 kHz | ||
| FLAC | Android 4.1 et versions ultérieures | Android 3.1 ou version ultérieure |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10 ou version ultérieure) • Matroska (.mkv) |
Mono/Stéréo (pas de multicanal). Taux d'échantillonnage jusqu'à 48 kHz (mais jusqu'à 44,1 kHz est recommandé sur les appareils avec une sortie à 44,1 kHz, car le sous-échantillonneur de 48 à 44,1 kHz n'inclut pas de filtre passe-bas). 16 bits recommandé ; aucune trame n'est appliquée pour 24 bits. | |
| MIDI | OUI |
• Type 0 et 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI de type 0 et 1. DLS versions 1 et 2. XMF et Mobile XMF. Prise en charge des formats de sonnerie RTTTL/RTX, OTA et iMelody | ||
| MP3 | OUI |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv, Android 10+) |
Mono/Stéréo, débit constant (CBR) ou variable (VBR) de 8 à 320 kbit/s | ||
| Opus | Android 10 et versions ultérieures | Android 5.0 ou version ultérieure |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 et versions ultérieures | OUI | WAVE (.wav) | PCM linéaire 8 et 16 bits (fréquences jusqu'à la limite du matériel). Taux d'échantillonnage pour les enregistrements PCM bruts à 8 000, 16 000 et 44 100 Hz. | |
| Vorbis | OUI |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+) • MPEG-4 (.mp4, .m4a, Android 10+) |
• WebM (.webm) | ||
Compatibilité vidéo
Formats vidéo
| Format | Encodeur | Décodeur | Types de fichiers et formats de conteneurs | Détails | |
|---|---|---|---|---|---|
| Extracteur | Muxer | ||||
| H.263 | OUI | OUI |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
La prise en charge de H.263 est facultative dans Android 7.0 et versions ultérieures. |
| Profil de référence H.264/AVC |
Android 3.0 ou version ultérieure | OUI |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, audio AAC uniquement, non compatible avec la recherche, Android 3.0+) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| Profil principal H.264 AVC |
Android 6.0 et versions supérieures | OUI | Le décodeur est obligatoire, l'encodeur est recommandé. | ||
| H.265 HEVC | Android 5.0 ou version ultérieure |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Profil principal de niveau 3 pour les appareils mobiles et profil principal de niveau 4.1 pour Android TV | |
| MPEG-4 SP | OUI | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 ou version ultérieure | Android 2.3.3 ou version ultérieure |
• WebM (.webm) • Matroska (.mkv, Android 4.0 ou version ultérieure) |
• WebM (.webm) | Streaming disponible uniquement sur Android 4.0 et versions ultérieures |
| VP9 | Android 4.4+ |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1 | Android 14 et versions ultérieures | Android 10 et versions ultérieures |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | L'encodeur et le décodeur sont obligatoires à partir d'Android 14. |
| APV | Android 16 et versions ultérieures | Android 16 et versions ultérieures | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | L'encodeur et le décodeur sont obligatoires à partir d'Android 16. |
Recommandations concernant l'encodage vidéo
Le tableau ci-dessous liste les profils et paramètres d'encodage vidéo du framework multimédia Android recommandés pour la lecture à l'aide du codec H.264 Baseline Profile. Les mêmes recommandations s'appliquent au codec Main Profile, qui n'est disponible que dans Android 6.0 et versions ultérieures.
| SD (qualité médiocre) | SD (haute qualité) | HD 720p (non disponible sur tous les appareils) | |
|---|---|---|---|
| Résolution vidéo | 176 x 144 px | 480 x 360 px | 1 280 x 720 px |
| Fréquence d'images de la vidéo | 12 fps | 30 ips | 30 ips |
| Débit vidéo | 56 kbit/s | 500 Kbit/s | 2 Mbit/s |
| Codec audio | AAC-LC | AAC-LC | AAC-LC |
| Chaînes audio | 1 (mono) | 2 (stéréo) | 2 (stéréo) |
| Débit audio | 24 kbit/s | 128 Kbits/s | 192 kbit/s |
Le tableau ci-dessous liste les profils et paramètres d'encodage vidéo du framework multimédia Android recommandés pour la lecture à l'aide du codec multimédia VP8.
| SD (qualité médiocre) | SD (haute qualité) | HD 720p (non disponible sur tous les appareils) | HD 1080p (non disponible sur tous les appareils) | |
|---|---|---|---|---|
| Résolution vidéo | 320 x 180 px | 640 x 360 px | 1 280 x 720 px | 1 920 x 1 080 px |
| Fréquence d'images de la vidéo | 30 ips | 30 ips | 30 ips | 30 ips |
| Débit vidéo | 800 Kbit/s | 2 Mbit/s | 4 Mbit/s | 10 Mbit/s |
Recommandations concernant le décodage vidéo
Les implémentations d'appareils doivent prendre en charge le changement dynamique de résolution et de fréquence d'images vidéo via les API Android standards au sein du même flux pour tous les codecs VP8, VP9, H.264 et H.265 en temps réel et jusqu'à la résolution maximale prise en charge par chaque codec sur l'appareil.
Les implémentations compatibles avec le décodeur Dolby Vision doivent respecter les consignes suivantes :
- Fournissez un extracteur compatible avec Dolby Vision.
- Afficher correctement le contenu Dolby Vision sur l'écran de l'appareil ou sur un port de sortie vidéo standard (par exemple, HDMI).
- Définissez l'index de piste de la ou des couches de base rétrocompatibles (le cas échéant) sur la même valeur que l'index de piste de la couche Dolby Vision combinée.
Exigences relatives au streaming vidéo
Pour les contenus vidéo diffusés en streaming via HTTP ou RTSP, des exigences supplémentaires s'appliquent :
- Pour les conteneurs 3GPP et MPEG-4, l'atome
moovdoit précéder tout atomemdat, mais doit suivre l'atomeftyp. - Pour les conteneurs 3GPP, MPEG-4 et WebM, les échantillons audio et vidéo correspondant au même horodatage ne doivent pas être séparés de plus de 500 ko. Pour minimiser ce décalage audio/vidéo, pensez à entrelacer l'audio et la vidéo dans des segments plus petits.
Compatibilité avec les images
| Format | Encodeur | Décodeur | Détails | Types de fichiers Formats de conteneurs |
|---|---|---|---|---|
| BMP | OUI | BMP (.bmp) | ||
| GIF | OUI | GIF (.gif) | ||
| JPEG | OUI | OUI | Base+progressif | JPEG (.jpg) |
| PNG | OUI | OUI | PNG (.png) | |
| WebP |
Android 4.0 ou version ultérieure Sans perte : Android 10 ou version ultérieure Transparence : Android 4.2.1 ou version ultérieure |
Android 4.0+ Sans perte : Android 4.2.1+ Transparence : Android 4.2.1+ |
L'encodage sans perte est possible sur Android 10 avec une qualité de 100. | WebP (.webp) |
| HEIF |
Android 10 ou version ultérieure (via MediaCodec ou HeifWriter ; pas dans Bitmap.compress)
|
Android 9.0 et versions ultérieures | Appareil facultatif. Consultez ImageDecoder.isMimeTypeSupported("image/heif") pour en savoir plus sur la prise en charge des 8 bits. Le décodage 10 bits nécessite le profil HEVC Main10 en option. |
HEIF (.heic, .heif) |
| AVIF (profil de référence) |
Android 14 ou version ultérieure (via MediaCodec ; pas dans Bitmap.compress)
|
Android 12 et versions ultérieures | Le décodage 8 bits est pris en charge à partir d'Android 12. Le décodage 10 bits est facultatif. Vérifiez ImageDecoder.isMimeTypeSupported("image/avif") pour la prise en charge 10 bits (même si la valeur est "false", le décodage 8 bits fonctionne toujours). |
AVIF (.avif) |
Protocoles de réseau
Les protocoles réseau suivants sont compatibles avec la lecture audio et vidéo :
- RTSP (RTP, SDP)
- Streaming progressif HTTP/HTTPS
- Protocole provisoire de diffusion en direct HTTP/HTTPS :
- Fichiers multimédias MPEG-2 TS uniquement
- Version 3 du protocole Android 4.0 et versions ultérieures
- Version 2 du protocole Android 3.x
- Non compatible avec les versions antérieures à Android 3.0
Remarque : HTTPS n'est pas compatible avec les versions d'Android antérieures à la version 3.1.
Formats vidéo HDR
Les OEM peuvent activer le format HDR de leur choix avec l'architecture Android HDR, qui fournit les besoins de base des formats HDR : tampons 10 bits, métadonnées (statiques, dynamiques et aucune), fonction de transfert et gestion de l'espace colorimétrique.
Pour assurer la cohérence pour les développeurs et répondre aux principaux cas d'utilisation du HDR, nous demandons aux OEM de prendre en charge quelques formats de base sur les appareils compatibles avec le HDR :
- Pour la lecture de contenus professionnels, comme les films en streaming, nous exigeons le format HDR10.
- Pour la capture et la lecture de contenus générés par les utilisateurs, nous exigeons le format HLG10 afin d'offrir une expérience cohérente sur les appareils Android.
Les OEM qui ajoutent la prise en charge du HDR doivent prendre en charge ces formats, mais peuvent également prendre en charge des formats supplémentaires tels que HDR10+ ou Dolby Vision.
| Format | Fonction de transfert | Métadonnées | Codec | Profondeur de bit |
|---|---|---|---|---|
| HLG10 | HLG | Non | HEVC | 10 bits |
| HDR10 | PQ | Statique | HEVC | 10 bits |
| HDR10+ | PQ | Statique | HEVC | 10 bits |
| Dolby Vision 8.4 | HLG | Dynamique | HEVC | 10 bits |
Recommandations pour la gestion des formats
| Format de capture | Format d'importation | Format de diffusion |
| HLG | Compatibilité HDR HLG avec le backend de l'application | Appareils compatibles avec le HDR (HLG) :
HLG Appareils compatibles avec le HDR (PQ uniquement, pas HLG) : SDR (mappage de tonalité de HLG à SDR dans le backend) Appareils non compatibles HDR : SDR (mappage de tonalité de HLG à SDR dans le backend) |
Cas d'utilisation 2 : Capture avec l'appareil photo natif ou importation depuis la galerie de l'utilisateur (le backend de l'application est compatible avec le HDR)
| Format de capture | Format d'importation | Format de diffusion |
| HLG | HLG | Identique au cas d'utilisation de la capture dans l'application |
| HDR10+ | HLG
Mappez la tonalité de HDR10+ (PQ) à HLG avant l'importation à l'aide des API Transformer. |
Identique au cas d'utilisation de la capture dans l'application |
| DV8.4 | HLG
(DV8.4 utilise HLG et le flux binaire se comportera comme HLG, donc aucun mappage des tons n'est requis) |
Identique au cas d'utilisation de la capture dans l'application |
Cas d'utilisation 3 : le backend de l'application n'est pas compatible avec le HDR
| Format de capture | Format d'importation | Format de diffusion |
| Tous les formats | SDR
Mappez la tonalité de HLG à SDR avant l'importation à l'aide des API Transformer. |
SDR |