Update docs and READMEs for media3 stable release
- The ExoPlayer docs will link to the media3 ones (for now, we can permanently redirect once no further stand-alone ExoPlayer release is published). - Contibuting issues and PRs should only happen on the media3 repo. - The media3 README is updated to remove any pre-release status information. PiperOrigin-RevId: 516234594
This commit is contained in:
parent
01f04aac7f
commit
8a9c51a8a2
128
.github/ISSUE_TEMPLATE/bug.yml
vendored
128
.github/ISSUE_TEMPLATE/bug.yml
vendored
@ -2,120 +2,18 @@ name: Bug Report
|
||||
description: Report a bug in the ExoPlayer library
|
||||
labels: ["bug", "needs triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
We can only process bug reports that are actionable. Unclear bug reports or reports with
|
||||
insufficient information may not get attention.
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
**Please do not file new issues in this repository.**
|
||||
|
||||
Please only file a bug here if you're using classes in the `com.google.android.exoplayer2`
|
||||
package. If you're using classes in the `androidx.media3` package (including
|
||||
`com.google.android.exoplayer2`), please file a bug on the AndroidX Media GitHub issue tracker
|
||||
instead: https://github.com/androidx/media/issues/new/choose
|
||||
All new bugs should be filed in the
|
||||
[Media3 issue tracker](https://github.com/androidx/media/issues/new?template=bug.yml).
|
||||
|
||||
Before filing a bug:
|
||||
-------------------------
|
||||
|
||||
- Search existing issues, including issues that are closed
|
||||
- On this tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||
- On the AndroidX Media tracker: https://github.com/androidx/media/issues?q=is%3Aissue
|
||||
- Consult our developer website: https://exoplayer.dev/
|
||||
- Check the supported formats: https://exoplayer.dev/supported-formats.html
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: ExoPlayer Version
|
||||
description: What version of ExoPlayer are you using?
|
||||
options:
|
||||
- 2.18.4
|
||||
- 2.18.3
|
||||
- 2.18.2
|
||||
- 2.18.1
|
||||
- 2.18.0
|
||||
- 2.17.1
|
||||
- 2.17.0
|
||||
- 2.16.1
|
||||
- 2.16.0
|
||||
- 2.15.1
|
||||
- 2.15.0
|
||||
- 2.14.2
|
||||
- 2.14.1
|
||||
- 2.14.0
|
||||
- 2.13.3
|
||||
- Older (unsupported)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Devices that reproduce the issue
|
||||
placeholder: |
|
||||
Example:
|
||||
* Pixel 4 running Android 12
|
||||
* Samsung S21 running Android 11
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Devices that do not reproduce the issue
|
||||
placeholder: |
|
||||
Example:
|
||||
* Pixel 3 running Android Pie
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Reproducible in the demo app?
|
||||
description: Please try and reproduce the issue in the [ExoPlayer demo app](https://exoplayer.dev/demo-application.html).
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
- Not tested
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Reproduction steps
|
||||
description: Clear and complete steps we can use to reproduce the problem
|
||||
placeholder: |
|
||||
Example:
|
||||
1. Play the attached media in the demo app
|
||||
2. Seek forward 10s
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected result
|
||||
placeholder: |
|
||||
Example:
|
||||
The media plays successfully
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual result
|
||||
placeholder: |
|
||||
Example:
|
||||
Playback crashes with the following stack trace:
|
||||
...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Media
|
||||
description: |
|
||||
Media we can use to reproduce the problem. Either:
|
||||
* Attach a file here
|
||||
* Include a media URL
|
||||
* Refer to a piece of media from the demo app (e.g. `Misc > Dizzy (MP4)`)
|
||||
* If you don't want to post media publicly please email the info to dev.exoplayer@gmail.com with subject 'Issue #\<issuenumber\>' after filing this issue, and note that you will do this here.
|
||||
* If you are certain the issue does not depend on the media being played, enter "Not applicable" here.
|
||||
|
||||
For DRM-protected media please also include the scheme and license server URL.
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Bug Report
|
||||
description: |
|
||||
After filing this issue please run `adb bugreport` shortly after reproducing the problem (ideally in the [demo app](https://exoplayer.dev/demo-application.html)) to capture a zip file, and email this to dev.exoplayer@gmail.com with subject 'Issue #\<issuenumber\>'.
|
||||
|
||||
**Note:** Logcat output is **not** the same as a full bug report, and is often missing information that's useful for diagnosing issues. Please ensure you're sending a full bug report zip file.
|
||||
options:
|
||||
- label: You will email the zip file produced by `adb bugreport` to dev.exoplayer@gmail.com after filing this issue.
|
||||
We will continue to update and reply to existing issues in this repository
|
||||
and will keep existing feature requests active.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug
|
||||
validations:
|
||||
required: true
|
||||
|
33
.github/ISSUE_TEMPLATE/feature_request.md
vendored
33
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -6,33 +6,10 @@ labels: enhancement, needs triage
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
Please only file a feature request here if you're using classes in the
|
||||
`com.google.android.exoplayer2` package. If you're using classes in the
|
||||
`androidx.media3` package (including `com.google.android.exoplayer2`), please file a
|
||||
feature request on the AndroidX Media tracker instead:
|
||||
https://github.com/androidx/media/issues/new/choose
|
||||
**Please do not file new issues in this repository.**
|
||||
|
||||
## Before filing a feature request:
|
||||
All new feature requests should be filed in the
|
||||
[Media3 issue tracker](https://github.com/androidx/media/issues/new?template=feature_request.md).
|
||||
|
||||
- Search existing open issues, specifically with the label ‘enhancement’
|
||||
- On this tracker: https://github.com/google/ExoPlayer/labels/enhancement
|
||||
- On the AndroidX Media tracker:
|
||||
https://github.com/androidx/media/labels/enhancement
|
||||
- Search existing pull requests
|
||||
- On this tracker: https://github.com/google/ExoPlayer/pulls
|
||||
- On the AndroidX Media tracker: https://github.com/androidx/media/pulls
|
||||
|
||||
When filing a feature request:
|
||||
-----------------------
|
||||
Replace the content in the sections below.
|
||||
|
||||
### [REQUIRED] Use case description
|
||||
Describe the use case or problem you are trying to solve in detail. If there are
|
||||
any standards or specifications involved, please provide the relevant details.
|
||||
|
||||
### Proposed solution
|
||||
A clear and concise description of your proposed solution, if you have one.
|
||||
|
||||
### Alternatives considered
|
||||
A clear and concise description of any alternative solutions you considered,
|
||||
if applicable.
|
||||
We will continue to update and reply to existing issues in this repository and
|
||||
will keep existing feature requests active.
|
||||
|
46
.github/ISSUE_TEMPLATE/question.md
vendored
46
.github/ISSUE_TEMPLATE/question.md
vendored
@ -6,46 +6,10 @@ labels: question, needs triage
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
Unfortunately we can't answer all questions. Unclear questions or questions with
|
||||
insufficient information may not get attention.
|
||||
**Please do not file new issues in this repository.**
|
||||
|
||||
Please only file a question here if you're using classes in the
|
||||
`com.google.android.exoplayer2` package. If you're using classes in the
|
||||
`androidx.media3` package (including `com.google.android.exoplayer2`), please file a
|
||||
question on the AndroidX Media tracker instead:
|
||||
https://github.com/androidx/media/issues/new/choose
|
||||
All new questions should be filed in the
|
||||
[Media3 issue tracker](https://github.com/androidx/media/issues/new?template=question.md).
|
||||
|
||||
Before filing a question:
|
||||
-------------------------
|
||||
|
||||
- Ask general Android development questions on Stack Overflow
|
||||
- Search existing issues, including issues that are closed
|
||||
- On this tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||
- On the AndroidX Media tracker:
|
||||
https://github.com/androidx/media/issues?q=is%3Aissue
|
||||
- Consult our developer website (https://exoplayer.dev/) and Javadoc
|
||||
(https://exoplayer.dev/doc/reference/)
|
||||
|
||||
When filing a question:
|
||||
-------------------------
|
||||
|
||||
Describe your question in detail.
|
||||
|
||||
In case your question refers to a problem you are seeing in your app:
|
||||
|
||||
- Output of running `$ adb bugreport` in the console
|
||||
|
||||
In case your question is related to a piece of media:
|
||||
|
||||
- URI to test content
|
||||
- For protected content:
|
||||
- DRM scheme and license server URL
|
||||
- Authentication HTTP headers
|
||||
|
||||
Don't forget to check supported formats and devices
|
||||
(https://exoplayer.dev/supported-formats.html).
|
||||
|
||||
If there's something you don't want to post publicly, please submit the issue,
|
||||
then email the link/bug report to dev.exoplayer@gmail.com using a subject in the
|
||||
format "Issue #1234", where #1234 is your issue number (we don't reply to
|
||||
emails).
|
||||
We will continue to update and reply to existing issues in this repository and
|
||||
will keep existing feature requests active.
|
||||
|
@ -2,40 +2,7 @@
|
||||
|
||||
## Reporting issues ##
|
||||
|
||||
We use the [GitHub issue tracker](https://github.com/google/ExoPlayer/issues)
|
||||
to track bugs, feature requests and questions.
|
||||
|
||||
Before filing a new issue, please search the tracker to check if it's already
|
||||
covered by an existing report. Avoiding duplicates helps us maximize the time we
|
||||
can spend fixing bugs and adding new features.
|
||||
|
||||
When filing an issue, be sure to provide enough information for us to
|
||||
efficiently diagnose and reproduce the problem. In particular, please include
|
||||
all of the information requested in the issue template.
|
||||
|
||||
## Pull requests ##
|
||||
|
||||
We will also consider high quality pull requests. These should merge
|
||||
into the `dev-v2` branch. Before a pull request can be accepted you must submit
|
||||
a Contributor License Agreement, as described below.
|
||||
|
||||
## Contributor license agreement ##
|
||||
|
||||
Contributions to any Google project must be accompanied by a Contributor
|
||||
License Agreement. This is not a copyright **assignment**, it simply gives
|
||||
Google permission to use and redistribute your contributions as part of the
|
||||
project.
|
||||
|
||||
* If you are an individual writing original source code and you're sure you
|
||||
own the intellectual property, then you'll need to sign an [individual
|
||||
CLA][].
|
||||
|
||||
* If you work for a company that wants to allow you to contribute your work,
|
||||
then you'll need to sign a [corporate CLA][].
|
||||
|
||||
You generally only need to submit a CLA once, so if you've already submitted
|
||||
one (even if it was for a different project), you probably don't need to do it
|
||||
again.
|
||||
|
||||
[individual CLA]: https://developers.google.com/open-source/cla/individual
|
||||
[corporate CLA]: https://developers.google.com/open-source/cla/corporate
|
||||
The ExoPlayer project is now developed as part of the
|
||||
[AndroidX Media](https://github.com/androidx/media/blob/release/CONTRIBUTING.md)
|
||||
project. Please use that project to file bugs, feature requests, questions and
|
||||
pull requests.
|
||||
|
47
README.md
47
README.md
@ -1,27 +1,35 @@
|
||||
# ExoPlayer <img src="https://img.shields.io/github/v/release/google/ExoPlayer.svg?label=latest"/>
|
||||
|
||||
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.
|
||||
ExoPlayer is an application level media player for Android. The latest version
|
||||
is published as part of [AndroidX Media][] under a new package name and all
|
||||
future development will be in that project.
|
||||
|
||||
Please refer to our [migration guide and script][] to move your codebase to the
|
||||
Media3 package names.
|
||||
|
||||
[AndroidX Media]: https://github.com/androidx/media
|
||||
[migration guide and script]: https://developer.android.com/guide/topics/media/media3/getting-started/migration-guide
|
||||
|
||||
## Documentation
|
||||
|
||||
* The [developer guide][] provides a wealth of information.
|
||||
* The [class reference][] documents ExoPlayer classes.
|
||||
* The [release notes][] document the major changes in each release.
|
||||
* Follow our [developer blog][] to keep up to date with the latest ExoPlayer
|
||||
developments!
|
||||
* The [developer guide][] provides a wealth of information.
|
||||
* The [class reference][] documents ExoPlayer classes. Note that the classes
|
||||
are documented with their Media3 package names.
|
||||
* The [release notes][] document the major changes in each release.
|
||||
* Follow our [developer blog][] to keep up to date with the latest ExoPlayer
|
||||
developments!
|
||||
|
||||
[developer guide]: https://exoplayer.dev/guide.html
|
||||
[class reference]: https://exoplayer.dev/doc/reference
|
||||
[developer guide]: https://developer.android.com/guide/topics/media/exoplayer
|
||||
[class reference]: https://developer.android.com/reference/androidx/media3/common/package-summary
|
||||
[release notes]: https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
|
||||
[developer blog]: https://medium.com/google-exoplayer
|
||||
|
||||
## Using ExoPlayer
|
||||
|
||||
Please refer to
|
||||
[AndroidX Media](https://github.com/androidx/media/blob/release/README.md) for
|
||||
the usage instructions of the latest release.
|
||||
|
||||
ExoPlayer modules can be obtained from [the Google Maven repository][]. It's
|
||||
also possible to clone the repository and depend on the modules locally.
|
||||
|
||||
@ -125,16 +133,3 @@ implementation project(':exoplayer-library-core')
|
||||
implementation project(':exoplayer-library-dash')
|
||||
implementation project(':exoplayer-library-ui')
|
||||
```
|
||||
|
||||
## Developing ExoPlayer
|
||||
|
||||
#### Project branches
|
||||
|
||||
* Development work happens on the `dev-v2` branch. Pull requests should
|
||||
normally be made to this branch.
|
||||
* The `release-v2` branch holds the most recent release.
|
||||
|
||||
#### Using Android Studio
|
||||
|
||||
To develop ExoPlayer using Android Studio, simply open the ExoPlayer project in
|
||||
the root directory of the repository.
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Ad insertion
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer can be used for both client-side and server-side ad insertion.
|
||||
|
||||
## Client-side ad insertion ##
|
||||
@ -314,6 +318,7 @@ timed metadata formats are supported by ExoPlayer. Custom ads SDK `MediaSource`
|
||||
implementations can listen for timed metadata events from the player via
|
||||
`Player.Listener.onMetadata`.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/ad-insertion
|
||||
[VAST]: https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf
|
||||
[VMAP]: https://www.iab.com/guidelines/digital-video-multiple-ad-playlist-vmap-1-0-1/
|
||||
[ExoPlayer UI components]: {{ site.baseurl }}/ui-components.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Analytics
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer supports a wide range of playback analytics needs. Ultimately,
|
||||
analytics is about collecting, interpreting, aggregating and summarizing data
|
||||
from playbacks. This data can be used either on the device, for example for
|
||||
@ -260,5 +264,6 @@ player.addAnalyticsListener(new ExtendedListener() {
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/analytics
|
||||
[`PlaybackStats` Javadoc]: {{ site.exo_sdk }}/analytics/PlaybackStats.html
|
||||
[aggregate the analytics data]: {{ site.baseurl }}/analytics.html#aggregate-analytics-data-of-multiple-playbacks
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Battery consumption
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
## How important is battery consumption due to media playback? ##
|
||||
|
||||
Avoiding unnecessary battery consumption is an important aspect of developing a
|
||||
@ -73,4 +77,5 @@ the increased power consumption for audio only use cases on older devices is
|
||||
something an app developer must decide, taking their requirements and app usage
|
||||
patterns into account.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/battery-consumption
|
||||
[Monsoon power monitor]: https://www.msoon.com/battery-configuration
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Customization
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
At the core of the ExoPlayer library is the `Player` interface. A `Player`
|
||||
exposes traditional high-level media player functionality such as the ability to
|
||||
buffer media, play, pause and seek. The default implementation `ExoPlayer` is
|
||||
@ -304,6 +308,7 @@ When building custom components, we recommend the following:
|
||||
ensures that they are executed in order with any other operations being
|
||||
performed on the player.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/customization
|
||||
[customizing the network stack used by ExoPlayer]: {{ site.baseurl }}/network-stacks.html
|
||||
[LoadErrorHandlingPolicy]: {{ site.exo_sdk }}/upstream/LoadErrorHandlingPolicy.html
|
||||
[media source based playlist API]: {{ site.baseurl }}/media-sources.html#media-source-based-playlist-api
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: DASH
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
{% include_relative _page_fragments/supported-formats-dash.md %}
|
||||
|
||||
## Using MediaItem ##
|
||||
@ -83,4 +87,5 @@ player.addListener(
|
||||
ExoPlayer provides multiple ways for you to tailor playback experience to your
|
||||
app's needs. See the [Customization page][] for examples.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/dash
|
||||
[Customization page]: {{ site.baseurl }}/customization.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Debug logging
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
By default ExoPlayer only logs errors. To log player events, the `EventLogger`
|
||||
class can be used. The additional logging it provides can be helpful for
|
||||
understanding what the player is doing, as well as for debugging playback
|
||||
@ -116,4 +120,5 @@ EventLogger: videoDecoderInitialized [0.77, 0.00, window=0, period=0, video, OMX
|
||||
EventLogger: audioDecoderInitialized [0.79, 0.00, window=0, period=0, audio, OMX.google.aac.decoder]
|
||||
```
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/debug-logging
|
||||
[logcat tab]: https://developer.android.com/studio/debug/am-logcat
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Demo application
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer's main demo app serves two primary purposes:
|
||||
|
||||
1. To provide a relatively simple yet fully featured example of ExoPlayer usage.
|
||||
@ -254,6 +258,7 @@ adb shell am start -a com.google.android.exoplayer.demo.action.VIEW_LIST \
|
||||
~~~
|
||||
{: .language-shell}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/demo-application
|
||||
[IMA extension]: {{ site.release_v2 }}/extensions/ima
|
||||
[GitHub project]: https://github.com/google/ExoPlayer
|
||||
[Supported devices]: {{ site.baseurl }}/supported-devices.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Downloading media
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer provides functionality to download media for offline playback. In most
|
||||
use cases it's desirable for downloads to continue even when your app is in the
|
||||
background. For these use cases your app should subclass `DownloadService`, and
|
||||
@ -397,6 +401,7 @@ adaptive content, the most likely cause is that the player is trying to adapt to
|
||||
a track that was not downloaded. Ensure you've set the stream keys correctly.
|
||||
{:.info}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/downloading-media
|
||||
[JobScheduler]: {{ site.android_sdk }}/android/app/job/JobScheduler
|
||||
[PlatformScheduler]: {{ site.exo_sdk }}/scheduler/PlatformScheduler.html
|
||||
[WorkManager]: https://developer.android.com/topic/libraries/architecture/workmanager/
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Digital rights management
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer uses Android's [`MediaDrm`][] API to support DRM protected playbacks.
|
||||
The minimum Android versions required for different supported DRM schemes, along
|
||||
with the streaming formats for which they're supported, are:
|
||||
@ -105,6 +109,7 @@ If you're experiencing video stuttering on a device running Android 6 to 11 when
|
||||
playing DRM protected content, you can try [enabling asynchronous buffer
|
||||
queueing].
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/drm
|
||||
[main demo app]: {{ site.release_v2 }}/demos/main
|
||||
[`MediaDrm`]: {{ site.android_sdk }}/android/media/MediaDrm.html
|
||||
[used when building the player]: {{ site.baseurl }}/media-sources.html#customizing-media-source-creation
|
||||
|
@ -2,6 +2,12 @@
|
||||
title: Glossary
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/glossary
|
||||
|
||||
## General - Media ##
|
||||
|
||||
###### ABR
|
||||
|
@ -6,6 +6,10 @@ redirect_from:
|
||||
- /getting-started.html
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
Another way to get started is to work through
|
||||
[the ExoPlayer codelab](https://codelabs.developers.google.com/codelabs/exoplayer-intro/).
|
||||
{:.info}
|
||||
@ -209,6 +213,7 @@ It's important to release the player when it's no longer needed, so as to free
|
||||
up limited resources such as video decoders for use by other applications. This
|
||||
can be done by calling `ExoPlayer.release`.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/hello-world
|
||||
[main demo app]: {{ site.release_v2 }}/demos/main/
|
||||
[extensions directory]: {{ site.release_v2 }}/extensions/
|
||||
[release notes]: {{ site.release_v2 }}/RELEASENOTES.md
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: HLS
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
{% include_relative _page_fragments/supported-formats-hls.md %}
|
||||
|
||||
## Using MediaItem ##
|
||||
@ -128,6 +132,7 @@ The following guidelines apply specifically for live streams:
|
||||
* Use the `#EXT-X-DISCONTINUITY-SEQUENCE` tag.
|
||||
* Provide a long live window. One minute or more is great.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/hls
|
||||
[HlsMediaSource]: {{ site.exo_sdk }}/source/hls/HlsMediaSource.html
|
||||
[HTTP Live Streaming]: https://tools.ietf.org/html/rfc8216
|
||||
[Customization page]: {{ site.baseurl }}/customization.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
layout: article
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
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
|
||||
@ -13,12 +17,13 @@ This website provides a wealth of information to help you get started. In
|
||||
addition, you can:
|
||||
|
||||
* Learn how to add ExoPlayer to your app by [completing the codelab][] or
|
||||
reading the [Hello world][] documentation.
|
||||
reading the [Hello world][] documentation.
|
||||
* Read news, hints and tips on our [developer blog][].
|
||||
* Read the latest [release notes][].
|
||||
* Browse the library [Javadoc][].
|
||||
* Browse the source code for the [latest release][] and current [tip of tree][].
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer
|
||||
[completing the codelab]: https://codelabs.developers.google.com/codelabs/exoplayer-intro/
|
||||
[Hello world]: {{ site.baseurl }}/hello-world.html
|
||||
[developer blog]: https://medium.com/google-exoplayer
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Player events
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
## Listening to playback events ##
|
||||
|
||||
Events such as changes in state and playback errors are reported to registered
|
||||
@ -224,6 +228,7 @@ player
|
||||
~~~
|
||||
{: .language-java }
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/listening-to-player-events
|
||||
[`Player.Listener`]: {{ site.exo_sdk }}/Player.Listener.html
|
||||
[Javadoc]: {{ site.exo_sdk }}/Player.Listener.html
|
||||
[`Individual callbacks vs onEvents`]: #individual-callbacks-vs-onevents
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Live streaming
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer plays most adaptive live streams out-of-the-box without any special
|
||||
configuration. See the [Supported Formats page][] for more details.
|
||||
|
||||
@ -207,6 +211,7 @@ public void onPlayerError(PlaybackException error) {
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/live-streaming
|
||||
[Supported Formats page]: {{ site.baseurl }}/supported-formats.html
|
||||
[default UI components]: {{ site.baseurl }}/ui-components.html
|
||||
[pending feature request (#2213)]: https://github.com/google/ExoPlayer/issues/2213
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Media items
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
The [playlist API][] is based on `MediaItem`s, which can be conveniently built
|
||||
using `MediaItem.Builder`. Inside the player, media items are converted into
|
||||
playable `MediaSource`s by a `MediaSource.Factory`. Without
|
||||
@ -155,5 +159,6 @@ the player also needs to have its `DefaultMediaSourceFactory`
|
||||
|
||||
{% include media3-known-issue-box.html issue-id="185" description="Subtitles, clipping and ad insertion are only supported if you use `DefaultMediaSourceFactory`." %}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/media-items
|
||||
[playlist API]: {{ site.baseurl }}/playlists.html
|
||||
[`MediaItem.Builder` Javadoc]: {{ site.exo_sdk }}/MediaItem.Builder.html
|
||||
|
@ -4,6 +4,10 @@ redirect_from:
|
||||
- /mediasource.html
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
In ExoPlayer every piece of media is represented by a `MediaItem`. However
|
||||
internally, the player needs `MediaSource` instances to play the content. The
|
||||
player creates these from media items using a `MediaSource.Factory`.
|
||||
@ -75,6 +79,7 @@ exoPlayer.play();
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/media-sources
|
||||
[DASH]: {{ site.baseurl }}/dash.html
|
||||
[SmoothStreaming]: {{ site.baseurl }}/smoothstreaming.html
|
||||
[HLS]: {{ site.baseurl }}/hls.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Network stacks
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer is commonly used for streaming media over the internet. It supports
|
||||
multiple network stacks for making its underlying network requests. Your choice
|
||||
of network stack can have a significant impact on streaming performance.
|
||||
@ -176,3 +180,5 @@ to media playback, your choice of network stack should ultimately factor in our
|
||||
recommendations above for media streaming in isolation, the requirements of any
|
||||
other components that perform networking, and their relative importance to your
|
||||
application.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/network-stacks
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: OEM testing
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer is used by a large number of Android applications. As an OEM, it's
|
||||
important to ensure that ExoPlayer works correctly both on new devices, and on
|
||||
new platform builds for existing devices. This page describes compatibility
|
||||
@ -102,4 +106,5 @@ that the test is getting stuck calling into a platform component (e.g.
|
||||
`MediaCodec`, `MediaDrm`, `AudioTrack` etc). Inspect the call stacks of the
|
||||
threads in the test process to establish whether this is the case.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/oems
|
||||
[GitHub]: https://github.com/google/ExoPlayer
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Playlists
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
The playlist API is defined by the `Player` interface, which is implemented by
|
||||
all `ExoPlayer` implementations. It enables sequential playback of multiple
|
||||
media items. The following example shows how to start playback of a playlist
|
||||
@ -205,3 +209,5 @@ timeline update include:
|
||||
|
||||
* A manifest becoming available after preparing an adaptive media item.
|
||||
* A manifest being updated periodically during playback of a live stream.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/playlists
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Progressive
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
{% include_relative _page_fragments/supported-formats-progressive.md %}
|
||||
|
||||
## Using MediaItem ##
|
||||
@ -44,4 +48,5 @@ player.prepare();
|
||||
ExoPlayer provides multiple ways for you to tailor playback experience to your
|
||||
app's needs. See the [Customization page][] for examples.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/progressive
|
||||
[Customization page]: {{ site.baseurl }}/customization.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Pros and cons
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
ExoPlayer has a number of advantages over Android's built in MediaPlayer:
|
||||
|
||||
* Fewer device specific issues and less variation in behavior across different
|
||||
@ -34,6 +38,7 @@ It's important to note that there are also some disadvantages:
|
||||
This is likely only a concern for extremely lightweight apps. Guidance for
|
||||
shrinking ExoPlayer can be found on the [APK shrinking page][].
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/pros-and-cons
|
||||
[Supported formats page]: {{ site.baseurl }}/supported-formats.html
|
||||
[IMA extension]: {{ site.release_v2 }}/extensions/ima
|
||||
[Interactive Media Ads SDK]: https://developers.google.com/interactive-media-ads
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Retrieving metadata
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
## During playback ##
|
||||
|
||||
The metadata of the media can be retrieved during playback in multiple ways. The
|
||||
@ -84,6 +88,7 @@ for (int i = 0; i < trackGroups.length; i++) {
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/retrieving-metadata
|
||||
[`MediaMetadata`]: {{ site.exo_sdk }}/MediaMetadata.html
|
||||
[`Metadata.Entry`]: {{ site.exo_sdk }}/metadata/Metadata.Entry.html
|
||||
[`MetadataRetriever`]: {{ site.exo_sdk }}/MetadataRetriever.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: RTSP
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
{% include_relative _page_fragments/supported-formats-rtsp.md %}
|
||||
|
||||
## Using MediaItem ##
|
||||
@ -96,3 +100,4 @@ MediaSource mediaSource =
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/rtsp
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: APK shrinking
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
Minimizing APK size is an important aspect of developing a good Android
|
||||
application. This is particularly true when targeting developing markets, and
|
||||
also when developing an Android Instant App. For such cases it may be desirable
|
||||
@ -131,4 +135,5 @@ ProgressiveMediaSource mediaSource =
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/shrinking
|
||||
[Shrink, obfuscate, and optimize your app]: https://developer.android.com/studio/build/shrink-code
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: SmoothStreaming
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
{% include_relative _page_fragments/supported-formats-smoothstreaming.md %}
|
||||
|
||||
## Using MediaItem ##
|
||||
@ -85,4 +89,5 @@ player.addListener(
|
||||
ExoPlayer provides multiple ways for you to tailor playback experience to your
|
||||
app's needs. See the [Customization page][] for examples.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/smoothstreaming
|
||||
[Customization page]: {{ site.baseurl }}/customization.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Supported devices
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
The minimum Android versions required for core ExoPlayer use cases are:
|
||||
|
||||
| Use case | Android version number | Android API level |
|
||||
@ -49,3 +53,5 @@ be found
|
||||
reported to the developer of the emulator rather than to the ExoPlayer team.
|
||||
Where possible, we recommend testing media applications on physical devices
|
||||
rather than emulators.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/supported-devices
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Supported formats
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
When defining the formats that ExoPlayer supports, it's important to note that
|
||||
"media formats" are defined at multiple levels. From the lowest level to the
|
||||
highest, these are:
|
||||
@ -119,3 +123,5 @@ profile (if available), even if another decoder for the same MIME type that
|
||||
doesn't support that profile appears higher up the codec list. This can result
|
||||
in selecting a software decoder in cases where the stream exceeds the
|
||||
capabilities of a hardware decoder for the same MIME type.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/supported-formats
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Track selection
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
When a media item contains multiple tracks, track selection is the process that
|
||||
determines which of them are chosen for playback. The track selection process is
|
||||
configured by [`TrackSelectionParameters`][], which allows many different
|
||||
@ -211,4 +215,5 @@ Tunneled playback can be enabled in cases where the combination of renderers and
|
||||
selected tracks supports it. This can be done by using
|
||||
`DefaultTrackSelector.ParametersBuilder.setTunnelingEnabled(true)`.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/track-selection
|
||||
[`TrackSelectionParameters`]: {{ site.exo_sdk }}/trackselection/TrackSelectionParameters.html
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: Transforming media
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
The [Transformer API][] can be used to convert media streams. It takes an input
|
||||
media stream, applies changes to it as configured by the app, and produces the
|
||||
corresponding output file. The available transformations are:
|
||||
@ -133,6 +137,7 @@ flattened version of the video instead of the original one.
|
||||
|
||||
Currently, Samsung's slow motion format is the only one supported.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/transforming-media
|
||||
[Transformer API]: {{ site.exo_sdk }}/transformer/Transformer.html
|
||||
[Supported formats page]: {{ site.baseurl }}/supported-formats.html
|
||||
|
||||
|
@ -5,6 +5,10 @@ redirect_from:
|
||||
- /debugging-playback-issues.html
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
* [Fixing "Cleartext HTTP traffic not permitted" errors][]
|
||||
* [Fixing "SSLHandshakeException", "CertPathValidatorException" and "ERR_CERT_AUTHORITY_INVALID" errors][]
|
||||
* [Why are some media files not seekable?][]
|
||||
@ -374,6 +378,7 @@ particularly when playing DRM protected or high frame rate content, you can try
|
||||
[Can I play YouTube videos directly with ExoPlayer?]: #can-i-play-youtube-videos-directly-with-exoplayer
|
||||
[Video playback is stuttering]: #video-playback-is-stuttering
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/troubleshooting
|
||||
[Supported formats]: {{ site.baseurl }}/supported-formats.html
|
||||
[set on a `DefaultExtractorsFactory`]: {{ site.base_url }}/customization.html#customizing-extractor-flags
|
||||
[`setMp3ExtractorFlags`]: {{ site.exo_sdk }}/extractor/DefaultExtractorsFactory#setMp3ExtractorFlags(@com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.Flagsint)
|
||||
|
@ -2,6 +2,10 @@
|
||||
title: UI components
|
||||
---
|
||||
|
||||
This documentation may be out-of-date. Please refer to the
|
||||
[documentation for the latest ExoPlayer release][] on developer.android.com.
|
||||
{:.info}
|
||||
|
||||
An app playing media requires user interface components for displaying media and
|
||||
controlling playback. The ExoPlayer library includes a UI module that contains
|
||||
a number of UI components. To depend on the UI module add a dependency as shown
|
||||
@ -137,6 +141,7 @@ Where customization beyond that described above is required, we expect that app
|
||||
developers will implement their own UI components rather than use those provided
|
||||
by ExoPlayer's UI module.
|
||||
|
||||
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/ui-components
|
||||
[`StyledPlayerView`]: {{ site.exo_sdk }}/ui/StyledPlayerView.html
|
||||
[`StyledPlayerControlView`]: {{ site.exo_sdk }}/ui/StyledPlayerControlView.html
|
||||
[resource IDs being marked 'private']: https://developer.android.com/studio/projects/android-library#PrivateResources
|
||||
|
Loading…
x
Reference in New Issue
Block a user