
ExoPlayer's traditional HLS preparation works by loading a chunk from each track
group, and then tries to use the sample information plus the master playlist
information to generate the preparation's resulting TrackGroups.
There are 3 possible scenarios:
- Supported case: Each variant has a single codec string per track type. We can
assign each track the codec string which matches the loaded sample's type.
- Supported case: Each variant has more than one codec string, but each track
group has a single track. This is the case when different languages use
different codecs. In this case, we can assign whichever codec matches the
loaded sample's mime type.
- Unsupported case: Each variant has more than one codec string, and track
groups contain more than one track. We are not able to safely map tracks to
codec strings because that would require loading a chunk from each track
(which would considerably delay preparation).
Broken in:
4783c329cc
PiperOrigin-RevId: 343072201
ExoPlayer HLS library module
Provides support for HTTP Live Streaming (HLS) content.
Adding a dependency to this module is all that's required to enable playback of
HLS MediaItem
s added to an ExoPlayer
or SimpleExoPlayer
in their default
configurations. Internally, DefaultMediaSourceFactory
will automatically
detect the presence of the module and convert HLS MediaItem
s into
HlsMediaSource
instances 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.
Links
- Developer Guide.
- Javadoc: Classes matching
com.google.android.exoplayer2.source.hls.*
belong to this module.