
MaskingMediaSource needs to resolve the prepare position set for a MaskingPeriod while the source was still unprepared to the first actual prepare position. It currently assumes that the period-window offset and the default position is zero. This assumption is correct when a PlaceholderTimeline is used, but it may not be true if the real timeline is already known (e.g. when re-preparing a live stream after a playback error). Fix this by using the known timeline at the time of the preparation. Also: - Update a test that should have caught this to use lazy re-preparation. - Change the demo app code to use the recommended way to restart playback after a BehindLiveWindowException. Issue: #8675 PiperOrigin-RevId: 361604191
ExoPlayer demos
This directory contains applications that demonstrate how to use ExoPlayer. Browse the individual demos and their READMEs to learn more.
Running a demo
From Android Studio
- File -> New -> Import Project -> Specify the root ExoPlayer folder.
- Choose the demo from the run configuration dropdown list.
- Click Run.
Using gradle from the command line:
- Open a Terminal window at the root ExoPlayer folder.
- Run
./gradlew projects
to show all projects. Demo projects start withdemo
. - Run
./gradlew :<demo name>:tasks
to view the list of available tasks for the demo project. Choose an install option from theInstall tasks
section. - Run
./gradlew :<demo name>:<install task>
.
Example:
./gradlew :demo:installNoExtensionsDebug
installs the main ExoPlayer demo app
in debug mode with no extensions.