diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index ae75cecd01..5219fda6e0 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -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 #\' 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 #\'. - - **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 diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 129b79c06b..e5335b09bc 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -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. diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index d5c4869aa1..3f31584a89 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -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. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b685679cef..cca79e7295 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. diff --git a/README.md b/README.md index e96ddf9db1..9369192122 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,35 @@ # ExoPlayer -ExoPlayer is an application level media player for Android. It provides an -alternative to Android’s MediaPlayer API for playing audio and video both -locally and over the Internet. ExoPlayer supports features not currently -supported by Android’s MediaPlayer API, including DASH and SmoothStreaming -adaptive playbacks. Unlike the MediaPlayer API, ExoPlayer is easy to customize -and extend, and can be updated through Play Store application updates. +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. diff --git a/docs/ad-insertion.md b/docs/ad-insertion.md index 649ee36ddb..9ccdba968d 100644 --- a/docs/ad-insertion.md +++ b/docs/ad-insertion.md @@ -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 diff --git a/docs/analytics.md b/docs/analytics.md index f2bf7a9a8f..9622aee23b 100644 --- a/docs/analytics.md +++ b/docs/analytics.md @@ -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 diff --git a/docs/battery-consumption.md b/docs/battery-consumption.md index c7879e5724..5295040d5a 100644 --- a/docs/battery-consumption.md +++ b/docs/battery-consumption.md @@ -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 diff --git a/docs/customization.md b/docs/customization.md index 1c41162be3..e28111e510 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -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 diff --git a/docs/dash.md b/docs/dash.md index 88cc667913..6f0e5a9d70 100644 --- a/docs/dash.md +++ b/docs/dash.md @@ -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 diff --git a/docs/debug-logging.md b/docs/debug-logging.md index b93f03b9ff..4154920d63 100644 --- a/docs/debug-logging.md +++ b/docs/debug-logging.md @@ -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 diff --git a/docs/demo-application.md b/docs/demo-application.md index e9a50c34d4..1a4a5ca8b7 100644 --- a/docs/demo-application.md +++ b/docs/demo-application.md @@ -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 diff --git a/docs/downloading-media.md b/docs/downloading-media.md index 70c3e3d308..84501442c9 100644 --- a/docs/downloading-media.md +++ b/docs/downloading-media.md @@ -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/ diff --git a/docs/drm.md b/docs/drm.md index 4a5bf7e5af..f60f3299dc 100644 --- a/docs/drm.md +++ b/docs/drm.md @@ -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 diff --git a/docs/glossary.md b/docs/glossary.md index 1c7857a764..52491483f3 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -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 diff --git a/docs/hello-world.md b/docs/hello-world.md index 933df920cc..8a6bfed655 100644 --- a/docs/hello-world.md +++ b/docs/hello-world.md @@ -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 diff --git a/docs/hls.md b/docs/hls.md index 522c12170b..be0c8d04ac 100644 --- a/docs/hls.md +++ b/docs/hls.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 diff --git a/docs/index.md b/docs/index.md index b28743192f..ebdac8a04d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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 diff --git a/docs/listening-to-player-events.md b/docs/listening-to-player-events.md index 4b1215ba36..dc861f9fdd 100644 --- a/docs/listening-to-player-events.md +++ b/docs/listening-to-player-events.md @@ -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 diff --git a/docs/live-streaming.md b/docs/live-streaming.md index d0b2005ff8..4f62219d32 100644 --- a/docs/live-streaming.md +++ b/docs/live-streaming.md @@ -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 diff --git a/docs/media-items.md b/docs/media-items.md index 2361f19a27..c4d701101e 100644 --- a/docs/media-items.md +++ b/docs/media-items.md @@ -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 diff --git a/docs/media-sources.md b/docs/media-sources.md index f7bf97b83a..c8dabe7fd7 100644 --- a/docs/media-sources.md +++ b/docs/media-sources.md @@ -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 diff --git a/docs/network-stacks.md b/docs/network-stacks.md index 763c879722..a3a7867cc2 100644 --- a/docs/network-stacks.md +++ b/docs/network-stacks.md @@ -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 diff --git a/docs/oems.md b/docs/oems.md index 0e875f11ca..ddc091b90b 100644 --- a/docs/oems.md +++ b/docs/oems.md @@ -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 diff --git a/docs/playlists.md b/docs/playlists.md index d897e14e26..924110e632 100644 --- a/docs/playlists.md +++ b/docs/playlists.md @@ -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 diff --git a/docs/progressive.md b/docs/progressive.md index 26a8002f39..fa6f51e98b 100644 --- a/docs/progressive.md +++ b/docs/progressive.md @@ -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 diff --git a/docs/pros-and-cons.md b/docs/pros-and-cons.md index 9e4f70525c..4fd3467031 100644 --- a/docs/pros-and-cons.md +++ b/docs/pros-and-cons.md @@ -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 diff --git a/docs/retrieving-metadata.md b/docs/retrieving-metadata.md index 30d18f3fed..1e22243294 100644 --- a/docs/retrieving-metadata.md +++ b/docs/retrieving-metadata.md @@ -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 diff --git a/docs/rtsp.md b/docs/rtsp.md index fea28f34a0..d6f510401f 100644 --- a/docs/rtsp.md +++ b/docs/rtsp.md @@ -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 diff --git a/docs/shrinking.md b/docs/shrinking.md index 655a4cdcd7..7855459a5f 100644 --- a/docs/shrinking.md +++ b/docs/shrinking.md @@ -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 diff --git a/docs/smoothstreaming.md b/docs/smoothstreaming.md index 94b3dce089..84845aa772 100644 --- a/docs/smoothstreaming.md +++ b/docs/smoothstreaming.md @@ -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 diff --git a/docs/supported-devices.md b/docs/supported-devices.md index 43630efeab..5248c0226e 100644 --- a/docs/supported-devices.md +++ b/docs/supported-devices.md @@ -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 diff --git a/docs/supported-formats.md b/docs/supported-formats.md index 70b24416a8..84f1de7fb2 100644 --- a/docs/supported-formats.md +++ b/docs/supported-formats.md @@ -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 diff --git a/docs/track-selection.md b/docs/track-selection.md index 6dd4d43f65..3434a749e3 100644 --- a/docs/track-selection.md +++ b/docs/track-selection.md @@ -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 diff --git a/docs/transforming-media.md b/docs/transforming-media.md index fbe710cb40..08b898268e 100644 --- a/docs/transforming-media.md +++ b/docs/transforming-media.md @@ -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 diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 5ced4e270d..1537604951 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -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) diff --git a/docs/ui-components.md b/docs/ui-components.md index 4b934fcbcd..92cb236789 100644 --- a/docs/ui-components.md +++ b/docs/ui-components.md @@ -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