Jetpack Media3 の概要

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

このドキュメントでは、Media3 を使用して再生と編集のユースケースを実装するための主な API について説明します。

再生コンポーネント

Media3 には、再生ユースケース向けのいくつかの主要なコンポーネントが用意されています。これらのコンポーネントを構成するクラスは、以前の Android メディア ライブラリを扱ったことがある人には馴染みがあるはずです。

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

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

メディア プレーヤー

メディア プレーヤーは、メディア ファイルの再生を可能にするアプリのコンポーネントです。Media3 には次の項目があります。

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

Media3 ExoPlayer の詳細

メディア セッション

MediaSession は、メディア プレーヤーを操作するための汎用的な手段を提供します。これにより、アプリは外部ソースにメディアの再生をアドバタイズし、外部ソースから再生制御リクエストを受信できるようになります。Media3 には次の項目があります。

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

Media3 MediaSession の詳細

UI コンポーネント

Media3 には、動画の表示と再生の制御に使用するデフォルトの UI コンポーネントが用意されています。

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

Media3 UI の詳細

コンポーネントの編集

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

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

Media3 Transformer の詳細

紹介動画

Media3 を開発したエンジニアによる Media3 の概要については、以下の動画をご覧ください。