Jetpack Media3 是媒體程式庫的新園地,可讓 Android 應用程式呈現豐富的音訊和視覺體驗。Media3 提供簡單的架構,可根據裝置功能進行強大的自訂、確保可靠性及最佳化,藉此簡化碎片化帶來的複雜性。
本文將簡介主要 API,說明如何使用 Media3 實作播放和編輯用途。
播放元件
Media3 提供多種主要元件,可用於播放用途。如果您使用過先前的 Android 媒體程式庫,應該會對構成這些元件的類別很熟悉。
下圖說明這些元件在一般應用程式中的整合方式。

媒體播放器
媒體播放器是應用程式的元件,可播放媒體檔案。Media3 包含下列內容:
課程 | 說明 | 導入注意事項 |
---|---|---|
Player |
Player 介面定義了媒體播放器的高階傳統功能,例如播放、暫停和搜尋功能。 |
在 Media3 中,Player 介面是多個元件 (包括 MediaSession 和 MediaController ) 實作或使用的常見 API。 |
ExoPlayer |
ExoPlayer 是 Media3 中 Player 介面的預設實作方式。 |
媒體工作階段
媒體工作階段提供與媒體播放器互動的通用方式。這項功能可讓應用程式向外部來源宣傳媒體播放功能,並接收外部來源的播放控制要求。Media3 包含下列內容:
課程 | 說明 | 導入注意事項 |
---|---|---|
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 。 |
UI 元件
Media3 提供預設 UI 元件,可供觀看影片及控制播放。
課程 | 說明 | 導入注意事項 |
---|---|---|
PlayerView |
預設 View ,用於顯示影片和播放控制項。
|
連線至 ExoPlayer 、MediaController 或任何其他自訂 Player 。
|
PlayerSurface |
代表專用繪圖的 Composable,
Surface
用於顯示影片。
|
可連線至任何 Player ,但不含播放控制項。
僅用於算繪影格,可根據各種
ContentScale 類型調整大小。您可以在 Compose UI 公用程式中找到這個和其他許多可組合項。
|
編輯元件
Media3 包含適用於媒體編輯用途的 Transformer API,包括:
- 處理音訊和影片,例如新增濾鏡和特效
- 處理特殊格式,例如 HDR 影片和慢動作影片
- 合成,例如合併多個輸入檔案
- 將最終輸出內容匯出至檔案
課程 | 說明 | 導入注意事項 |
---|---|---|
Transformer |
使用 Transformer 類別啟動及停止轉換,並檢查執行中轉換的進度更新。
|
|
Effects |
Effects 物件是音訊和視訊效果的集合,可套用至媒體項目。 |
在開始匯出程序前,你可以使用 ExoPlayer 預覽新增至媒體項目的效果。 |
EditedMediaItem |
EditedMediaItem 代表要處理的媒體項目,以及要套用的編輯內容。 |
簡介影片
如要瞭解 Media3 的簡介,請觀看下方影片,聽聽開發這項技術的工程師怎麼說。