Per casi d'uso semplici, per iniziare a utilizzare ExoPlayer
è necessario implementare
segui questi passaggi:
- Aggiungi ExoPlayer come dipendenza al progetto.
- Crea un'istanza
ExoPlayer
. - Collega il player a una visualizzazione (per l'output video e l'input dell'utente).
- Prepara il giocatore con un
MediaItem
per poter giocare. - Al termine, rilascia il player.
Questi passaggi sono descritti più dettagliatamente di seguito. Per un esempio completo, consulta
PlayerActivity
nell'app demo principale.
Aggiungi ExoPlayer come dipendenza
Aggiungi moduli ExoPlayer
Il modo più semplice per iniziare a utilizzare AndroidX Media3 è aggiungere Gradle
alle librerie necessarie nel file build.gradle
della tua app
in maggior dettaglio più avanti
in questo modulo.
Ad esempio, per dipendere da ExoPlayer con supporto per la riproduzione DASH e componenti UI puoi aggiungere dipendenze nei moduli in questo modo:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.0") implementation("androidx.media3:media3-exoplayer-dash:1.4.0") implementation("androidx.media3:media3-ui:1.4.0")
Alla moda
implementation "androidx.media3:media3-exoplayer:1.4.0" implementation "androidx.media3:media3-exoplayer-dash:1.4.0" implementation "androidx.media3:media3-ui:1.4.0"
dove 1.4.0 è la tua versione preferita (la versione più recente può essere trovata consulta le note di rilascio). Tutti i moduli devono essere della stessa versione.
AndroidX Media3 ha moduli libreria che dipendono librerie esterne per fornire funzionalità aggiuntive. Alcuni sono disponibili nel Repository Maven, mentre altri devono essere creati manualmente. Sfoglia la directory delle librerie e visualizza i singoli file README per i dettagli.
Per ulteriori informazioni sui moduli della biblioteca disponibili, visita la Pagina Google Maven AndroidX Media.
Attiva il supporto Java 8
Se non è già abilitato, devi attivare il supporto Java 8 in tutti i build.gradle
file che dipendono da ExoPlayer, aggiungendo quanto segue alla sezione android
:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Abilita multidex
Se il valore di Gradle minSdkVersion
è 20 o inferiore, devi
attiva multidex in ordine
per evitare errori di build.
Crea il player
Puoi creare un'istanza ExoPlayer
utilizzando ExoPlayer.Builder
, che fornisce
una serie di opzioni di personalizzazione. Il seguente codice è l'esempio più semplice
la creazione di un'istanza.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
Nota sui thread
È necessario accedere alle istanze ExoPlayer da un singolo thread di applicazione. Per nella maggior parte dei casi, dovrebbe essere il thread principale dell'applicazione. L'utilizzo del il thread principale dell'applicazione è un requisito quando si utilizzano i componenti UI di ExoPlayer o l'estensione IMA.
Il thread su cui è necessario accedere a un'istanza ExoPlayer può essere
specificato passando un valore Looper
durante la creazione del player. Se Looper
non è
specificato, il valore Looper
del thread su cui è stato creato il player
o, se il thread non ha un Looper
, il Looper
del
il thread principale dell'applicazione. In tutti i casi, il Looper
del thread da
a cui è necessario accedere al player.
Player.getApplicationLooper
.
Per ulteriori informazioni sul modello di thread di ExoPlayer, vedi "Modello di thread" del Javadoc ExoPlayer.
Collegare il player a una visualizzazione
La libreria ExoPlayer fornisce una serie di componenti UI predefiniti per i contenuti multimediali
per riprodurre un video. Questi includono PlayerView
, che incapsula una
PlayerControlView
, SubtitleView
e Surface
su cui viene visualizzato il video
eseguire il rendering. È possibile includere un elemento PlayerView
nel file XML di layout dell'applicazione.
Ad esempio, per associare il player alla vista:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
Puoi anche utilizzare PlayerControlView
come componente autonomo, ovvero
utile per i casi d'uso solo audio.
L'uso dei componenti predefiniti dell'interfaccia utente di ExoPlayer è facoltativo. Per le app video
che implementano la propria UI, ovvero SurfaceView
, TextureView
,
È possibile impostare SurfaceHolder
o Surface
utilizzando l'interfaccia utente di ExoPlayer
setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
e
setVideoSurface
rispettivamente. Il metodo addTextOutput
di ExoPlayer può
per ricevere sottotitoli codificati da eseguire durante la riproduzione.
Compilare la playlist e preparare il player.
In ExoPlayer, ogni elemento multimediale è rappresentato da un elemento MediaItem
. Per riprodurre un
devi creare un oggetto MediaItem
corrispondente, aggiungerlo al
prepara il player e chiama play
per avviare la riproduzione:
Kotlin
// Build the media item. val mediaItem = MediaItem.fromUri(videoUri) // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media item. MediaItem mediaItem = MediaItem.fromUri(videoUri); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ExoPlayer supporta direttamente le playlist, quindi è possibile preparare il player con più elementi multimediali da riprodurre uno dopo l'altro:
Kotlin
// Build the media items. val firstItem = MediaItem.fromUri(firstVideoUri) val secondItem = MediaItem.fromUri(secondVideoUri) // Add the media items to be played. player.addMediaItem(firstItem) player.addMediaItem(secondItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media items. MediaItem firstItem = MediaItem.fromUri(firstVideoUri); MediaItem secondItem = MediaItem.fromUri(secondVideoUri); // Add the media items to be played. player.addMediaItem(firstItem); player.addMediaItem(secondItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
La playlist può essere aggiornata durante la riproduzione senza dover preparare il di nuovo. Scopri di più su come compilare e gestire la playlist nel Pagina Playlist. Scopri di più sulle diverse opzioni disponibili quando creando elementi multimediali, come tagliare e allegare file di sottotitoli, sulla Pagina Elementi multimediali.
Controllare il player
Una volta preparato il player, la riproduzione può essere controllata chiamando metodi sul player. Ecco alcuni dei metodi più comuni:
play
epause
avviano e mettono in pausa la riproduzione.seekTo
consente la ricerca all'interno dei contenuti multimediali.hasPrevious
,hasNext
,previous
enext
consentono la navigazione tramite playlist.setRepeatMode
consente di stabilire se e come i contenuti multimediali vengono riprodotti in loop.setShuffleModeEnabled
controlla la riproduzione casuale delle playlist.setPlaybackParameters
regola la velocità di riproduzione e il tono dell'audio.
Se il giocatore è vincolato a un PlayerView
o PlayerControlView
,
l'interazione dell'utente con questi componenti determina i metodi corrispondenti su
il player da richiamare.
Rilascia il player
È importante rilasciare il player quando non è più necessario, in modo da liberare
risorse limitate, come i decoder video, per l'uso da parte di altre applicazioni. Questo
può essere fatto chiamando ExoPlayer.release
.