Posted by Andrew Lewis – Software program Engineer
This text is cross-published on Medium
This launch features a host of bug fixes, efficiency enhancements and new options. Learn on to search out out extra, and as all the time please try the full launch notes for a complete overview of modifications on this launch.
Playback, MediaSession and UI
ExoPlayer now helps HLS interstitials for advert insertion in HLS streams. To play these advertisements utilizing ExoPlayer’s built-in playlist help, cross an HlsInterstitialsAdsLoader.AdsMediaSourceFactory because the media supply manufacturing facility when creating the participant. For extra data see the official documentation.
This launch additionally contains experimental help for ‘pre-warming’ decoders. With out pre-warming, transitions from one playlist merchandise to the subsequent will not be seamless in some instances, for instance, we might have to change codecs, or decode some video frames to achieve the beginning place of the brand new media merchandise. With pre-warming enabled, a secondary video renderer can begin decoding the brand new media merchandise earlier, giving near-seamless transitions. You’ll be able to do this function out by enabling it on the DefaultRenderersFactory. We’re actively engaged on additional enhancements to the way in which we work together with decoders, together with including a ‘quick in search of mode’ so keep tuned for updates on this space.
Media3 1.6.0 introduces a brand new media3-ui-compose module that comprises performance for constructing Compose UIs for playback. You’ll find a reference implementation within the Media3 Compose demo and study extra in Getting began with Compose-based UI. At this level we’re offering a primary set of foundational state courses that hyperlink to the Participant, along with some primary composable constructing blocks. You need to use these to construct your individual custom-made UI widgets. We plan to publish default Materials-themed composables in a later launch.
Another enhancements on this launch embrace: transferring system calls off the applying’s primary thread to the background (which ought to scale back ANRs), a brand new decoder module wrapping libmpegh (for bundling object-based audio decoding in your app), and a repair for the Forged extension for apps concentrating on API 34+. There are additionally fixes throughout MPEG-TS and WebVTT extraction, DRM, downloading/caching, MediaSession and extra.
Media extraction and body retrieval
The brand new MediaExtractorCompat is a drop-in substitute for the framework MediaExtractor however carried out utilizing Media3’s extractors. In case you’re utilizing the Android framework MediaExtractor, contemplate migrating to get constant conduct throughout units and scale back crashes.
We have additionally added experimental help for retrieving video frames in a brand new class ExperimentalFrameExtractor, which might act as a substitute for the MediaMetadataRetriever getFrameAtTime strategies. There are a couple of advantages over the framework implementation: HDR enter is supported (by default tonemapping all the way down to SDR, however with the choice to provide HLG bitmaps from Android 14 onwards), Media3 results will be utilized (together with Presentation to scale the output to a desired dimension) and it runs quicker on some units as a consequence of transferring colour area conversion to the GPU. Here is an instance of utilizing the brand new API:
val bitmap = withContext(Dispatchers.IO) { val configuration = ExperimentalFrameExtractor.Configuration .Builder() .setExtractHdrFrames(true) .construct() val frameExtractor = ExperimentalFrameExtractor( context, configuration, ) frameExtractor.setMediaItem(mediaItem, /*results*/ listOf()) val body = frameExtractor.getFrame(timestamps).await() frameExtractor.launch() body.bitmap }
Enhancing, transcoding and export
Media3 1.6.0 contains efficiency, stability and purposeful enhancements in Transformer. Highlights embrace: help for transcoding/transmuxing Dolby Imaginative and prescient streams on units that help this format and a brand new MediaProjectionAssetLoader for recording from the display, which you’ll check out within the Transformer demo app.
Try Widespread media processing operations with Jetpack Media3 Transformer for some code snippets exhibiting learn how to course of media with Transformer, and tricks to scale back latency.
This launch additionally features a new Kotlin-based demo app showcasing Media3’s video results framework. You’ll be able to choose from a wide range of video results and preview them through ExoPlayer.setVideoEffects.

Get began sith Media3 1.6.0
Please get in contact through the Media3 subject Tracker for those who run into any bugs, or when you’ve got questions or function requests. We look ahead to listening to from you!