
Those classes only needed to have access to a `SubtitleParser.Factory` to get a potentially updated `Format` for TrackGroups. The `SubtitleParser.Factory` was only used to check the support for the `mimeType` and getting some cue-related behaviour. This introduced complexity in a way that both Periods and Extractors needed to have the same `SubtitleParser.Factory` in their individual stacks. To ensure that the sample queue would get the same transcoded/original format. Instead, now we expose `getOutputTextFormat` methods on `ChunkExtractor.Factory`, `SsChunkSource.Factory` and `HlsExtractorFactory`. Those are the dependencies that Hls/Ss/DashMediaPeriod can make use of to delegate the format-updating logic to. #minor-release PiperOrigin-RevId: 601130714
ExoPlayer SmoothStreaming module
Provides support for SmoothStreaming 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-smoothstreaming: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.
Adding a dependency to this module is all that's required to enable playback of
SmoothStreaming media items added to ExoPlayer
in its default configuration.
Internally, DefaultMediaSourceFactory
will automatically detect the presence
of the module and convert a SmoothStreaming MediaItem
into a SsMediaSource
for playback.
Similarly, a DownloadManager
in its default configuration will use
DefaultDownloaderFactory
, which will automatically detect the presence of
the module and build SsDownloader
instances to download SmoothStreaming
content.
For advanced playback use cases, applications can build SsMediaSource
instances and pass them directly to the player. For advanced download use cases,
SsDownloader
can be used directly.