Formatos compatibles

Cuando definas los formatos que admite ExoPlayer, es importante tener en cuenta que "formatos para medios" se definen en varios niveles. Desde el nivel más bajo hasta el más alta, estos son:

  • El formato de las muestras de medios individuales (como un fotograma de video o un fotograma) de audio). Estos son formatos de muestra. Ten en cuenta que un archivo de video típico contener medios en al menos dos formatos de muestra; una para video (por ejemplo, H.264) y y otro para audio (por ejemplo, AAC).
  • El formato del contenedor que aloja las muestras de contenido multimedia y los asociados metadatos. Estos son formatos de contenedor. Los archivos multimedia tienen un solo contenedor (por ejemplo, MP4), que suele indicarse la extensión de archivo. Nota que, para algunos formatos solo de audio (por ejemplo, MP3), los formatos de muestra y de contenedor pueden ser los mismos.
  • Tecnologías de transmisión adaptables, como DASH, SmoothStreaming y HLS. Estos no son formatos de medios como tales; sin embargo, es necesario definir y el nivel de compatibilidad que ExoPlayer proporciona.

En las siguientes secciones, se define la compatibilidad de ExoPlayer en cada nivel, del más alto al más bajo. Las últimas dos secciones describen la compatibilidad con formatos de subtítulos independientes y la reproducción de videos HDR.

Transmisión adaptable

DASH

ExoPlayer admite DASH con varios formatos de contenedor. Las transmisiones de medios demux. Esto significa que el video, el audio y el texto deben definirse de forma distinta. elementos AdaptationSet en el manifiesto de DASH (CEA-608 es una excepción, ya que que se describe en la siguiente tabla). Los formatos de muestra de audio y video contenidos deben también debe ser compatible (consulta el formatos de muestra para obtener más detalles).

Función Compatible Comentarios
Contenedores
FMP4 Solo transmisiones con desMUx
WebM Solo transmisiones con desMUx
Región de Matroska Solo transmisiones con desMUx
MPEG-TS NO No hay asistencia planificada
Subtítulos
TTML Sin procesar o incorporados en FMP4 según ISO/IEC 14496-30
WebVTT Sin procesar o incorporados en FMP4 según ISO/IEC 14496-30
CEA-608 Incorporado en FMP4 cuando se indica mediante descriptores de accesibilidad SCTE
CEA-708 Incorporado en FMP4 cuando se indica mediante descriptores de accesibilidad SCTE
Metadatos
Metadatos de EMSG Incorporado en FMP4
Protección del contenido
Widevine “cenc” esquema: API 19+; “cbcs” esquema: API 25 y versiones posteriores
PlayReady SL2000 Android TV, "cenc" solo esquema
Borrar clave Nivel de API 21 y versiones posteriores, “cenc” solo esquema
Reproducción en vivo
Reproducción en vivo habitual
Reproducción en vivo de CMAF de latencia ultrabaja
Datos de clientes de medios comunes (CMCD) Guía de integración

SmoothStreaming

ExoPlayer admite SmoothStreaming con el formato de contenedor FMP4. Transmisiones de contenido multimedia se deben demuxar, lo que significa que el video, el audio y el texto deben definirse de forma distinta Elementos de StreamIndex en el manifiesto de SmoothStreaming El audio y el Los formatos de muestra de video también deben ser compatibles (consulte la formatos de muestra para obtener más detalles).

Función Compatible Comentarios
Contenedores
FMP4 Solo transmisiones con desMUx
Subtítulos
TTML Incorporado en FMP4
Protección del contenido
PlayReady SL2000 Únicamente para Android TV
Reproducción en vivo
Reproducción en vivo habitual
Datos de clientes de medios comunes (CMCD) Guía de integración

HLS

ExoPlayer admite HLS con varios formatos de contenedor. El audio y el Los formatos de muestra de video también deben ser compatibles (consulte la formatos de muestra para obtener más detalles). Mié recomiendan a los productores de contenido HLS que generen transmisiones HLS de alta calidad como se describe aquí.

Función Compatible Comentarios
Contenedores
MPEG-TS
FMP4 y CMAF
ADTS (AAC)
MP3
Subtítulos
CEA-608
CEA-708
WebVTT
Metadatos
ID3
SCTE-35 NO
Protección del contenido
AES‐128
Ejemplo de AES-128 NO
Widevine API 19+ (esquema “cenc”) y 25+ (“esquema cbcs”)
PlayReady SL2000 Únicamente para Android TV
Control del servidor
Actualizaciones delta
Bloqueando la recarga de la playlist
Carga de bloqueo de sugerencias de precarga Excepto para los rangos de bytes con longitudes no definidas
Reproducción en vivo
Reproducción en vivo habitual
HLS de baja latencia (Apple)
HLS de baja latencia (Comunidad) NO
Datos de clientes de medios comunes (CMCD) Guía de integración

Formatos de contenedores progresivos

ExoPlayer puede reproducir directamente las transmisiones en los siguientes formatos de contenedor. Los formatos de muestra de audio y video contenidos también deben ser compatibles (consulta el Formatos de muestra para obtener más información). Para obtener información sobre la compatibilidad con contenedores y formatos de imágenes, consulta Images

Formato del contenedor Compatible Comentarios
MP4
M4A
FMP4
WebM
Región de Matroska
MP3 Algunas transmisiones solo admiten búsquedas con una tasa de bits constante**
OGG Contiene Vorbis, Opus y FLAC
Vehículos WAV
MPEG-TS
MPEG-PS
FLV No se puede buscar*
ADTS (AAC) Solo se puede buscar con una tasa de bits constante**
FLAC Uso de la biblioteca FLAC o el extractor FLAC en la biblioteca de ExoPlayer***
AMR Solo se puede buscar con una tasa de bits constante**

* No se admite la búsqueda porque el contenedor no proporciona metadatos (por ejemplo, un índice de muestra) para permitir que un reproductor multimedia realice búsquedas de manera eficiente. Si es necesaria la búsqueda, te sugerimos que utilices un formato de contenedor más adecuado.

** Estos extractores tienen marcas FLAG_ENABLE_CONSTANT_BITRATE_SEEKING para Habilita la búsqueda aproximada con una suposición de tasa de bits constante. Esta no está habilitada de forma predeterminada. La forma más sencilla de habilitar para todos los extractores que la admiten es usar DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, como se describe aquí.

*** El extractor de la biblioteca FLAC genera audio sin procesar, que se puede controlar. el framework en todos los niveles de API. Los resultados del extractor FLAC de la biblioteca de ExoPlayer las tramas de audio FLAC, por lo que dependen de tener un decodificador FLAC (por ejemplo, un MediaCodec decodificador que controla FLAC (obligatorio a partir del nivel de API 27), o biblioteca de FFmpeg con FLAC habilitado). El objeto DefaultExtractorsFactory usa si la aplicación se compiló con la biblioteca FLAC. De lo contrario, usa el extractor de la biblioteca de ExoPlayer.

RTSP

ExoPlayer admite RTSP en vivo y a pedido. Formatos de muestra admitidos y tipos de red detallados a continuación.

Formatos de muestra admitidos

  • H264 (la descripción de los medios del SDP debe incluir datos SPS/PPS en el archivo para la inicialización del decodificador).
  • AAC (con flujo de bits ADTS)
  • AC3

Tipos de redes compatibles

  • RTP a través de unidifusión UDP (la multidifusión no es compatible).
  • Intercalado de RTSP, RTP por RTSP con TCP.

Formatos de muestra

De forma predeterminada, ExoPlayer usa decodificadores de plataformas de Android. Por eso, los atributos Los formatos de muestra dependen de la plataforma subyacente en lugar de ExoPlayer. Consulta Formatos multimedia compatibles para obtener documentación sobre formatos de muestra compatibles con dispositivos Android. Ten en cuenta que Es posible que los dispositivos individuales admitan formatos adicionales aparte de los que se indican.

Además de los decodificadores de Android, ExoPlayer también puede usar extensiones de codificador-decodificador de software. Estos se deben compilar manualmente y, luego, incluir en los proyectos que quieran usarlos. Actualmente, ofrecemos decodificadores de bibliotecas para AV1 VP9 FLAC Opus y FFmpeg.

Biblioteca FFmpeg

La biblioteca de FFmpeg admite decodificar varios formatos diferentes de muestras de audio. Puedes elegir decodificadores para incluir al crear la biblioteca, tal como se documenta en README.md de la biblioteca. El La siguiente tabla muestra una asignación del formato de muestra de audio al correspondiente Nombre del decodificador FFmpeg.

Formato de la muestra Nombres de decodificadores
Vorbis vorbis
Opus opus
FLAC FLAC
ALAC alac
Ley μ de PCM pcm_mulaw
Ley A de PCM pcm_alaw
MP1, MP2 y MP3 mp3
AMR-NB Amrnb
AMR-WB Amrwb
AAC aac
AC‐3 AC3
E-AC-3 eac3
DTS y DTS-HD, DCA
TrueHD MLP truehd

Imágenes

ExoPlayer admite los siguientes formatos de imagen. Consulta Bibliotecas de carga de imágenes sobre cómo integrar bibliotecas externas que puedan admitir una un conjunto diferente de formatos.

Formato de imagen Compatible Notas
BMP
GIF NO Sin compatibilidad con extractor
JPEG
Foto en movimiento JPEG Compatibilidad con imágenes fijas y videos
JPEG Ultra HDR Recurre a SDR antes de Android 14 o en pantallas no HDR
PNG
WebP
HEIF/HEIC
Foto en movimiento HEIC Parcialmente Solo se admiten imágenes estáticas*
AVIF (referencia) Decodificado solo en Android 14 y versiones posteriores

* La sección de video de las fotos en movimiento HEIC se puede obtener con MetadataRetriever y se reproducen como archivos independientes.

Formatos de subtítulos independientes

ExoPlayer admite archivos de subtítulos independientes en una variedad de formatos. Subtítulo Los archivos se pueden transferir desde una computadora, como se describe en la página de elementos multimedia.

Formato del contenedor Compatible tipo de MIME
WebVTT Tipos de MIME.TEXT_VTT
TTML / SMPTE-TT Tipos de Mime.APPLICATION_TTML
SubRip Tipos de MIME.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) Tipos de MIME.TEXT_SSA

Reproducción de video HDR

ExoPlayer extrae videos de alto rango dinámico (HDR) en varios contenedores, incluidos Dolby Vision en MP4 y HDR10+ en Matroska/WebM. Decodificación y mostrar contenido HDR depende de la compatibilidad de la plataforma de Android y dispositivo. Consulta Reproducción de video en HDR para saber cómo comprobar las capacidades de decodificación y visualización HDR y las limitaciones de Compatibilidad con HDR en todas las versiones de Android

Cuando se reproduce una transmisión HDR que requiere compatibilidad con un perfil de códec particular, El selector MediaCodec predeterminado de ExoPlayer elegirá un decodificador que lo admita (si está disponible), incluso si otro decodificador para el mismo tipo de MIME que no es compatible con que el perfil aparezca más arriba en la lista de códecs. Esto puede provocar en la selección de un decodificador de software en los casos en que la transmisión exceda el capacidades de un decodificador de hardware para el mismo tipo de MIME.