ExoPlayer 2.10 — What’s new

Olly Woodman
AndroidX Media3
Published in
2 min readMay 6, 2019

ExoPlayer 2.10 contains many new features, improvements and bug fixes. This post highlights some of the most significant changes. Take a look at the full release notes for a more comprehensive list, and our new and improved developer site for more information about using ExoPlayer.

Better support for downloading media

Support for downloading media has been revamped in ExoPlayer 2.10. Some of the major improvements are:

  • DownloadManager now tracks all downloaded content, rather than just the downloads that are currently in progress. This removes the need for apps to do their own tracking of downloaded content.
  • A new DownloadHelper class makes it easier to select which tracks should be downloaded for adaptive (i.e. DASH, HLS and SmoothStreaming) content. DownloadHelper uses DefaultTrackSelector to select suitable tracks automatically based on device capabilities and parameters provided by the application. It also provides methods for adding and replacing tracks in the selection.
  • DownloadManager and DownloadService now support starting and stopping individual downloads.
  • Downloading and removing content is significantly faster, due to improvements to ExoPlayer’s caching layer.

For more information about downloading media, please see the new page on our developer site.

Improved decoder reuse

ExoPlayer uses audio and video decoders provided by the underlying Android platform. Instantiating these decoders can be expensive, and doing so accounts for a significant fraction of total playback startup latency. In ExoPlayer 2.10, we’ve improved the way decoders are reused. By reusing decoder instances in more cases, these improvements can reduce the time required to switch from playing one piece of media to another. Read our blog post on improved decoder reuse for more details.

Support for new formats

ExoPlayer 2.10 adds support for some new media formats, on devices that include the required platform decoders. We’ve added support for Dolby Vision video (profiles 4, 5, 8 and 9) and Dolby AC-4 audio in DASH and progressive fMP4/MP4 containers. On Android Q you can also use ExoPlayer to play AV1 video streams using the platform’s new AV1 software decoder.

Shoutcast ICY metadata

We’ve added support for ICY metadata in ExoPlayer 2.10. As with ID3 metadata, ICY metadata in the HTTP response headers is included in the track’s Format.metadata, while in-stream metadata can be received by calling Player.addMetadataOutput() to register a MetadataOutput on the player.

And much more

ExoPlayer 2.10 contains many improvements beyond the ones highlighted above, including:

  • Parsing of DASH Role and Accessibility descriptors into a new Format.roleFlags field. HLS EXT-X-MEDIA CHARACTERISTICS attributes are also parsed into this field.
  • Improvements to DefaultTrackSelector, including new options for controlling audio track selections and better selection logic for forced text tracks.
  • Multiple UI improvements, such as avoiding big jumps in the DefaultTimeBar scrubber by updating its position more frequently for shorter duration content.

See the full release notes for a more comprehensive list.

As always, please feel free to get in touch via our issue tracker if you have any questions or encounter problems. Thanks for reading!

--

--