Jetpack Media3 は、Android アプリでリッチな音声と映像のエクスペリエンスを表示できるようにするメディア ライブラリの新しいホームです。Media3 は、デバイスの機能に基づく強力なカスタマイズ、信頼性、最適化を備えたシンプルなアーキテクチャを提供し、分散に伴う複雑さを抽象化します。
このドキュメントでは、Media3 を使用して再生と編集のユースケースを実装するための主な API について説明します。
再生コンポーネント
Media3 には、再生ユースケース向けのいくつかの主要なコンポーネントが用意されています。これらのコンポーネントを構成するクラスは、以前の Android メディア ライブラリを扱ったことがある人には馴染みがあるはずです。
次の図は、これらのコンポーネントが一般的なアプリでどのように組み合わされているかを示しています。

メディア プレーヤー
メディア プレーヤーは、メディア ファイルの再生を可能にするアプリのコンポーネントです。Media3 には次の項目があります。
クラス | 説明 | 実装に関する注意事項 |
---|---|---|
Player |
Player は、再生、一時停止、シークなどのメディア プレーヤーの従来の高レベル機能を定義するインターフェースです。 |
Media3 では、Player インターフェースは、MediaSession や MediaController など、複数のコンポーネントで実装または使用される一般的な API です。 |
ExoPlayer |
ExoPlayer は、Media3 の Player インターフェースのデフォルト実装です。 |
メディア セッション
MediaSession は、メディア プレーヤーを操作するための汎用的な手段を提供します。これにより、アプリは外部ソースにメディアの再生をアドバタイズし、外部ソースから再生制御リクエストを受信できるようになります。Media3 には次の項目があります。
クラス | 説明 | 実装に関する注意事項 |
---|---|---|
MediaSession |
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 コンポーネントが用意されています。
クラス | 説明 | 実装に関する注意事項 |
---|---|---|
PlayerView |
動画と再生コントロールを表示するデフォルトの View 。 |
ExoPlayer 、MediaController 、またはその他のカスタム Player に接続します。 |
コンポーネントの編集
Media3 には、次のようなメディア編集のユースケース向けの Transformer API が含まれています。
- フィルタやエフェクトの追加など、音声と動画の処理
- HDR 動画やスローモーション動画などの特殊な形式の処理
- コンポジション(複数の入力ファイルを組み合わせる)
- 最終出力をファイルにエクスポートする
クラス | 説明 | 実装に関する注意事項 |
---|---|---|
Transformer |
Transformer クラスを使用して、変換の開始と停止を行い、実行中の変換の進行状況の更新を確認します。 |
|
Effects |
Effects オブジェクトは、メディア アイテムに適用する音声エフェクトと動画エフェクトのコレクションです。 |
|
EditedMediaItem |
EditedMediaItem は、処理するメディア アイテムと、そのアイテムに適用する編集を表します。 |
ExoPlayer を使用すると、エクスポート プロセスを開始する前に、メディア アイテムに追加されたエフェクトをプレビューできます。 |
紹介動画
Media3 を開発したエンジニアによる Media3 の概要については、以下の動画をご覧ください。
参考リンク
- メディア向けデベロッパー センター
ExoPlayer
ドキュメント- 移行ガイド
- GitHub の AndroidX Media3
- Media3 メディア セッションのサンプルアプリ
- Universal Android Music Player のサンプルアプリ