ExoPlayer może bezpośrednio odtwarzać strumienie w tych formatach kontenerów: Obsługiwane muszą być też formaty próbek audio i wideo (szczegółowe informacje znajdziesz w sekcji Formaty próbek). Informacje o obsługiwanych kontenerach i formatach obrazów znajdziesz w sekcji Obrazy.
| Format kontenera | Obsługiwane | Komentarze |
|---|---|---|
| MP4 | TAK | |
| M4A | TAK | |
| FMP4 | TAK | |
| WebM | TAK | |
| Matroska | TAK | |
| MP3 | TAK | Niektóre strumienie można przewijać tylko przy użyciu przewijania ze stałą szybkością transmisji** |
| Ogg | TAK | zawierające formaty Vorbis, Opus i FLAC; |
| WAV | TAK | |
| MPEG-TS | TAK | |
| MPEG-PS | TAK | |
| FLV | TAK | Nie można przewijać* |
| ADTS (AAC) | TAK | Można przewijać tylko przy użyciu przewijania ze stałą szybkością transmisji bitów** |
| FLAC | TAK | korzystanie z biblioteki FLAC lub ekstraktora FLAC w bibliotece ExoPlayer***; |
| AMR | TAK | Można przewijać tylko przy użyciu przewijania ze stałą szybkością transmisji bitów** |
* Przewijanie jest niedostępne, ponieważ kontener nie zawiera metadanych (np. indeksu próbek), które umożliwiają odtwarzaczowi multimediów wydajne przewijanie. Jeśli wymagane jest wyszukiwanie, zalecamy użycie bardziej odpowiedniego formatu kontenera.
** Te ekstraktory mają flagi FLAG_ENABLE_CONSTANT_BITRATE_SEEKING umożliwiające przybliżone wyszukiwanie przy założeniu stałej szybkości transmisji. Ta funkcja nie jest domyślnie włączona. Najprostszym sposobem włączenia tej funkcji dla wszystkich ekstraktorów, które ją obsługują, jest użycie DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, jak opisano tutaj.
*** Ekstraktor biblioteki FLAC generuje surowe dane audio, które mogą być obsługiwane przez platformę na wszystkich poziomach interfejsu API. Ekstraktor FLAC biblioteki ExoPlayer generuje ramki audio FLAC, więc wymaga dekodera FLAC (np. dekodera MediaCodec
obsługującego FLAC, który jest wymagany od poziomu interfejsu API 27, lub biblioteki FFmpeg z włączoną obsługą FLAC). DefaultExtractorsFactory korzysta z ekstraktora rozszerzeń, jeśli aplikacja została utworzona za pomocą biblioteki FLAC.
W przeciwnym razie używa ekstraktora biblioteki ExoPlayer.
Używanie elementu MediaItem
Aby odtworzyć strumień progresywny, utwórz MediaItem z identyfikatorem URI multimediów i przekaż go do odtwarzacza.
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();
Korzystanie z ProgressiveMediaSource
Aby uzyskać więcej opcji dostosowywania, możesz utworzyć obiekt ProgressiveMediaSource i przekazać go bezpośrednio do odtwarzacza zamiast obiektu 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();
Dostosowywanie odtwarzania
ExoPlayer udostępnia wiele sposobów dostosowywania odtwarzania do potrzeb aplikacji. Przykłady znajdziesz na stronie Dostosowywanie.