Jetpack Media3 簡介

Jetpack Media3 是媒體程式庫的新家,可讓 Android 應用程式提供豐富的音訊和視覺體驗。Media3 提供簡單的架構,可根據裝置功能提供強大的自訂、可靠性和最佳化功能,以便抽象化分散式架構帶來的複雜性。

本文件將介紹主要 API,說明如何使用 Media3 實作播放和編輯用途。

播放元件

Media3 提供多個用於播放用途的重要元件。如果您曾使用過先前的 Android 媒體程式庫,就會熟悉這些元件的組成類別。

下圖說明這些元件如何在一般應用程式中整合。

使用 Media3 的媒體應用程式,其不同元件會透過幾種簡單的方式連結在一起,因為它們共用介面和類別。
圖 1:媒體應用程式元件

媒體播放器

媒體播放器是應用程式可用來播放媒體檔案的元件。在 Media3 中,您會看到:

Class 說明 實作注意事項
Player Player 是介面,可為媒體播放器定義傳統的高階功能,例如播放、暫停和快轉功能。 在 Media3 中,Player 介面是常見的 API,可由多個元件實作或使用,例如 MediaSessionMediaController
ExoPlayer ExoPlayer 是 Media3 中 Player 介面的預設實作項目。

進一步瞭解 Media3 ExoPlayer

媒體工作階段

媒體工作階段提供與媒體播放器互動的通用方式。這可讓應用程式向外部來源宣傳媒體播放功能,並接收來自外部來源的播放控制要求。在 Media3 中,您會看到:

Class 說明 實作注意事項
MediaSession 媒體工作階段可讓應用程式與音訊或影片播放器互動。這些類別會向外宣傳媒體播放內容,並接收來自外部來源的播放指令。 在 Media3 中,MediaSession 需要 Player 才能執行指令並取得目前狀態。
MediaSessionService MediaSessionService 會在與應用程式主要 Activity 分開的服務中,保存媒體工作階段及其相關聯的播放器,以利背景播放。
MediaController MediaController 類別通常用於從應用程式外部傳送指令,例如從其他應用程式或系統本身傳送指令。指令會傳送至相關聯 MediaSession 的基礎 Player MediaController 類別會實作 Player 介面,但在呼叫方法時,MediaController 會將傳送的指令傳送至已連結的 MediaSession。Google 助理等用戶端應用程式可使用 MediaController 控制已連線工作階段中的播放作業。
MediaLibraryService MediaLibraryServiceMediaSessionService 類似,但包含額外的 API,可讓您將內容資料庫提供給用戶端應用程式。
MediaBrowser MediaBrowser 類別可讓使用者瀏覽媒體應用程式的內容媒體庫,並選取要播放的項目。 MediaBrowser 類別會實作 MediaControllerPlayer 介面。與 MediaController 類似,Android Auto 等用戶端應用程式通常會實作 MediaBrowser

進一步瞭解 Media3 MediaSession

UI 元件

Media3 提供預設的 UI 元件,可用於觀看影片和控制播放作業。

Class 說明 實作注意事項
PlayerView 顯示影片和播放控制項的預設 View 連線至 ExoPlayerMediaController 或任何其他自訂 Player

進一步瞭解 Media3 UI

編輯元件

Media3 包含用於媒體編輯用途的 Transformer API,包括:

  • 音訊和影片處理作業,例如新增濾鏡和特效
  • 處理特殊格式,例如 HDR 影片和慢動作影片
  • 合成,例如合併多個輸入檔案
  • 將最終輸出內容匯出至檔案
Class 說明 實作注意事項
Transformer 使用 Transformer 類別來啟動及停止轉換,並檢查執行中的轉換進度更新。
Effects Effects 物件是音訊和視訊特效的集合,可套用至媒體項目。
EditedMediaItem EditedMediaItem 代表要處理的媒體項目,以及要套用的編輯內容。 您可以在開始匯出程序前,使用 ExoPlayer 預覽新增至媒體項目的效果。

進一步瞭解 Media3 Transformer

簡介影片

請觀看下方影片,瞭解 Media3 的開發工程師所提供的簡介。