
Before this change: * With legacy subtitle decoding (at render time), load errors (e.g. HTTP 404) would result playback completely failing, while parse errors (e.g. invalid WebVTT data) would be silently ignored, so playback would continue without subtitles. * With new subtitle decoding (at extraction time), both load and parse errors would result in playback completely failing. This change means that now neither load nor parse errors in text or metadata tracks stop playback from continuing. Instead the error'd track is disabled until the end of the current period. With new subtitle decoding, both load and parse errors happen during loading/extraction, and so are emitted to the app via `MediaSourceEventListener.onLoadError` and `AnalyticsListener.onLoadError`. With legacy subtitle decoding, only load errors are emitted via these listeners and parsing errors continue to be silently ignored. Issue: androidx/media#1722 PiperOrigin-RevId: 686902979
ExoPlayer HLS module
Provides support for HTTP Live Streaming (HLS) content in ExoPlayer.
Getting the module
The easiest way to get the module is to add it as a gradle dependency:
implementation 'androidx.media3:media3-exoplayer-hls:1.X.X'
where 1.X.X
is the version, which must match the version of the other media
modules being used.
Alternatively, you can clone this GitHub project and depend on the module locally. Instructions for doing this can be found in the top level README.
Using the module
Adding a dependency to this module is all that's required to enable playback of
HLS media items added to ExoPlayer
in its default configuration. Internally,
DefaultMediaSourceFactory
will automatically detect the presence of the module
and convert an HLS MediaItem
into an HlsMediaSource
for playback.
Similarly, a DownloadManager
in its default configuration will use
DefaultDownloaderFactory
, which will automatically detect the presence of
the module and build HlsDownloader
instances to download HLS content.
For advanced playback use cases, applications can build HlsMediaSource
instances and pass them directly to the player. For advanced download use cases,
HlsDownloader
can be used directly.