Jetpack Media3 是媒體程式庫的新家,可讓 Android 應用程式提供豐富的音訊和視覺體驗。Media3 提供簡單的架構,可根據裝置功能提供強大的自訂、可靠性和最佳化功能,以便抽象化分散式架構帶來的複雜性。
本文件將介紹主要 API,說明如何使用 Media3 實作播放和編輯用途。
播放元件
Media3 提供多個用於播放用途的重要元件。如果您曾使用過先前的 Android 媒體程式庫,就會熟悉這些元件的組成類別。
下圖說明這些元件如何在一般應用程式中整合。

媒體播放器
媒體播放器是應用程式可用來播放媒體檔案的元件。在 Media3 中,您會看到:
Class | 說明 | 實作注意事項 |
---|---|---|
Player |
Player 是介面,可為媒體播放器定義傳統的高階功能,例如播放、暫停和快轉功能。 |
在 Media3 中,Player 介面是常見的 API,可由多個元件實作或使用,例如 MediaSession 和 MediaController 。 |
ExoPlayer |
ExoPlayer 是 Media3 中 Player 介面的預設實作項目。 |
媒體工作階段
媒體工作階段提供與媒體播放器互動的通用方式。這可讓應用程式向外部來源宣傳媒體播放功能,並接收來自外部來源的播放控制要求。在 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 。 |
UI 元件
Media3 提供預設的 UI 元件,可用於觀看影片和控制播放作業。
Class | 說明 | 實作注意事項 |
---|---|---|
PlayerView |
顯示影片和播放控制項的預設 View 。 |
連線至 ExoPlayer 、MediaController 或任何其他自訂 Player 。 |
編輯元件
Media3 包含用於媒體編輯用途的 Transformer API,包括:
- 音訊和影片處理作業,例如新增濾鏡和特效
- 處理特殊格式,例如 HDR 影片和慢動作影片
- 合成,例如合併多個輸入檔案
- 將最終輸出內容匯出至檔案
Class | 說明 | 實作注意事項 |
---|---|---|
Transformer |
使用 Transformer 類別來啟動及停止轉換,並檢查執行中的轉換進度更新。 |
|
Effects |
Effects 物件是音訊和視訊特效的集合,可套用至媒體項目。 |
|
EditedMediaItem |
EditedMediaItem 代表要處理的媒體項目,以及要套用的編輯內容。 |
您可以在開始匯出程序前,使用 ExoPlayer 預覽新增至媒體項目的效果。 |
簡介影片
請觀看下方影片,瞭解 Media3 的開發工程師所提供的簡介。