ExoPlayer 2.x is a major iteration of the ExoPlayer (an open source, application level media player built on top of Android’s low level media APIs) library with significant API and architectural improvements.
ExoPlayer 2.x includes significant architectural improvements of ExoPlayer and new features.
Late binding between rendering and media source components. Allows the same rendering components to be re-used from one playback to another. Enables features such as gapless playback through playlists and DASH multi-period support.
Improved track selection design. More details can be found here.
LoadControl now used to control buffering and loading across all playback types.
Media source components given additional structure. A new MediaSource class has been introduced. MediaSources expose Timelines that describe the media they expose, and can consist of multiple MediaPeriods. This enables features such as seeking in live playbacks and DASH multi-period support.
Responsibility for loading the initial DASH/SmoothStreaming/HLS manifest is promoted to the corresponding MediaSource components and is no longer the application's responsibility.
Higher level abstractions such as SimpleExoPlayer have been added to the library. These make the library easier to use for common use cases. The demo app is halved in size as a result, whilst at the same time gaining more functionality. Read more here.
Enhanced library support for implementing audio extensions.
Format and MediaFormat are replaced by a single Format class.
Playlist support. Includes support for gapless playback between playlist items and consistent application of LoadControl and TrackSelector policies when transitioning between items.
Seeking in live playbacks for DASH and SmoothStreaming.
DASH multi-period support.
MediaSource composition allows MediaSources to be concatenated into a playlist, merged and looped.
Looping support.
Ability to query information about all tracks in a piece of media (including those not supported by the device).
Improved player controls.
Support for PSSH in fMP4 moof atoms.
Support for Opus in Ogg.
CacheDataSource support for standalone media file playbacks (mp3, mp4 etc).
FFMPEG extension (for audio only).
In case of building a new media app, recommend building it on ExoPlayer 2.X. For those who are using ExoPlayer 1.X, you can include both 1.X and 2.X in your app (due to a different package name), allowing you to test and migrate your users with minimal impact.