
Why: This was a bad initial choice. Manifests typically define bandwidth in bits/sec. If you divide by 8 then you're throwing away information due to rounding. Unfortunately it turns out that SegmentTemplate based manifests require you to be able to recall the bitrate exactly (because it's substituted in during segment URL construction). Medium term: We should consider converting all our bandwidth estimation over to bits/sec as well. Note1: Also changed Period id to be a string, to match the mpd spec. Note2: Made small optimization in FormatEvaluator to not consider discarding the first chunk (durationBeforeThisSegmentUs will always be negative, and even in the error case where it's not, removing the first thunk should be an error).
ExoPlayer Readme
Description
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 (as of KitKat), including DASH and SmoothStreaming adaptive playbacks, persistent caching and custom renderers. Unlike the MediaPlayer API, ExoPlayer is easy to customize and extend, and can be updated through Play Store application updates.
Developer guide
The ExoPlayer developer guide provides a wealth of information to help you get started.
Reference documentation
Class reference (Documents the ExoPlayer library classes).
Using Eclipse
The repository includes Eclipse projects for both the ExoPlayer library and its accompanying demo application. To get started:
-
Install Eclipse and setup the Android SDK.
-
Open Eclipse and navigate to File->Import->General->Existing Projects into Workspace.
-
Select the root directory of the repository.
-
Import the ExoPlayerDemo and ExoPlayerLib projects.
Using Gradle
ExoPlayer can also be built using Gradle. For a complete list of tasks, run:
./gradlew tasks