Jetpack Media3 は、Android アプリでリッチな音声と映像のエクスペリエンスを表示できるようにする、メディア ライブラリの新しいホームです。Media3 は、デバイス機能に基づく強力なカスタマイズ、信頼性、最適化を備えたシンプルなアーキテクチャを提供し、断片化に伴う複雑さを解消します。
このドキュメントでは、Media3 で再生と編集のユースケースを実装するための主な API を紹介します。
再生コンポーネント
Media3 は、再生ユースケースのためのいくつかの主要コンポーネントを備えています。これらのコンポーネントを構成するクラスは、以前の Android メディア ライブラリで作業したことがある方にはおなじみのものです。
次の図は、一般的なアプリでこれらのコンポーネントがどのように連携するかを示しています。
メディア プレーヤー
メディア プレーヤーは、メディア ファイルを再生できるアプリのコンポーネントです。Media3 には次のものが含まれます。
クラス | Description | 実装に関する注意事項 |
---|---|---|
Player |
Player は、再生、一時停止、移動など、メディア プレーヤーの従来の高度な機能を定義するインターフェースです。 |
Media3 の Player インターフェースは、MediaSession や MediaController など複数のコンポーネントによって実装または使用される一般的な API です。 |
ExoPlayer |
ExoPlayer は、Media3 の Player インターフェースのデフォルト実装です。 |
メディア セッション
メディア セッションは、メディア プレーヤーを操作するための汎用的な手段です。これにより、アプリはメディア再生を外部ソースにアドバタイズし、外部ソースから再生コントロール リクエストを受信できます。Media3 には次のものが含まれます。
クラス | Description | 実装に関する注意事項 |
---|---|---|
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 コンポーネントを提供します。
クラス | Description | 実装に関する注意事項 |
---|---|---|
PlayerView |
動画コントロールと再生コントロールを表示するデフォルトの View 。
|
ExoPlayer 、MediaController 、またはその他のカスタム Player に接続します。 |
コンポーネントの編集
Media3 には、次のようなメディア編集ユースケースのための Transformer API が含まれています。
- 音声と動画の処理(フィルタやエフェクトの追加など)
- HDR 動画やスローモーション動画などの特殊な形式の処理
- コンポーズ(複数の入力ファイルの結合など)
- 最終出力をファイルにエクスポートする
クラス | Description | 実装に関する注意事項 |
---|---|---|
Transformer |
Transformer クラスを使用して、変換の開始と停止、実行中の変換の進行状況の更新を確認します。 |
|
Effects |
Effects オブジェクトは、メディア アイテムに適用する音声エフェクトと動画エフェクトのコレクションです。 |
|
EditedMediaItem |
EditedMediaItem は、処理するメディア アイテムと、それに適用する編集を表します。
|
エクスポート処理を開始する前に、ExoPlayer を使用して、メディア アイテムに追加された効果をプレビューできます。
|
紹介動画
Media3 を構築したエンジニアによる Media3 の紹介については、以下の動画をご覧ください。
参考リンク
- メディア デベロッパー センター
ExoPlayer
ドキュメント- 移行ガイド
- GitHub の AndroidX Media3
- Media3 メディア セッションのサンプルアプリ
- Universal Android Music Player サンプルアプリ