Streams in den folgenden Containerformaten können direkt von ExoPlayer wiedergegeben werden. Die enthaltenen Audio- und Video-Beispielformate müssen ebenfalls unterstützt werden (siehe Beispielformate. Informationen zur Unterstützung von Image-Containern und -Formaten finden Sie unter Bilder:
Container format | Unterstützt | Kommentare |
---|---|---|
MP4 | JA | |
M4A | JA | |
FMP4 | JA | |
WebM | JA | |
Matroska | JA | |
MP3 | JA | Einige Streams können nur über die konstante Bitratesuche gefunden werden** |
OGG | JA | Enthält Vorbis, Opus und FLAC |
WAV (WAV) | JA | |
MPEG-TS | JA | |
MPEG-PS | JA | |
FLV | JA | Nicht suchbar* |
ADTS (AAC) | JA | Suche nur mit konstanter Bitrate-Suche möglich** |
FLAC | JA | Sie können die FLAC-Bibliothek oder den FLAC-Extraktor in der ExoPlayer-Bibliothek verwenden.*** |
Logo: AMR | JA | Suche nur mit konstanter Bitrate-Suche möglich** |
* Die Suche wird nicht unterstützt, da der Container keine Metadaten bereitstellt (z. B. ein Beispielindex), damit ein Mediaplayer eine Suche auf effiziente Weise ausführen kann. Wenn eine Suche erforderlich ist, sollten Sie ein geeigneteres Containerformat verwenden.
** Diese Extraktoren haben FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
-Flags für
eine ungefähre Suche mit einer konstanten Bitratenannahme möglich. Dieses
ist standardmäßig nicht aktiviert. Das geht am einfachsten
für alle Extraktoren,
die diese unterstützen, besteht darin,
DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
, wie beschrieben
finden Sie hier.
*** Der Extraktor der FLAC-Bibliothek gibt Audio-Rohdaten aus, die verarbeitet werden können.
des Frameworks auf allen API-Ebenen. Der FLAC-Extraktor der ExoPlayer-Bibliothek gibt aus
FLAC-Audioframes und ist daher auf einen FLAC-Decoder (z. B. MediaCodec
) angewiesen.
der FLAC verarbeitet (erforderlich ab API-Level 27), oder der
FFmpeg-Bibliothek mit aktiviertem FLAC). DefaultExtractorsFactory
verwendet die Methode
Erweiterungsextraktor, wenn die Anwendung mit der FLAC-Bibliothek erstellt wurde.
Andernfalls wird der ExoPlayer-Extraktor der ExoPlayer-Bibliothek verwendet.
MediaItem verwenden
Wenn du einen progressiven Stream wiedergeben möchtest, musst du einen MediaItem
mit dem Medien-URI erstellen und übergeben
an den Player.
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();
ProgressiveMediaSource verwenden
Weitere Anpassungsoptionen erhalten Sie, wenn Sie einen ProgressiveMediaSource
und
direkt an den Spieler statt an MediaItem
übergeben.
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();
Wiedergabe anpassen
Mit ExoPlayer können Sie die Wiedergabe auf verschiedene die Anforderungen der App zu erfüllen. Beispiele finden Sie auf der Seite „Anpassen“.