Jetpack Media3 の概要

Jetpack Media3 は、Android アプリでリッチな音声と映像のエクスペリエンスを表示できるようにする、メディア ライブラリの新しいホームです。Media3 は、デバイス機能に基づく強力なカスタマイズ、信頼性、最適化を備えたシンプルなアーキテクチャを提供し、断片化に伴う複雑さを解消します。

このドキュメントでは、Media3 で再生と編集のユースケースを実装するための主な API を紹介します。

再生コンポーネント

Media3 は、再生ユースケースのためのいくつかの主要コンポーネントを備えています。これらのコンポーネントを構成するクラスは、以前の Android メディア ライブラリで作業したことがある方にはおなじみのものです。

次の図は、一般的なアプリでこれらのコンポーネントがどのように連携するかを示しています。

Media3 を使用するメディアアプリのさまざまなコンポーネントは、インターフェースとクラスが共有されるため、いくつかの簡単な方法で接続できます。
図 1: メディアアプリのコンポーネント

メディア プレーヤー

メディア プレーヤーは、メディア ファイルを再生できるアプリのコンポーネントです。Media3 には次のものが含まれます。

クラス Description 実装に関する注意事項
Player Player は、再生、一時停止、移動など、メディア プレーヤーの従来の高度な機能を定義するインターフェースです。 Media3 の Player インターフェースは、MediaSessionMediaController など複数のコンポーネントによって実装または使用される一般的な API です。
ExoPlayer ExoPlayer は、Media3 の Player インターフェースのデフォルト実装です。

Media3 ExoPlayer の詳細

メディア セッション

メディア セッションは、メディア プレーヤーを操作するための汎用的な手段です。これにより、アプリはメディア再生を外部ソースにアドバタイズし、外部ソースから再生コントロール リクエストを受信できます。Media3 には次のものが含まれます。

クラス Description 実装に関する注意事項
MediaSession メディア セッションを使用すると、アプリでオーディオ プレーヤーや動画プレーヤーを操作できるようになります。メディア再生を外部にアドバタイズし、外部ソースから再生コマンドを受け取ります。 Media3 では、MediaSession にはコマンドを実行して現在の状態を取得するために Player が必要です。
MediaSessionService MediaSessionService は、メディア セッションとそれに関連するプレーヤーをアプリのメインの Activity とは別のサービスに保持して、バックグラウンド再生を可能にします。
MediaController MediaController クラスは通常、アプリの外部(他のアプリやシステム自体)からコマンドを送信する際に使用されます。このコマンドは、関連付けられた MediaSession の基盤となる Player に送信されます。 MediaController クラスは Player インターフェースを実装していますが、メソッドを呼び出すと、コマンドは接続された MediaSession に送信されます。Google アシスタントなどのクライアント アプリは、MediaController を使用して、接続されたセッションの再生を制御できます。
MediaLibraryService MediaLibraryServiceMediaSessionService に似ていますが、コンテンツ ライブラリをクライアント アプリに配信できるように追加の API が含まれている点が異なります。
MediaBrowser MediaBrowser クラスを使用すると、ユーザーはメディアアプリのコンテンツ ライブラリ内を移動して、再生するアイテムを選択できます。 MediaBrowser クラスは、MediaController インターフェースと Player インターフェースの両方を実装します。MediaController と同様に、Android Auto などのクライアント アプリは一般的に MediaBrowser を実装します。

Media3 MediaSession の詳細

UI コンポーネント

Media3 は、動画の再生と再生の制御に使用するデフォルトの UI コンポーネントを提供します。

クラス Description 実装に関する注意事項
PlayerView 動画コントロールと再生コントロールを表示するデフォルトの View ExoPlayerMediaController、またはその他のカスタム Player に接続します。

Media3 UI の詳細

コンポーネントの編集

Media3 には、次のようなメディア編集ユースケースのための Transformer API が含まれています。

  • 音声と動画の処理(フィルタやエフェクトの追加など)
  • HDR 動画やスローモーション動画などの特殊な形式の処理
  • コンポーズ(複数の入力ファイルの結合など)
  • 最終出力をファイルにエクスポートする
クラス Description 実装に関する注意事項
Transformer Transformer クラスを使用して、変換の開始と停止、実行中の変換の進行状況の更新を確認します。
Effects Effects オブジェクトは、メディア アイテムに適用する音声エフェクトと動画エフェクトのコレクションです。
EditedMediaItem EditedMediaItem は、処理するメディア アイテムと、それに適用する編集を表します。 エクスポート処理を開始する前に、ExoPlayer を使用して、メディア アイテムに追加された効果をプレビューできます。

Media3 Transformer の詳細

紹介動画

Media3 を構築したエンジニアによる Media3 の紹介については、以下の動画をご覧ください。