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 | SÍ | Solo transmisiones con desMUx |
WebM | SÍ | Solo transmisiones con desMUx |
Región de Matroska | SÍ | Solo transmisiones con desMUx |
MPEG-TS | NO | No hay asistencia planificada |
Subtítulos | ||
TTML | SÍ | Sin procesar o incorporados en FMP4 según ISO/IEC 14496-30 |
WebVTT | SÍ | Sin procesar o incorporados en FMP4 según ISO/IEC 14496-30 |
CEA-608 | SÍ | Incorporado en FMP4 cuando se indica mediante descriptores de accesibilidad SCTE |
CEA-708 | SÍ | Incorporado en FMP4 cuando se indica mediante descriptores de accesibilidad SCTE |
Metadatos | ||
Metadatos de EMSG | SÍ | Incorporado en FMP4 |
Protección del contenido | ||
Widevine | SÍ | “cenc” esquema: API 19+; “cbcs” esquema: API 25 y versiones posteriores |
PlayReady SL2000 | SÍ | Android TV, "cenc" solo esquema |
Borrar clave | SÍ | Nivel de API 21 y versiones posteriores, “cenc” solo esquema |
Reproducción en vivo | ||
Reproducción en vivo habitual | SÍ | |
Reproducción en vivo de CMAF de latencia ultrabaja | SÍ | |
Datos de clientes de medios comunes (CMCD) | SÍ | 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 | SÍ | Solo transmisiones con desMUx |
Subtítulos | ||
TTML | SÍ | Incorporado en FMP4 |
Protección del contenido | ||
PlayReady SL2000 | SÍ | Únicamente para Android TV |
Reproducción en vivo | ||
Reproducción en vivo habitual | SÍ | |
Datos de clientes de medios comunes (CMCD) | SÍ | 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 | SÍ | |
FMP4 y CMAF | SÍ | |
ADTS (AAC) | SÍ | |
MP3 | SÍ | |
Subtítulos | ||
CEA-608 | SÍ | |
CEA-708 | SÍ | |
WebVTT | SÍ | |
Metadatos | ||
ID3 | SÍ | |
SCTE-35 | NO | |
Protección del contenido | ||
AES‐128 | SÍ | |
Ejemplo de AES-128 | NO | |
Widevine | SÍ | API 19+ (esquema “cenc”) y 25+ (“esquema cbcs”) |
PlayReady SL2000 | SÍ | Únicamente para Android TV |
Control del servidor | ||
Actualizaciones delta | SÍ | |
Bloqueando la recarga de la playlist | SÍ | |
Carga de bloqueo de sugerencias de precarga | SÍ | Excepto para los rangos de bytes con longitudes no definidas |
Reproducción en vivo | ||
Reproducción en vivo habitual | SÍ | |
HLS de baja latencia (Apple) | SÍ | |
HLS de baja latencia (Comunidad) | NO | |
Datos de clientes de medios comunes (CMCD) | SÍ | 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 | SÍ | |
M4A | SÍ | |
FMP4 | SÍ | |
WebM | SÍ | |
Región de Matroska | SÍ | |
MP3 | SÍ | Algunas transmisiones solo admiten búsquedas con una tasa de bits constante** |
OGG | SÍ | Contiene Vorbis, Opus y FLAC |
Vehículos WAV | SÍ | |
MPEG-TS | SÍ | |
MPEG-PS | SÍ | |
FLV | SÍ | No se puede buscar* |
ADTS (AAC) | SÍ | Solo se puede buscar con una tasa de bits constante** |
FLAC | SÍ | Uso de la biblioteca FLAC o el extractor FLAC en la biblioteca de ExoPlayer*** |
AMR | SÍ | 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 | SÍ | |
GIF | NO | Sin compatibilidad con extractor |
JPEG | SÍ | |
Foto en movimiento JPEG | SÍ | Compatibilidad con imágenes fijas y videos |
JPEG Ultra HDR | SÍ | Recurre a SDR antes de Android 14 o en pantallas no HDR |
PNG | SÍ | |
WebP | SÍ | |
HEIF/HEIC | SÍ | |
Foto en movimiento HEIC | Parcialmente | Solo se admiten imágenes estáticas* |
AVIF (referencia) | SÍ | 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 | SÍ | Tipos de MIME.TEXT_VTT |
TTML / SMPTE-TT | SÍ | Tipos de Mime.APPLICATION_TTML |
SubRip | SÍ | Tipos de MIME.APPLICATION_SUBRIP |
SubStationAlpha (SSA/ASS) | SÍ | 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.