
In order to expose the live window, it is necessary (unlike before) to refresh the live playlists being played periodically so as to know where the user can seek to. For this, the HlsPlaylistTracker is added, which is basically a map from HlsUrl's to playlist. One of the playlists involved in the playback will be chosen to define the live window. The playlist tracker it periodically. The rest of the playilst will be loaded lazily. N.B: This means that for VOD, playlists are not refreshed at all. There are three important features missing in this CL(that will be added in later CLs): * Blacklisting HlsUrls that point to resources that return 4xx response codes. As per [Internal: b/18948961]. * Allow loaded chunks to feed timestamps back to the tracker, to fix any drifting in live playlists. * Dinamically choose the HlsUrl that points to the playlist that defines the live window. Other features: -------------- The tracker can also be used for keeping track of discontinuities. In the case of single variant playlists, this is particularly useful. Might also work if there is a that the live playlists are aligned (but this is more like working around the issue, than actually solving it). For this, see [Internal: b/32166568] and [Internal: b/28985320]. Issue:#87 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=138054302
ExoPlayer
ExoPlayer is an application level media player for Android. It provides an alternative to Android’s MediaPlayer API for playing audio and video both locally and over the Internet. ExoPlayer supports features not currently supported by Android’s MediaPlayer API, including DASH and SmoothStreaming adaptive playbacks. Unlike the MediaPlayer API, ExoPlayer is easy to customize and extend, and can be updated through Play Store application updates.
Documentation
- The developer guide provides a wealth of information to help you get started.
- The class reference documents the ExoPlayer library classes.
- The release notes document the major changes in each release.
Using ExoPlayer
The easiest way to get started using ExoPlayer is to add it as a gradle
dependency. You need to make sure you have the jcenter repository included in
the build.gradle
file in the root of your project:
repositories {
jcenter()
}
Next, include the following in your module's build.gradle
file:
compile 'com.google.android.exoplayer:exoplayer:rX.X.X'
where rX.X.X
is the your preferred version. For the latest version, see the
project's Releases. For more details, see the project on Bintray.
Developing ExoPlayer
Project branches
- The project has
dev-vX
andrelease-vX
branches, whereX
is the major version number. - Most development work happens on the
dev-vX
branch with the highest major version number. Pull requests should normally be made to this branch. - Bug fixes may be submitted to older
dev-vX
branches. When doing this, the same (or an equivalent) fix should also be submitted to all subsequentdev-vX
branches. - A
release-vX
branch holds the most recent stable release for major versionX
.
Using Android Studio
To develop ExoPlayer using Android Studio, simply open the ExoPlayer project in the root directory of the repository.