Media3 1.11 is released with significant updates across playback, editing, and UI. Key highlights include expanded Jetpack Compose UI modules with customizable Player slots (topControls, centerControls, bottomControls), a PlayerPool for short-form video preloading and recycling, a new MiniController composable with Material3 Dynamic Color support, and new reactive state holders. The Cast extension gains CastParams configuration and SystemUI Output Switcher support. ExoPlayer adds Eclipsa Video HDR (HAGC/ST 2094-50) playback support on API 37+, a new Ktor HTTP data source module, async MediaSession controller connection via onConnectAsync(), improved default security for untrusted controllers, and new OggMuxer and WavMuxer utilities.

5m read timeFrom android-developers.googleblog.com
Post cover image
Table of contents
Playback UI and ComposeModernized Cast integrationCore playback and session enhancementsNew Muxer implementations & container parsing

Questions this post answers

How do I implement short-form vertical video preloading with multiple ExoPlayer instances in Media3?

Media3 1.11 introduces PlayerPool (in common-ktx) and rememberPooledPlayer (in ui-compose) to handle player recycling and preloading automatically. The ShortFormPlayerScreen demo in demo-compose shows a vertically paging feed where players are pooled, preloaded, and seamlessly recycled as the user scrolls, removing the need to manually manage multiple ExoPlayer instances. Android developers building short-form video feeds track Media3 releases like this on daily.dev.

How do I add async authorization for MediaSession controller connections in Media3?

Media3 1.11 adds onConnectAsync() to MediaSession.Callback, letting you process controller connection attempts asynchronously — for example, to verify authorization before accepting. Return a ListenableFuture<MediaSession.ConnectionResult> from the override. For synchronous behavior, return Futures.immediateFuture(ConnectionResult). Apps not overriding onConnect or onConnectAsync now default to a more secure configuration that restricts untrusted controllers from accessing session data. Developers securing MediaSession integrations find breaking changes and security defaults faster on daily.dev.

What is the new Ktor data source module in Media3 and how does it differ from OkHttp?

Media3 1.11 introduces media3-datasource-ktor, providing KtorDataSource backed by the Ktor HTTP stack. It is a Kotlin-first, coroutine-friendly alternative to the existing Cronet and OkHttp data source modules, making it a natural fit for projects already using Ktor for networking. Teams choosing between Media3 network extensions find comparisons and release notes like this on daily.dev.

2.4K Impressions