En este documento, se describen la compatibilidad con códecs de medios, contenedores y protocolos de red que proporciona la plataforma de Android.
En las tablas que se muestran a continuación, se describe el soporte de formatos de medios integrado en la plataforma de Android. SÍ significa que el formato está disponible en dispositivos portátiles y tablets que ejecutan todas las versiones de Android. Cuando se especifica una plataforma de Android en particular, el formato está disponible en teléfonos celulares y tablets que ejecutan esa versión y todas las versiones posteriores. Es posible que el formato también esté disponible en versiones anteriores, pero esto no está garantizado. En factores de forma que no sean teléfonos celulares ni tablets, la compatibilidad con formatos de medios puede variar.
Ten en cuenta que un dispositivo móvil en particular puede admitir formatos o tipos de archivos adicionales que no se mencionan en estas tablas. Además, si usas un objeto MediaCodec directamente, puedes acceder a cualquiera de los formatos de medios disponibles, independientemente de los tipos de archivos y los formatos de contenedor admitidos.
Compatibilidad con audio
| Formato | Codificador | Decodificador | Formatos de contenedores de tipos de archivos | Detalles | |
|---|---|---|---|---|---|
| Extractor | Muxer | ||||
| AAC LC | SÍ | SÍ |
• 3GPP (.3gp) • AAC sin procesar ADTS (.aac, no se admite ADIF) • MPEG-TS (.ts, no se puede buscar, Android 3.0 y versiones posteriores) |
• 3GPP (.3gp) • AAC sin procesar de ADTS (.aac, no admitido ADIF) • MPEG-TS (no seguro) (.ts, no se puede buscar, Android 3.0 o versiones posteriores) |
Compatibilidad con contenido mono, estéreo, 5.0 y 5.1 con tasas de muestreo estándar de 8 a 48 kHz |
| HE-AACv1 (AAC+) | Android 4.1 y versiones posteriores | SÍ | |||
| HE-AACv2 (AAC+ mejorado) | SÍ | Compatibilidad con contenido estéreo/5.0/5.1 con tasas de muestreo estándar de 8 a 48 kHz | |||
| xHE-AAC | Android 9 y versiones posteriores | Admite contenido de hasta 8 canales con tasas de muestreo estándar de 8 a 48 kHz | |||
| AAC ELD (AAC mejorado de bajo retraso) | Android 4.1 y versiones posteriores | Android 4.1 y versiones posteriores | Compatibilidad con contenido mono o estéreo con tasas de muestreo estándar de 16 a 48 kHz | ||
| AMR-NB | SÍ | SÍ |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4.75 a 12.2 kbps con muestreo a 8 kHz |
| AMR-WB | SÍ | SÍ | 9 tasas de 6.60 kbit/s a 23.85 kbit/s con muestreo a 16 kHz | ||
| FLAC | Android 4.1 y versiones posteriores | Android 3.1 y versiones posteriores |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10 y versiones posteriores) • Matroska (.mkv) |
Mono/estéreo (sin multicanal). Tasas de muestreo de hasta 48 kHz (pero se recomienda hasta 44.1 kHz en dispositivos con salida de 44.1 kHz, ya que el submuestreador de 48 a 44.1 kHz no incluye un filtro de paso bajo). Se recomienda 16 bits; no se aplica tramado para 24 bits. | |
| MIDI | SÍ |
• Tipo 0 y 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI tipo 0 y 1. Versión 1 y 2 de DLS. XMF y Mobile XMF. Compatibilidad con los formatos de tono RTTTL/RTX, OTA y iMelody. | ||
| MP3 | SÍ |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10 y versiones posteriores) • Matroska (.mkv, Android 10 y versiones posteriores) |
Tasa de bits constante (CBR) o variable (VBR) mono/estéreo de 8 a 320 Kbps. | ||
| Opus | Android 10 y versiones posteriores | Android 5.0 y versiones posteriores |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 y versiones posteriores | SÍ | WAVE (.wav) | MIC lineal de 8 y 16 bits (el límite de las tasas depende del hardware). Tasas de muestreo para grabaciones PCM sin procesar a 8,000, 16,000 y 44,100 Hz. | |
| Vorbis | SÍ |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0 y versiones posteriores) • MPEG-4 (.mp4, .m4a, Android 10 y versiones posteriores) |
• WebM (.webm) | ||
Compatibilidad con video
Formatos de video
| Formato | Codificador | Decodificador | Formatos de contenedores de tipos de archivos | Detalles | |
|---|---|---|---|---|---|
| Extractor | Muxer | ||||
| H.263 | SÍ | SÍ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
La compatibilidad con H.263 es opcional en Android 7.0 y versiones posteriores |
| Perfil básico (BP) de H.264 AVC |
Android 3.0 y versiones posteriores | SÍ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, solo audio AAC, no se puede buscar, Android 3.0 y versiones posteriores) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| Perfil principal (MP) de H.264 AVC |
Android 6.0 o versiones posteriores | SÍ | Se requiere usar decodificador y se recomienda usar codificador. | ||
| H.265 HEVC | Android 5.0 y versiones posteriores |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Perfil principal nivel 3 para dispositivos móviles y perfil principal nivel 4.1 para Android TV | |
| MPEG-4 SP | SÍ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 y versiones posteriores | Android 2.3.3 y versiones posteriores |
• WebM (.webm) • Matroska (.mkv, Android 4.0 y versiones posteriores) |
• WebM (.webm) | Transmitible solo en Android 4.0 y versiones posteriores |
| VP9 | Android 4.4 y versiones posteriores |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1 | Android 14 y versiones posteriores | Android 10 y versiones posteriores |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | El codificador y el decodificador son obligatorios a partir de Android 14. |
| APV | Android 16 y versiones posteriores | Android 16 y versiones posteriores | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | El codificador y el decodificador son obligatorios a partir de Android 16. |
Recomendaciones sobre codificación de video
En la siguiente tabla, se enumeran los perfiles y parámetros de codificación de video del framework de medios de Android recomendados para la reproducción con el códec de Perfil de Baseline de H.264. Las mismas recomendaciones se aplican al códec de perfil principal, que solo está disponible en Android 6.0 y versiones posteriores.
| SD (baja calidad) | SD (alta calidad) | HD 720p (N/A en todos los dispositivos) | |
|---|---|---|---|
| Resolución de video | 176 x 144 px | 480 x 360 px | 1280 x 720 px |
| Velocidad de fotogramas del video | 12 fps | 30 fps | 30 fps |
| Tasa de bits del video | 56 Kbps | 500 Kbps | 2 Mbps |
| Códec de audio | AAC-LC | AAC-LC | AAC-LC |
| Canales de audio | 1 (mono) | 2 (estéreo) | 2 (estéreo) |
| Tasa de bits de audio | 24 Kbps | 128 Kbps | 192 Kbps |
En la siguiente tabla, se enumeran los perfiles y parámetros de codificación de video del framework de medios de Android que se recomiendan para la reproducción con el códec de medios VP8.
| SD (baja calidad) | SD (alta calidad) | HD 720p (N/A en todos los dispositivos) | HD 1080p (N/A en todos los dispositivos) | |
|---|---|---|---|---|
| Resolución de video | 320 x 180 px | 640 x 360 px | 1280 x 720 px | 1920 x 1080 px |
| Velocidad de fotogramas del video | 30 fps | 30 fps | 30 fps | 30 fps |
| Tasa de bits del video | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
Recomendaciones para la decodificación de video
Las implementaciones de dispositivos deben admitir el cambio dinámico de resolución y velocidad de fotogramas de video a través de las APIs de Android estándar dentro del mismo flujo para todos los códecs VP8, VP9, H.264 y H.265 en tiempo real y hasta la resolución máxima admitida por cada códec en el dispositivo.
Las implementaciones compatibles con el decodificador Dolby Vision deben seguir estas pautas:
- Proporciona un extractor compatible con Dolby Vision.
- Mostrar correctamente el contenido de Dolby Vision en la pantalla del dispositivo o en un puerto de salida de video estándar (p. ej., HDMI)
- Establece el índice de pista de las capas base retrocompatibles (si están presentes) para que sea el mismo que el índice de pista de la capa combinada de Dolby Vision.
Requisitos de transmisión de video
Para el contenido de video que se transmite por HTTP o RTSP, hay requisitos adicionales:
- En el caso de los contenedores 3GPP y MPEG-4, el átomo
moovdebe preceder a cualquier átomomdat, pero debe suceder al átomoftyp. - En el caso de los contenedores 3GPP, MPEG-4 y WebM, las muestras de audio y video que corresponden a la misma compensación horaria no pueden tener una diferencia de más de 500 KB. Para minimizar esta diferencia de audio/video, considera intercalar audio y video en tamaños más pequeños.
Compatibilidad con imágenes
| Formato | Codificador | Decodificador | Detalles | Tipos de archivos Formatos de contenedor |
|---|---|---|---|---|
| BMP | SÍ | BMP (.bmp) | ||
| GIF | SÍ | GIF (.gif) | ||
| JPEG | SÍ | SÍ | Básica + progresiva | JPEG (.jpg) |
| PNG | SÍ | SÍ | PNG (.png) | |
| WebP |
Android 4.0 y versiones posteriores Sin pérdida: Android 10 y versiones posteriores Transparencia: Android 4.2.1 y versiones posteriores |
Android 4.0 y versiones posteriores Sin pérdida: Android 4.2.1 y versiones posteriores Transparencia: Android 4.2.1 y versiones posteriores |
En Android 10, se puede lograr una codificación sin pérdida con una calidad de 100. | WebP (.webp) |
| HEIF |
Android 10 y versiones posteriores (a través de MediaCodec o HeifWriter; no en Bitmap.compress)
|
Android 9.0 y versiones posteriores | El dispositivo es opcional. Verifica si ImageDecoder.isMimeTypeSupported("image/heif") admite 8 bits. La decodificación de 10 bits requiere el perfil opcional HEVC Main10. |
HEIF (.heic; .heif) |
| AVIF (perfil de Baseline) |
Android 14 y versiones posteriores (a través de MediaCodec; no en Bitmap.compress)
|
Android 12 y versiones posteriores | La decodificación de 8 bits es compatible con Android 12 y versiones posteriores. La decodificación de 10 bits es opcional. Consulta ImageDecoder.isMimeTypeSupported("image/avif") para verificar la compatibilidad con 10 bits (incluso si es falso, la decodificación de 8 bits sigue funcionando). |
AVIF (.avif) |
Protocolos de red
Los siguientes protocolos de red son compatibles con la reproducción de audio y video:
- RTSP (RTP, SDP)
- Transmisión progresiva de HTTP/HTTPS
- Protocolo proyectado para HTTP/HTTPS Live Streaming:
- Solo archivos multimedia MPEG-2 TS
- Versión del protocolo 3, Android 4.0 y versiones posteriores
- Versión 2 del protocolo para Android 3.x
- No compatible con versiones anteriores a Android 3.0
Nota: HTTPS no es compatible con Android 3.1.
Formatos de video HDR
Los OEM pueden habilitar cualquier formato HDR que elijan con la arquitectura HDR de Android, que proporciona las necesidades básicas de los formatos HDR: búferes de 10 bits, metadatos (estáticos, dinámicos y ninguno), función de transferencia y control del espacio de color.
Para garantizar la coherencia para los desarrolladores y abordar los casos de uso clave del HDR, les exigimos a los OEM que admitan algunos formatos básicos en los dispositivos que admiten HDR:
- Para la reproducción de contenido profesional, como la transmisión de películas, requerimos HDR10.
- Para la captura y reproducción de contenido generado por usuarios, requerimos HLG10 para proporcionar una experiencia coherente en todos los dispositivos Android.
Los OEM que agreguen compatibilidad con HDR deben admitir estos formatos, pero también pueden admitir formatos adicionales, como HDR10+ o Dolby Vision.
| Formato | Función de transferencia | Metadatos | Códec | Profundidad de bits |
|---|---|---|---|---|
| HLG10 | HLG | No | HEVC | 10 bits |
| HDR10 | PQ | Estática | HEVC | 10 bits |
| HDR10+ | PQ | Estática | HEVC | 10 bits |
| Dolby Vision 8.4 | HLG | Dinámico | HEVC | 10 bits |
Recomendaciones para el manejo de formatos
| Formato de captura | Formato de carga | Formato de entrega |
| HLG | Backend de la app compatible con HDR HLG | Dispositivos compatibles con HDR (HLG):
HLG Dispositivos compatibles con HDR (solo PQ, no HLG): SDR (asignación de tono de HLG a SDR en el backend) Dispositivos que no admiten HDR: SDR (asignación de tono de HLG a SDR en el backend) |
Caso de uso 2: Captura con la cámara nativa o importación desde la galería del usuario (el backend de la app admite HDR)
| Formato de captura | Formato de carga | Formato de entrega |
| HLG | HLG | Igual que el caso de uso de captura desde la app |
| HDR10+ | HLG
Asigna el tono del mapa de HDR10+ (PQ) a HLG antes de la carga con las APIs de Transformer |
Igual que el caso de uso de captura desde la app |
| DV8.4 | HLG
(DV8.4 usa HLG, y el flujo de bits se comportará como HLG, por lo que no se requiere la asignación de tonos). |
Igual que el caso de uso de captura desde la app |
Caso de uso 3: El backend de la app no admite HDR
| Formato de captura | Formato de carga | Formato de entrega |
| Cualquier formato | SDR
Asignación de tono de HLG a SDR antes de la carga con las APIs de Transformer |
SDR |