Progresivo

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
M4A
FMP4
WebM
Región de Matroska
MP3 Algunas transmisiones solo se pueden buscar con la búsqueda de 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 búsqueda de tasa de bits constante**
FLAC Con la biblioteca de FLAC o el extractor de FLAC en la biblioteca de ExoPlayer***
AMR 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.