Jetpack Media3 簡介

Jetpack Media3 是媒體庫的新園地,可讓 Android 應用程式顯示豐富的音訊和視覺體驗。Media3 提供簡單明瞭的架構,具備強大的自訂功能、可靠性和最佳化功能,可根據裝置功能抽象化處理片段化帶來的複雜性。

本文將介紹使用 Media3 實作播放和編輯用途的重要 API。

播放元件

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

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

使用 Media3 的媒體應用程式,其不同元件會共用介面和類別,因此能以幾種簡單的方式相互連結。
圖 1:媒體應用程式元件

媒體播放器

媒體播放器是應用程式的元件,可播放媒體檔案。Media3 包含:

Class 說明 導入注意事項
Player Player 介面定義了媒體播放器的傳統高階功能,例如播放、暫停和跳轉。 在 Media3 中,Player 介面是由多個元件 (例如 MediaSession 和 MediaController) 實作或使用的通用 API。
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 MediaLibraryService 與 MediaSessionService 類似,但包含額外的 API,可讓您將內容庫提供給用戶端應用程式。
MediaBrowser MediaBrowser 類別可讓使用者瀏覽媒體應用程式的內容庫,並選取要播放的項目。 MediaBrowser 類別會實作 MediaController 和 Player 介面。與 MediaController 類似,Android Auto 等用戶端應用程式通常會實作 MediaBrowser。

進一步瞭解 Media3 MediaSession

UI 元件

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

Class 說明 導入注意事項
PlayerView 預設的 View,用於顯示影片和播放控制項。 連線至 ExoPlayer、MediaController 或任何其他自訂 Player。
PlayerSurface 代表專用繪圖 Surface 的可組合項,用於顯示影片。 可連線至任何 Player,但不含播放控制項。 僅用於算繪影格,且可根據各種 ContentScale 類型調整大小。您可以在 Compose UI 公用程式中找到這個可組合項和許多其他可組合項。

進一步瞭解 Media3 UI

編輯元件

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

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

進一步瞭解 Media3 Transformer

簡介影片

觀看這部影片,瞭解 Media3 開發工程師對 Media3 的介紹: