Jetpack Media3 是媒體庫的新平台,可讓 Android 應用程式顯示豐富的音訊和視覺體驗。Media3 提供簡單的架構,可根據裝置功能提供強大的自訂、可靠性和最佳化功能,為您消弭複雜的作業。
本文件介紹重要的 API,說明如何透過 Media3 實作播放與編輯用途。
播放元件
Media3 提供幾個播放用途的重要元件。如果您使用過舊版 Android 媒體程式庫,就會熟悉組成這些元件的類別。
下圖演示了這些元件如何在一般應用程式中串連。
![使用 Media3 的媒體應用程式不同元件,可透過幾種簡單的方式串連在一起,藉此共用介面和類別。](https://developer.android.com/static/guide/topics/media/images/overview.png?authuser=0&hl=zh-tw)
媒體播放器
媒體播放器是應用程式的元件,可以播放媒體檔案。在 Media3 中,您會看到:
課程 | 品名 | 導入註意事項 |
---|---|---|
Player |
Player 介面可定義媒體播放器的傳統高階功能,例如播放、暫停和跳轉功能。 |
在 Media3 中,Player 介面是多個元件實作或使用的常見 API,包括 MediaSession 和 MediaController 。 |
ExoPlayer |
ExoPlayer 是 Media3 中 Player 介面的預設實作。
|
媒體工作階段
媒體工作階段可讓使用者與媒體播放器互動。這可讓應用程式向外部來源宣傳媒體播放,並接收來自外部來源的播放控制要求。在 Media3 中,您會看到:
課程 | 品名 | 導入註意事項 |
---|---|---|
MediaSession |
媒體工作階段可讓您的應用程式與音訊或影片播放器互動。可對外宣傳媒體播放,並從外部來源接收播放指令。 |
在 Media3 中,MediaSession 需要 Player 才能執行指令並取得目前狀態。 |
MediaSessionService |
MediaSessionService 會將媒體工作階段及其相關播放器存放在應用程式主要 Activity 以外的服務中,以利背景播放。 |
|
MediaController |
MediaController 類別通常用於從應用程式外部傳送指令,例如來自其他應用程式或系統本身。這個指令會傳送到相關聯 MediaSession 的基礎 Player 。 |
MediaController 類別會實作 Player 介面,但在呼叫方法時,指令會傳送至已連結的 MediaSession 。Google 助理等用戶端應用程式可以使用 MediaController 控制已連結工作階段的播放內容。 |
MediaLibraryService |
MediaLibraryService 類似於 MediaSessionService ,但內含其他 API,可讓您將內容資料庫提供給用戶端應用程式。 |
|
MediaBrowser |
MediaBrowser 類別可讓使用者瀏覽媒體應用程式的內容資料庫,並選取要播放的項目。 |
MediaBrowser 類別會實作 MediaController 和 Player 介面。與 MediaController 類似,Android Auto 等用戶端應用程式通常會實作 MediaBrowser 。 |
UI 元件
Media3 提供用於觀看影片及控製播放功能的預設 UI 元件。
課程 | 品名 | 導入註意事項 |
---|---|---|
PlayerView |
顯示影片和播放控制項的預設 View 。 |
連結至 ExoPlayer 、MediaController 或任何其他自訂 Player 。 |
編輯元件
Media3 包含適用於媒體編輯用途的 Transformer API,包括:
- 音訊和影片處理方式,例如添加濾鏡和特效
- 處理特殊格式,例如 HDR 影片和慢動作影片
- 組合,例如合併多個輸入檔案
- 將最終輸出結果匯出至檔案
課程 | 品名 | 導入註意事項 |
---|---|---|
Transformer |
使用 Transformer 類別來啟動及停止轉換作業,以及檢查執行中轉換作業的進度更新。 |
|
Effects |
Effects 物件是套用至媒體項目的一系列音訊和影片效果。 |
|
EditedMediaItem |
EditedMediaItem 代表要處理的媒體項目,以及要套用到該項目的編輯內容。 |
在開始匯出程序之前,您可以使用 ExoPlayer 預覽新增至媒體項目的效果。 |
簡介影片
請觀看下方影片,瞭解建構此 API 的工程師所提供的 Media3 簡介。