以簡單的用途來說,開始使用 ExoPlayer
是由實作
步驟如下:
- 將 ExoPlayer 新增為專案的依附元件。
- 建立
ExoPlayer
執行個體。 - 將播放器附加至檢視區塊 (用於輸出影片和使用者輸入內容)。
- 利用
MediaItem
準備玩家可以進行的遊戲。 - 完成後,請放開播放器。
以下將詳細說明這些步驟。如需完整範例,請參閱
主要試用版應用程式中的 PlayerActivity
。
將 ExoPlayer 新增為依附元件
新增 ExoPlayer 模組
如要開始使用 AndroidX Media3,最簡單的方法是新增 gradle
應用程式 build.gradle
檔案中所需程式庫的依附元件
後續課程我們將逐一介紹
預先訓練的 API、AutoML 和自訂訓練
舉例來說,如要依附具有 DASH 播放支援和 UI 元件的 ExoPlayer 您可以新增依附元件,如下所示:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Groovy
implementation "androidx.media3:media3-exoplayer:1.4.1" implementation "androidx.media3:media3-exoplayer-dash:1.4.1" implementation "androidx.media3:media3-ui:1.4.1"
1.4.1 代表您偏好的版本 (如要查看最新版本,請前往 請參閱版本資訊)。所有模組都必須相同。
AndroidX Media3 的程式庫模組需要使用 來提供額外功能有些是 可用以使用 Maven 存放區,有些必須手動建構 瀏覽程式庫目錄,並查看個別 README 檔案,瞭解詳細資訊。
如要進一步瞭解可用的程式庫模組,請前往 Google Maven AndroidX Media 頁面。
開啟 Java 8 支援功能
如未啟用,您需要在所有 build.gradle
中開啟 Java 8 支援功能
需要有依附於 ExoPlayer 的檔案,請在 android
區段新增以下內容:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
啟用 multidex
如果您的 Gradle minSdkVersion
為 20 以下,則應
啟用 Multidex
以防止建構錯誤
建立播放器
您可以使用提供的 ExoPlayer.Builder
建立 ExoPlayer
例項,
一系列的自訂選項以下程式碼是最簡單的
建立執行個體。
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
執行緒注意事項
ExoPlayer 執行個體必須從單一應用程式執行緒存取。對於 在大多數情況下,這應該是應用程式的主執行緒。使用 使用 ExoPlayer 的 UI 元件時,一定要有應用程式的主執行緒 或是使用 IMA 擴充功能
必須明確存取 ExoPlayer 例項的執行緒可以
方法是在建立播放器時傳遞 Looper
。如果Looper
不是
則建立玩家的執行緒 Looper
會
或者如果該執行緒沒有 Looper
,則Looper
使用應用程式的主執行緒。在所有情況下,執行緒的 Looper
可透過指令列存取播放器
Player.getApplicationLooper
。
如需進一步瞭解 ExoPlayer 的執行緒模型,請參閱 "執行緒模型"ExoPlayer Javadoc 的第 3 部分
將播放器附加至檢視畫面
ExoPlayer 程式庫提供各種預先建構的媒體 UI 元件
播放。其中包括 PlayerView
,其封裝了
PlayerControlView
、SubtitleView
,以及影片位置上的 Surface
轉譯完成的部分。您可以在應用程式的版面配置 XML 中加入 PlayerView
。
舉例來說,如要將播放器繫結至檢視畫面:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
您也可以使用 PlayerControlView
做為獨立元件
或純音訊用途
您可以選擇是否要使用 ExoPlayer 的預先建構 UI 元件。影片應用程式
實作專屬的 UI,目標 SurfaceView
、TextureView
、
可以使用 ExoPlayer 的 SurfaceHolder
或 Surface
進行設定
setVideoSurfaceView
、setVideoTextureView
、setVideoSurfaceHolder
和
setVideoSurface
方法。ExoPlayer 的 addTextOutput
方法可以
,接收應在影片播放期間播放的字幕。
填入播放清單並準備播放器
在 ExoPlayer 中,每個媒體都以 MediaItem
表示。如果想
就是要建構對應的 MediaItem
,然後將其新增至
請準備播放器,並呼叫 play
以開始播放:
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 直接支援播放清單,因此可以準備播放器 加入多個媒體項目來逐一播放:
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();
只要在播放期間更新播放清單, 。進一步瞭解如何在 播放清單頁面:進一步瞭解 建立媒體項目,例如裁剪及附加字幕檔案 媒體項目頁面。
控製播放器
播放器準備就緒後,即可透過呼叫方法控製播放 播放。以下列舉幾個最常用的方法:
play
和pause
可開始及暫停播放。seekTo
可讓使用者在媒體中進行搜尋。hasPrevious
、hasNext
、previous
和next
可讓使用者瀏覽 播放清單setRepeatMode
可控制是否要循環播放媒體,以及循環播放的方式。setShuffleModeEnabled
可控製播放清單隨機播放功能。setPlaybackParameters
會調整播放速度和音調。
如果玩家繫結至 PlayerView
或 PlayerControlView
,
那麼當使用者與這些元件互動時,就會產生
要叫用的播放器
放開播放器
不再需要播放器時,請務必釋出播放器,
讓其他應用程式使用有限的資源 (例如影片解碼器)。這個
呼叫 ExoPlayer.release
即可。