メディア モジュールは、メディアタイプとコーデックの処理、ExoPlayer とのインタラクション、フレームワークへのトランスポート コントロールと再生情報の公開、インデックス付きメタデータの最適化などを行います。モジュールは更新可能です。つまり、Android の通常のリリース サイクル外の機能に対する更新を受信できます。メディア コンポーネントは、高頻度で攻撃の標的になる(最近発見されたセキュリティ バグの多くはメディアに関連している)ため、セキュリティ バグと機能の更新をスピードアップしてセキュリティを強化すると、攻撃で悪用される可能性のあるセキュリティ バグの数が減少します。メディア フレームワークは引き続き拡張可能です。パートナーは、メディア コーデックとメディア形式エクストラクタを引き続き拡張できます。
更新可能なメディア コンポーネント
更新可能なメディア コンポーネントは、次のモジュールに格納されています。
メディア モジュール。以下のメディア コンポーネントが含まれています。
メディア エクストラクタは、さまざまな種類のメディアを処理します。各エクストラクタは、エクストラクタが特定のメディア ファイルを処理できるかどうかを判断する sniffer 関数と、そのメディア ファイルのエクストラクタのインスタンスを作成する factory 関数を含む個別の
.so
ファイルです。MediaSession2
API を使用すると、メディアアプリは Android フレームワークや他のアプリなどの他のプロセスに対してトランスポート コントロールと再生情報を公開できます。MediaParser
API(Android 11 の新機能)では、ExoPlayer がフレームワーク メディア コンテナ パーサーを効率的に使用して、メディア コンテナからメディア サンプルを抽出できます。互換性のあるメディアのコード変換(Android 12 の新機能)では、プラットフォームの互換性のあるメディアのコード変換機能が有効になります。
メディア コーデック モジュール。更新可能なソフトウェア Codec2 コンポーネントが含まれています。
MediaProvider モジュール。インデックス付きメタデータ(SD カードと USB デバイスの音声、動画、画像)を最適化し、MediaStore 公開 API を介してアプリでデータを利用できるようにします。
これらのモジュールとコンポーネントの詳細については、メディアのセクションをご覧ください。
モジュールの形式
Media モジュール(com.android.media
)と Media Codec モジュール(com.android.media.swcodec
)は APEX 形式であり、Android 10 以降を搭載したデバイスで使用できます。MediaProvider モジュール(com.google.android.mediaprovider
)は APK-in-APEX 形式であり、Android 11 以降を搭載したデバイスで使用できます。
カスタマイズ
カスタム エクストラクタとデコーダの追加の詳細については、メディア コンポーネントのカスタマイズをご覧ください。新しいメディア形式の追加、インデックスに登録するストレージ デバイスへの影響、MTP スタックの置き換えの詳細については、MediaProvider をご覧ください。