Progressiv
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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();
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“.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Progressive\n\nStreams in the following container formats can be played directly by ExoPlayer.\nThe contained audio and video sample formats must also be supported (see the\n[Sample formats](/media/media3/exoplayer/supported-formats#sample-formats) section for details).\nFor image container and format support, see\n[Images](/media/media3/exoplayer/images).\n\n| Container format | Supported | Comments |\n|------------------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| MP4 | YES | |\n| M4A | YES | |\n| FMP4 | YES | |\n| WebM | YES | |\n| Matroska | YES | |\n| MP3 | YES | Some streams only seekable using constant bitrate seeking\\*\\* |\n| Ogg | YES | Containing Vorbis, Opus and FLAC |\n| WAV | YES | |\n| MPEG-TS | YES | |\n| MPEG-PS | YES | |\n| FLV | YES | Not seekable\\* |\n| ADTS (AAC) | YES | Only seekable using constant bitrate seeking\\*\\* |\n| FLAC | YES | Using the [FLAC library](https://github.com/androidx/media/tree/release/libraries/decoder_flac) or the FLAC extractor in the [ExoPlayer library](https://github.com/androidx/media/tree/release/libraries/exoplayer)\\*\\*\\* |\n| AMR | YES | Only seekable using constant bitrate seeking\\*\\* |\n\n\\* Seeking is unsupported because the container does not provide metadata (for example,\na sample index) to allow a media player to perform a seek in an efficient way.\nIf seeking is required, we suggest using a more appropriate container format.\n\n\\*\\* These extractors have `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING` flags for\nenabling approximate seeking using a constant bitrate assumption. This\nfunctionality is not enabled by default. The simplest way to enable this\nfunctionality for all extractors that support it is to use\n`DefaultExtractorsFactory.setConstantBitrateSeekingEnabled`, as described\n[here](/media/media3/exoplayer/customization#enabling-constant-bitrate-seeking).\n\n\\*\\*\\* The [FLAC library](https://github.com/androidx/media/tree/release/libraries/decoder_flac) extractor outputs raw audio, which can be handled\nby the framework on all API levels. The [ExoPlayer library](https://github.com/androidx/media/tree/release/libraries/exoplayer) FLAC extractor outputs\nFLAC audio frames and so relies on having a FLAC decoder (for example, a `MediaCodec`\ndecoder that handles FLAC (required from API level 27), or the\n[FFmpeg library](https://github.com/androidx/media/tree/release/libraries/decoder_ffmpeg) with FLAC enabled). The `DefaultExtractorsFactory` uses the\nextension extractor if the application was built with the [FLAC library](https://github.com/androidx/media/tree/release/libraries/decoder_flac).\nOtherwise, it uses the [ExoPlayer library](https://github.com/androidx/media/tree/release/libraries/exoplayer) extractor.\n\nUsing MediaItem\n---------------\n\nTo play a progressive stream, create a `MediaItem` with the media URI and pass\nit to the player. \n\n### Kotlin\n\n```kotlin\n// Create a player instance.\nval player = ExoPlayer.Builder(context).build()\n// Set the media item to be played.\nplayer.setMediaItem(MediaItem.fromUri(progressiveUri))\n// Prepare the player.\nplayer.prepare()\n```\n\n### Java\n\n```java\n// Create a player instance.\nExoPlayer player = new ExoPlayer.Builder(context).build();\n// Set the media item to be played.\nplayer.setMediaItem(MediaItem.fromUri(progressiveUri));\n// Prepare the player.\nplayer.prepare();\n```\n\n\u003cbr /\u003e\n\nUsing ProgressiveMediaSource\n----------------------------\n\nFor more customization options, you can create a `ProgressiveMediaSource` and\npass it directly to the player instead of a `MediaItem`. \n\n### Kotlin\n\n```kotlin\n// Create a data source factory.\nval dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory()\n// Create a progressive media source pointing to a stream uri.\nval mediaSource: MediaSource =\nProgressiveMediaSource.Factory(dataSourceFactory)\n .createMediaSource(MediaItem.fromUri(progressiveUri))\n// Create a player instance.\nval player = ExoPlayer.Builder(context).build()\n// Set the media source to be played.\nplayer.setMediaSource(mediaSource)\n// Prepare the player.\nplayer.prepare()\n```\n\n### Java\n\n```java\n// Create a data source factory.\nDataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory();\n// Create a progressive media source pointing to a stream uri.\nMediaSource mediaSource =\n new ProgressiveMediaSource.Factory(dataSourceFactory)\n .createMediaSource(MediaItem.fromUri(progressiveUri));\n// Create a player instance.\nExoPlayer player = new ExoPlayer.Builder(context).build();\n// Set the media source to be played.\nplayer.setMediaSource(mediaSource);\n// Prepare the player.\nplayer.prepare();\n```\n\n\u003cbr /\u003e\n\nCustomizing playback\n--------------------\n\nExoPlayer provides multiple ways for you to tailor playback experience to your\napp's needs. See the [Customization page](/guide/topics/media/exoplayer/customization) for examples."]]