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:
tonihei 2023-03-13 16:34:00 +00:00
parent 01f04aac7f
commit 8a9c51a8a2
37 changed files with 214 additions and 248 deletions

View File

@ -2,120 +2,18 @@ name: Bug Report
description: Report a bug in the ExoPlayer library description: Report a bug in the ExoPlayer library
labels: ["bug", "needs triage"] labels: ["bug", "needs triage"]
body: body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
We can only process bug reports that are actionable. Unclear bug reports or reports with **Please do not file new issues in this repository.**
insufficient information may not get attention.
Please only file a bug here if you're using classes in the `com.google.android.exoplayer2` All new bugs should be filed in the
package. If you're using classes in the `androidx.media3` package (including [Media3 issue tracker](https://github.com/androidx/media/issues/new?template=bug.yml).
`com.google.android.exoplayer2`), please file a bug on the AndroidX Media GitHub issue tracker
instead: https://github.com/androidx/media/issues/new/choose
Before filing a bug: We will continue to update and reply to existing issues in this repository
------------------------- and will keep existing feature requests active.
- type: textarea
- Search existing issues, including issues that are closed attributes:
- On this tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue label: Bug
- On the AndroidX Media tracker: https://github.com/androidx/media/issues?q=is%3Aissue validations:
- Consult our developer website: https://exoplayer.dev/ required: true
- 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.

View File

@ -6,33 +6,10 @@ labels: enhancement, needs triage
assignees: '' assignees: ''
--- ---
Please only file a feature request here if you're using classes in the **Please do not file new issues in this repository.**
`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
## 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 We will continue to update and reply to existing issues in this repository and
- On this tracker: https://github.com/google/ExoPlayer/labels/enhancement will keep existing feature requests active.
- 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.

View File

@ -6,46 +6,10 @@ labels: question, needs triage
assignees: '' assignees: ''
--- ---
Unfortunately we can't answer all questions. Unclear questions or questions with **Please do not file new issues in this repository.**
insufficient information may not get attention.
Please only file a question here if you're using classes in the All new questions should be filed in the
`com.google.android.exoplayer2` package. If you're using classes in the [Media3 issue tracker](https://github.com/androidx/media/issues/new?template=question.md).
`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
Before filing a question: We will continue to update and reply to existing issues in this repository and
------------------------- will keep existing feature requests active.
- 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).

View File

@ -2,40 +2,7 @@
## Reporting issues ## ## Reporting issues ##
We use the [GitHub issue tracker](https://github.com/google/ExoPlayer/issues) The ExoPlayer project is now developed as part of the
to track bugs, feature requests and questions. [AndroidX Media](https://github.com/androidx/media/blob/release/CONTRIBUTING.md)
project. Please use that project to file bugs, feature requests, questions and
Before filing a new issue, please search the tracker to check if it's already pull requests.
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

View File

@ -1,27 +1,35 @@
# ExoPlayer <img src="https://img.shields.io/github/v/release/google/ExoPlayer.svg?label=latest"/> # 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 ExoPlayer is an application level media player for Android. The latest version
alternative to Androids MediaPlayer API for playing audio and video both is published as part of [AndroidX Media][] under a new package name and all
locally and over the Internet. ExoPlayer supports features not currently future development will be in that project.
supported by Androids MediaPlayer API, including DASH and SmoothStreaming
adaptive playbacks. Unlike the MediaPlayer API, ExoPlayer is easy to customize Please refer to our [migration guide and script][] to move your codebase to the
and extend, and can be updated through Play Store application updates. 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 ## Documentation
* The [developer guide][] provides a wealth of information. * The [developer guide][] provides a wealth of information.
* The [class reference][] documents ExoPlayer classes. * The [class reference][] documents ExoPlayer classes. Note that the classes
* The [release notes][] document the major changes in each release. are documented with their Media3 package names.
* Follow our [developer blog][] to keep up to date with the latest ExoPlayer * The [release notes][] document the major changes in each release.
developments! * Follow our [developer blog][] to keep up to date with the latest ExoPlayer
developments!
[developer guide]: https://exoplayer.dev/guide.html [developer guide]: https://developer.android.com/guide/topics/media/exoplayer
[class reference]: https://exoplayer.dev/doc/reference [class reference]: https://developer.android.com/reference/androidx/media3/common/package-summary
[release notes]: https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md [release notes]: https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
[developer blog]: https://medium.com/google-exoplayer [developer blog]: https://medium.com/google-exoplayer
## Using 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 ExoPlayer modules can be obtained from [the Google Maven repository][]. It's
also possible to clone the repository and depend on the modules locally. 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-dash')
implementation project(':exoplayer-library-ui') 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.

View File

@ -2,6 +2,10 @@
title: Ad insertion 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. ExoPlayer can be used for both client-side and server-side ad insertion.
## Client-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 implementations can listen for timed metadata events from the player via
`Player.Listener.onMetadata`. `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 [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/ [VMAP]: https://www.iab.com/guidelines/digital-video-multiple-ad-playlist-vmap-1-0-1/
[ExoPlayer UI components]: {{ site.baseurl }}/ui-components.html [ExoPlayer UI components]: {{ site.baseurl }}/ui-components.html

View File

@ -2,6 +2,10 @@
title: Analytics 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, ExoPlayer supports a wide range of playback analytics needs. Ultimately,
analytics is about collecting, interpreting, aggregating and summarizing data analytics is about collecting, interpreting, aggregating and summarizing data
from playbacks. This data can be used either on the device, for example for from playbacks. This data can be used either on the device, for example for
@ -260,5 +264,6 @@ player.addAnalyticsListener(new ExtendedListener() {
~~~ ~~~
{: .language-java} {: .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 [`PlaybackStats` Javadoc]: {{ site.exo_sdk }}/analytics/PlaybackStats.html
[aggregate the analytics data]: {{ site.baseurl }}/analytics.html#aggregate-analytics-data-of-multiple-playbacks [aggregate the analytics data]: {{ site.baseurl }}/analytics.html#aggregate-analytics-data-of-multiple-playbacks

View File

@ -2,6 +2,10 @@
title: Battery consumption 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? ## ## How important is battery consumption due to media playback? ##
Avoiding unnecessary battery consumption is an important aspect of developing a 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 something an app developer must decide, taking their requirements and app usage
patterns into account. 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 [Monsoon power monitor]: https://www.msoon.com/battery-configuration

View File

@ -2,6 +2,10 @@
title: Customization 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` 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 exposes traditional high-level media player functionality such as the ability to
buffer media, play, pause and seek. The default implementation `ExoPlayer` is 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 ensures that they are executed in order with any other operations being
performed on the player. 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 [customizing the network stack used by ExoPlayer]: {{ site.baseurl }}/network-stacks.html
[LoadErrorHandlingPolicy]: {{ site.exo_sdk }}/upstream/LoadErrorHandlingPolicy.html [LoadErrorHandlingPolicy]: {{ site.exo_sdk }}/upstream/LoadErrorHandlingPolicy.html
[media source based playlist API]: {{ site.baseurl }}/media-sources.html#media-source-based-playlist-api [media source based playlist API]: {{ site.baseurl }}/media-sources.html#media-source-based-playlist-api

View File

@ -2,6 +2,10 @@
title: DASH 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 %} {% include_relative _page_fragments/supported-formats-dash.md %}
## Using MediaItem ## ## Using MediaItem ##
@ -83,4 +87,5 @@ player.addListener(
ExoPlayer provides multiple ways for you to tailor playback experience to your ExoPlayer provides multiple ways for you to tailor playback experience to your
app's needs. See the [Customization page][] for examples. 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 [Customization page]: {{ site.baseurl }}/customization.html

View File

@ -2,6 +2,10 @@
title: Debug logging 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` 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 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 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] 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 [logcat tab]: https://developer.android.com/studio/debug/am-logcat

View File

@ -2,6 +2,10 @@
title: Demo application 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: ExoPlayer's main demo app serves two primary purposes:
1. To provide a relatively simple yet fully featured example of ExoPlayer usage. 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} {: .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 [IMA extension]: {{ site.release_v2 }}/extensions/ima
[GitHub project]: https://github.com/google/ExoPlayer [GitHub project]: https://github.com/google/ExoPlayer
[Supported devices]: {{ site.baseurl }}/supported-devices.html [Supported devices]: {{ site.baseurl }}/supported-devices.html

View File

@ -2,6 +2,10 @@
title: Downloading media 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 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 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 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. a track that was not downloaded. Ensure you've set the stream keys correctly.
{:.info} {:.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 [JobScheduler]: {{ site.android_sdk }}/android/app/job/JobScheduler
[PlatformScheduler]: {{ site.exo_sdk }}/scheduler/PlatformScheduler.html [PlatformScheduler]: {{ site.exo_sdk }}/scheduler/PlatformScheduler.html
[WorkManager]: https://developer.android.com/topic/libraries/architecture/workmanager/ [WorkManager]: https://developer.android.com/topic/libraries/architecture/workmanager/

View File

@ -2,6 +2,10 @@
title: Digital rights management 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. ExoPlayer uses Android's [`MediaDrm`][] API to support DRM protected playbacks.
The minimum Android versions required for different supported DRM schemes, along The minimum Android versions required for different supported DRM schemes, along
with the streaming formats for which they're supported, are: 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 playing DRM protected content, you can try [enabling asynchronous buffer
queueing]. queueing].
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/drm
[main demo app]: {{ site.release_v2 }}/demos/main [main demo app]: {{ site.release_v2 }}/demos/main
[`MediaDrm`]: {{ site.android_sdk }}/android/media/MediaDrm.html [`MediaDrm`]: {{ site.android_sdk }}/android/media/MediaDrm.html
[used when building the player]: {{ site.baseurl }}/media-sources.html#customizing-media-source-creation [used when building the player]: {{ site.baseurl }}/media-sources.html#customizing-media-source-creation

View File

@ -2,6 +2,12 @@
title: Glossary 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 ## ## General - Media ##
###### ABR ###### ABR

View File

@ -6,6 +6,10 @@ redirect_from:
- /getting-started.html - /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 Another way to get started is to work through
[the ExoPlayer codelab](https://codelabs.developers.google.com/codelabs/exoplayer-intro/). [the ExoPlayer codelab](https://codelabs.developers.google.com/codelabs/exoplayer-intro/).
{:.info} {:.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 up limited resources such as video decoders for use by other applications. This
can be done by calling `ExoPlayer.release`. 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/ [main demo app]: {{ site.release_v2 }}/demos/main/
[extensions directory]: {{ site.release_v2 }}/extensions/ [extensions directory]: {{ site.release_v2 }}/extensions/
[release notes]: {{ site.release_v2 }}/RELEASENOTES.md [release notes]: {{ site.release_v2 }}/RELEASENOTES.md

View File

@ -2,6 +2,10 @@
title: HLS 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 %} {% include_relative _page_fragments/supported-formats-hls.md %}
## Using MediaItem ## ## Using MediaItem ##
@ -128,6 +132,7 @@ The following guidelines apply specifically for live streams:
* Use the `#EXT-X-DISCONTINUITY-SEQUENCE` tag. * Use the `#EXT-X-DISCONTINUITY-SEQUENCE` tag.
* Provide a long live window. One minute or more is great. * 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 [HlsMediaSource]: {{ site.exo_sdk }}/source/hls/HlsMediaSource.html
[HTTP Live Streaming]: https://tools.ietf.org/html/rfc8216 [HTTP Live Streaming]: https://tools.ietf.org/html/rfc8216
[Customization page]: {{ site.baseurl }}/customization.html [Customization page]: {{ site.baseurl }}/customization.html

View File

@ -2,6 +2,10 @@
layout: article 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 ExoPlayer is an application level media player for Android. It provides an
alternative to Androids MediaPlayer API for playing audio and video both alternative to Androids MediaPlayer API for playing audio and video both
locally and over the Internet. ExoPlayer supports features not currently 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: addition, you can:
* Learn how to add ExoPlayer to your app by [completing the codelab][] or * 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 news, hints and tips on our [developer blog][].
* Read the latest [release notes][]. * Read the latest [release notes][].
* Browse the library [Javadoc][]. * Browse the library [Javadoc][].
* Browse the source code for the [latest release][] and current [tip of tree][]. * 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/ [completing the codelab]: https://codelabs.developers.google.com/codelabs/exoplayer-intro/
[Hello world]: {{ site.baseurl }}/hello-world.html [Hello world]: {{ site.baseurl }}/hello-world.html
[developer blog]: https://medium.com/google-exoplayer [developer blog]: https://medium.com/google-exoplayer

View File

@ -2,6 +2,10 @@
title: Player events 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 ## ## Listening to playback events ##
Events such as changes in state and playback errors are reported to registered Events such as changes in state and playback errors are reported to registered
@ -224,6 +228,7 @@ player
~~~ ~~~
{: .language-java } {: .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 [`Player.Listener`]: {{ site.exo_sdk }}/Player.Listener.html
[Javadoc]: {{ site.exo_sdk }}/Player.Listener.html [Javadoc]: {{ site.exo_sdk }}/Player.Listener.html
[`Individual callbacks vs onEvents`]: #individual-callbacks-vs-onevents [`Individual callbacks vs onEvents`]: #individual-callbacks-vs-onevents

View File

@ -2,6 +2,10 @@
title: Live streaming 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 ExoPlayer plays most adaptive live streams out-of-the-box without any special
configuration. See the [Supported Formats page][] for more details. configuration. See the [Supported Formats page][] for more details.
@ -207,6 +211,7 @@ public void onPlayerError(PlaybackException error) {
~~~ ~~~
{: .language-java} {: .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 [Supported Formats page]: {{ site.baseurl }}/supported-formats.html
[default UI components]: {{ site.baseurl }}/ui-components.html [default UI components]: {{ site.baseurl }}/ui-components.html
[pending feature request (#2213)]: https://github.com/google/ExoPlayer/issues/2213 [pending feature request (#2213)]: https://github.com/google/ExoPlayer/issues/2213

View File

@ -2,6 +2,10 @@
title: Media items 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 The [playlist API][] is based on `MediaItem`s, which can be conveniently built
using `MediaItem.Builder`. Inside the player, media items are converted into using `MediaItem.Builder`. Inside the player, media items are converted into
playable `MediaSource`s by a `MediaSource.Factory`. Without 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`." %} {% 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 [playlist API]: {{ site.baseurl }}/playlists.html
[`MediaItem.Builder` Javadoc]: {{ site.exo_sdk }}/MediaItem.Builder.html [`MediaItem.Builder` Javadoc]: {{ site.exo_sdk }}/MediaItem.Builder.html

View File

@ -4,6 +4,10 @@ redirect_from:
- /mediasource.html - /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 In ExoPlayer every piece of media is represented by a `MediaItem`. However
internally, the player needs `MediaSource` instances to play the content. The internally, the player needs `MediaSource` instances to play the content. The
player creates these from media items using a `MediaSource.Factory`. player creates these from media items using a `MediaSource.Factory`.
@ -75,6 +79,7 @@ exoPlayer.play();
~~~ ~~~
{: .language-java} {: .language-java}
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/media-sources
[DASH]: {{ site.baseurl }}/dash.html [DASH]: {{ site.baseurl }}/dash.html
[SmoothStreaming]: {{ site.baseurl }}/smoothstreaming.html [SmoothStreaming]: {{ site.baseurl }}/smoothstreaming.html
[HLS]: {{ site.baseurl }}/hls.html [HLS]: {{ site.baseurl }}/hls.html

View File

@ -2,6 +2,10 @@
title: Network stacks 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 ExoPlayer is commonly used for streaming media over the internet. It supports
multiple network stacks for making its underlying network requests. Your choice multiple network stacks for making its underlying network requests. Your choice
of network stack can have a significant impact on streaming performance. 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 recommendations above for media streaming in isolation, the requirements of any
other components that perform networking, and their relative importance to your other components that perform networking, and their relative importance to your
application. application.
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/network-stacks

View File

@ -2,6 +2,10 @@
title: OEM testing 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 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 important to ensure that ExoPlayer works correctly both on new devices, and on
new platform builds for existing devices. This page describes compatibility 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 `MediaCodec`, `MediaDrm`, `AudioTrack` etc). Inspect the call stacks of the
threads in the test process to establish whether this is the case. 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 [GitHub]: https://github.com/google/ExoPlayer

View File

@ -2,6 +2,10 @@
title: Playlists 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 The playlist API is defined by the `Player` interface, which is implemented by
all `ExoPlayer` implementations. It enables sequential playback of multiple all `ExoPlayer` implementations. It enables sequential playback of multiple
media items. The following example shows how to start playback of a playlist 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 becoming available after preparing an adaptive media item.
* A manifest being updated periodically during playback of a live stream. * 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

View File

@ -2,6 +2,10 @@
title: Progressive 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 %} {% include_relative _page_fragments/supported-formats-progressive.md %}
## Using MediaItem ## ## Using MediaItem ##
@ -44,4 +48,5 @@ player.prepare();
ExoPlayer provides multiple ways for you to tailor playback experience to your ExoPlayer provides multiple ways for you to tailor playback experience to your
app's needs. See the [Customization page][] for examples. 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 [Customization page]: {{ site.baseurl }}/customization.html

View File

@ -2,6 +2,10 @@
title: Pros and cons 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: ExoPlayer has a number of advantages over Android's built in MediaPlayer:
* Fewer device specific issues and less variation in behavior across different * 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 This is likely only a concern for extremely lightweight apps. Guidance for
shrinking ExoPlayer can be found on the [APK shrinking page][]. 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 [Supported formats page]: {{ site.baseurl }}/supported-formats.html
[IMA extension]: {{ site.release_v2 }}/extensions/ima [IMA extension]: {{ site.release_v2 }}/extensions/ima
[Interactive Media Ads SDK]: https://developers.google.com/interactive-media-ads [Interactive Media Ads SDK]: https://developers.google.com/interactive-media-ads

View File

@ -2,6 +2,10 @@
title: Retrieving metadata 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 ## ## During playback ##
The metadata of the media can be retrieved during playback in multiple ways. The 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} {: .language-java}
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/retrieving-metadata
[`MediaMetadata`]: {{ site.exo_sdk }}/MediaMetadata.html [`MediaMetadata`]: {{ site.exo_sdk }}/MediaMetadata.html
[`Metadata.Entry`]: {{ site.exo_sdk }}/metadata/Metadata.Entry.html [`Metadata.Entry`]: {{ site.exo_sdk }}/metadata/Metadata.Entry.html
[`MetadataRetriever`]: {{ site.exo_sdk }}/MetadataRetriever.html [`MetadataRetriever`]: {{ site.exo_sdk }}/MetadataRetriever.html

View File

@ -2,6 +2,10 @@
title: RTSP 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 %} {% include_relative _page_fragments/supported-formats-rtsp.md %}
## Using MediaItem ## ## Using MediaItem ##
@ -96,3 +100,4 @@ MediaSource mediaSource =
~~~ ~~~
{: .language-java} {: .language-java}
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/rtsp

View File

@ -2,6 +2,10 @@
title: APK shrinking 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 Minimizing APK size is an important aspect of developing a good Android
application. This is particularly true when targeting developing markets, and application. This is particularly true when targeting developing markets, and
also when developing an Android Instant App. For such cases it may be desirable also when developing an Android Instant App. For such cases it may be desirable
@ -131,4 +135,5 @@ ProgressiveMediaSource mediaSource =
~~~ ~~~
{: .language-java} {: .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 [Shrink, obfuscate, and optimize your app]: https://developer.android.com/studio/build/shrink-code

View File

@ -2,6 +2,10 @@
title: SmoothStreaming 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 %} {% include_relative _page_fragments/supported-formats-smoothstreaming.md %}
## Using MediaItem ## ## Using MediaItem ##
@ -85,4 +89,5 @@ player.addListener(
ExoPlayer provides multiple ways for you to tailor playback experience to your ExoPlayer provides multiple ways for you to tailor playback experience to your
app's needs. See the [Customization page][] for examples. 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 [Customization page]: {{ site.baseurl }}/customization.html

View File

@ -2,6 +2,10 @@
title: Supported devices 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: The minimum Android versions required for core ExoPlayer use cases are:
| Use case | Android version number | Android API level | | 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. reported to the developer of the emulator rather than to the ExoPlayer team.
Where possible, we recommend testing media applications on physical devices Where possible, we recommend testing media applications on physical devices
rather than emulators. rather than emulators.
[documentation for the latest ExoPlayer release]: https://developer.android.com/guide/topics/media/exoplayer/supported-devices

View File

@ -2,6 +2,10 @@
title: Supported formats 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 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 "media formats" are defined at multiple levels. From the lowest level to the
highest, these are: 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 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 in selecting a software decoder in cases where the stream exceeds the
capabilities of a hardware decoder for the same MIME type. 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

View File

@ -2,6 +2,10 @@
title: Track selection 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 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 determines which of them are chosen for playback. The track selection process is
configured by [`TrackSelectionParameters`][], which allows many different 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 selected tracks supports it. This can be done by using
`DefaultTrackSelector.ParametersBuilder.setTunnelingEnabled(true)`. `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 [`TrackSelectionParameters`]: {{ site.exo_sdk }}/trackselection/TrackSelectionParameters.html

View File

@ -2,6 +2,10 @@
title: Transforming media 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 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 media stream, applies changes to it as configured by the app, and produces the
corresponding output file. The available transformations are: 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. 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 [Transformer API]: {{ site.exo_sdk }}/transformer/Transformer.html
[Supported formats page]: {{ site.baseurl }}/supported-formats.html [Supported formats page]: {{ site.baseurl }}/supported-formats.html

View File

@ -5,6 +5,10 @@ redirect_from:
- /debugging-playback-issues.html - /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 "Cleartext HTTP traffic not permitted" errors][]
* [Fixing "SSLHandshakeException", "CertPathValidatorException" and "ERR_CERT_AUTHORITY_INVALID" errors][] * [Fixing "SSLHandshakeException", "CertPathValidatorException" and "ERR_CERT_AUTHORITY_INVALID" errors][]
* [Why are some media files not seekable?][] * [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 [Can I play YouTube videos directly with ExoPlayer?]: #can-i-play-youtube-videos-directly-with-exoplayer
[Video playback is stuttering]: #video-playback-is-stuttering [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 [Supported formats]: {{ site.baseurl }}/supported-formats.html
[set on a `DefaultExtractorsFactory`]: {{ site.base_url }}/customization.html#customizing-extractor-flags [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) [`setMp3ExtractorFlags`]: {{ site.exo_sdk }}/extractor/DefaultExtractorsFactory#setMp3ExtractorFlags(@com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.Flagsint)

View File

@ -2,6 +2,10 @@
title: UI components 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 An app playing media requires user interface components for displaying media and
controlling playback. The ExoPlayer library includes a UI module that contains 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 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 developers will implement their own UI components rather than use those provided
by ExoPlayer's UI module. 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 [`StyledPlayerView`]: {{ site.exo_sdk }}/ui/StyledPlayerView.html
[`StyledPlayerControlView`]: {{ site.exo_sdk }}/ui/StyledPlayerControlView.html [`StyledPlayerControlView`]: {{ site.exo_sdk }}/ui/StyledPlayerControlView.html
[resource IDs being marked 'private']: https://developer.android.com/studio/projects/android-library#PrivateResources [resource IDs being marked 'private']: https://developer.android.com/studio/projects/android-library#PrivateResources