Jetpack Media3 簡介

Jetpack Media3 是媒體庫的新平台,可讓 Android 應用程式顯示豐富的音訊和視覺體驗。Media3 提供簡單的架構,可根據裝置功能提供強大的自訂、可靠性和最佳化功能,為您消弭複雜的作業。

本文件介紹重要的 API,說明如何透過 Media3 實作播放與編輯用途。

播放元件

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

下圖演示了這些元件如何在一般應用程式中串連。

使用 Media3 的媒體應用程式不同元件,可透過幾種簡單的方式串連在一起,藉此共用介面和類別。
圖 1:媒體應用程式元件

媒體播放器

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

課程 品名 導入註意事項
Player Player 介面可定義媒體播放器的傳統高階功能,例如播放、暫停和跳轉功能。 在 Media3 中,Player 介面是多個元件實作或使用的常見 API,包括 MediaSessionMediaController
ExoPlayer ExoPlayer 是 Media3 中 Player 介面的預設實作。

進一步瞭解 Media3 ExoPlayer

媒體工作階段

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

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

進一步瞭解 Media3 MediaSession

UI 元件

Media3 提供用於觀看影片及控製播放功能的預設 UI 元件。

課程 品名 導入註意事項
PlayerView 顯示影片和播放控制項的預設 View 連結至 ExoPlayerMediaController 或任何其他自訂 Player

進一步瞭解 Media3 使用者介面

編輯元件

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

  • 音訊和影片處理方式,例如添加濾鏡和特效
  • 處理特殊格式,例如 HDR 影片和慢動作影片
  • 組合,例如合併多個輸入檔案
  • 將最終輸出結果匯出至檔案
課程 品名 導入註意事項
Transformer 使用 Transformer 類別來啟動及停止轉換作業,以及檢查執行中轉換作業的進度更新。
Effects Effects 物件是套用至媒體項目的一系列音訊和影片效果。
EditedMediaItem EditedMediaItem 代表要處理的媒體項目,以及要套用到該項目的編輯內容。 在開始匯出程序之前,您可以使用 ExoPlayer 預覽新增至媒體項目的效果。

進一步瞭解 Media3 Transformer

簡介影片

請觀看下方影片,瞭解建構此 API 的工程師所提供的 Media3 簡介。