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 la sección Formatos de muestra para obtener más información). Para obtener información sobre la compatibilidad con contenedores y formatos de imágenes, consulta Imágenes.
Formato del contenedor | Compatible | Comentarios |
---|---|---|
MP4 | SÍ | |
M4A | SÍ | |
FMP4 | SÍ | |
WebM | SÍ | |
Región de Matroska | SÍ | |
MP3 | SÍ | Algunas transmisiones solo se pueden buscar con la búsqueda de 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 búsqueda de tasa de bits constante** |
FLAC | SÍ | Con la biblioteca de FLAC o el extractor de FLAC en la biblioteca de ExoPlayer*** |
AMR | SÍ | Solo se puede buscar con búsqueda de 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 se requiere el salto, te sugerimos que uses un formato de contenedor más adecuado.
** Estos extractores tienen marcas FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
para permitir la búsqueda aproximada con una suposición de tasa de bits constante. Esta función 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. El extractor de FLAC de la biblioteca de ExoPlayer genera fotogramas de audio FLAC y, por lo tanto, depende de tener un decodificador FLAC (por ejemplo, un decodificador MediaCodec
que controle FLAC (obligatorio a partir del nivel de API 27) o la 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.
Cómo usar MediaItem
Para reproducir una transmisión progresiva, crea un MediaItem
con el URI multimedia y pásalo al reproductor.
Kotlin
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)) // Prepare the player. player.prepare()
Java
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)); // Prepare the player. player.prepare();
Cómo usar ProgressiveMediaSource
Para obtener más opciones de personalización, puedes crear un ProgressiveMediaSource
y pasarlo directamente al reproductor en lugar de un MediaItem
.
Kotlin
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a progressive media source pointing to a stream uri. val mediaSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
Java
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a progressive media source pointing to a stream uri. MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
Cómo personalizar la reproducción
ExoPlayer ofrece varias formas de personalizar la experiencia de reproducción a tu las necesidades de la app. Consulta la página Personalización para ver ejemplos.