このドキュメントでは、Android プラットフォームが提供するメディア コーデック、コンテナ、ネットワーク プロトコルのサポートについて説明します。
以下の表に、Android プラットフォームに組み込まれているメディア形式のサポートについて説明します。「YES」は、すべての Android バージョンを搭載したハンドヘルドとタブレットでフォーマットが利用できることを意味します。特定の Android プラットフォームが指定されている場合、そのバージョン以降のバージョンを搭載したハンドセットとタブレットでそのフォーマットを利用できます。この形式は以前のバージョンでも使用できる可能性がありますが、保証はされません。ハンドセットやタブレット以外のフォーム ファクタでは、メディア フォーマットのサポートが異なる場合があります。
特定のモバイル デバイスでは、これらの表に記載されていない形式やファイル形式がサポートされている場合があります。また、MediaCodec を直接使用する場合は、サポートされているファイル形式やコンテナ形式に関係なく、利用可能なメディア形式にアクセスできます。
オーディオ サポート
| 形式 | エンコーダ | デコーダ | ファイル形式コンテナ形式 | 詳細 | |
|---|---|---|---|---|---|
| エクストラクタ | Muxer | ||||
| AAC-LC | はい | はい |
• 3GPP(.3gp) • ADTS Raw AAC(.aac、ADIF はサポート対象外) • MPEG-TS(.ts、シーク不可、Android 3.0 以降) |
• 3GPP(.3gp) • ADTS Raw AAC(.aac、ADIF はサポート対象外) • MPEG-TS(不明)(.ts、シーク不可、Android 3.0 以降) |
標準サンプリング レート 8 ~ 48 kHz のモノラル/ステレオ/5.0/5.1 コンテンツをサポート。 |
| HE-AACv1(AAC+) | Android 4.1 以降 | はい | |||
| HE-AACv2(Enhanced AAC+) | はい | 標準サンプリング レート 8 ~ 48 kHz のステレオ/5.0/5.1 コンテンツをサポート。 | |||
| xHE-AAC | Android 9 以上 | 標準サンプリング レート 8 ~ 48 kHz の最大 8 チャンネルのコンテンツをサポート | |||
| AAC-ELD(Enhanced Low Delay AAC) | Android 4.1 以降 | Android 4.1 以降 | 標準サンプリング レート 16 ~ 48 kHz のモノラル/ステレオ コンテンツをサポート | ||
| AMR-NB | はい | はい |
• 3GPP(.3gp) • AMR(.amr) |
• 3GPP(.3gp) • AMR(.amr) |
8 kHz でサンプリングされた 4.75~12.2 kbps。 |
| AMR-WB | はい | はい | 16 kHz でサンプリングされた 6.60~23.85 kbps の 9 種類のレート | ||
| FLAC | Android 4.1 以降 | Android 3.1 以降 |
• FLAC(.flac) • MPEG-4(.mp4、.m4a、Android 10 以降) • Matroska(.mkv) |
モノラル / ステレオ(マルチチャンネルはサポート対象外)。サンプルレートは最大 48 kHz(ただし、出力が 44.1 kHz のデバイスでは、48 kHz から 44.1 kHz へのダウンサンプラーにローパス フィルタが含まれないため、最大 44.1 kHz を推奨)。16 ビットを推奨(24 ビットにはディザが適用されない) | |
| MIDI | はい |
• タイプ 0 と 1(.mid、.xmf、.mxmf) • RTTTL/RTX(.rtttl、.rtx) • OTA(.ota) • iMelody(.imy) |
MIDI タイプ 0 と 1。DLS バージョン 1 と 2。XMF と Mobile XMF。着信音形式 RTTTL/RTX、OTA、iMelody をサポート。 | ||
| MP3 | はい |
• MP3(.mp3) • MPEG-4(.mp4、.m4a、Android 10 以降) • Matroska(.mkv、Android 10 以降) |
モノラル / ステレオの 8~320 Kbps 固定ビットレート(CBR)または可変ビットレート(VBR)。 | ||
| Opus | Android 10 以上 | Android 5.0 以降 |
• Ogg(.ogg) • MPEG-4(.mp4) • Matroska(.mkv) |
• Ogg(.ogg) • WebM(.webm) |
|
| PCM(WAVE) | Android 4.1 以降 | はい | WAVE(.wav) | 8 ビットと 16 ビットのリニア PCM(最大レートはハードウェアの上限値)。Raw PCM 録音のサンプリング レートとして 8,000、16,000、44,100 Hz。 | |
| Vorbis | はい |
• Ogg(.ogg) • Matroska(.mkv、Android 4.0 以降) • MPEG-4(.mp4、.m4a、Android 10 以降) |
• WebM(.webm) | ||
動画のサポート
動画形式
| 形式 | エンコーダ | デコーダ | ファイル形式コンテナ形式 | 詳細 | |
|---|---|---|---|---|---|
| エクストラクタ | Muxer | ||||
| H.263 | はい | はい |
• 3GPP(.3gp) • MPEG-4(.mp4) • Matroska(.mkv) |
• 3GPP(.3gp) • MPEG-4(.mp4) |
Android 7.0 以降では H.263 のサポートはオプション。 |
| H.264 AVC Baseline Profile(BP) |
Android 3.0 以上 | はい |
• 3GPP(.3gp) • MPEG-4(.mp4) • MPEG-TS(.ts、AAC オーディオのみ、シーク不可、Android 3.0 以降) • Matroska(.mkv) |
• 3GPP(.3gp) • MPEG-4(.mp4) |
|
| H.264 AVC Main Profile(MP) |
Android 6.0 以降 | はい | デコーダは必須。エンコーダは推奨。 | ||
| H.265 HEVC | Android 5.0 以降 |
• MPEG-4(.mp4) • Matroska(.mkv) |
• MPEG-4(.mp4) | モバイル デバイスでは Main Profile Level 3。Android TV では Main Profile Level 4.1。 | |
| MPEG-4 SP | はい | • MPEG-4(.mp4) | • MPEG-4(.mp4) | ||
| VP8 | Android 4.3 以降 | Android 2.3.3 以降 |
• WebM(.webm) • Matroska(.mkv、Android 4.0 以降) |
• WebM(.webm) | Android 4.0 以降でのみストリーミング可能。 |
| VP9 | Android 4.4+ |
• WebM(.webm) • Matroska(.mkv) • MPEG-4(.mp4) |
• WebM(.webm) | ||
| AV1 | Android 14 以上 | Android 10 以上 |
• MPEG-4(.mp4) • Matroska(.mkv) |
• MPEG-4(.mp4) | エンコーダとデコーダは、Android 14 以降では必須です。 |
| APV | Android 16 以降 | Android 16 以降 | • MPEG-4(.mp4) | • MPEG-4(.mp4) | エンコーダとデコーダは Android 16 以降で必須です。 |
動画エンコードに関する推奨値
次の表に、H.264 ベースライン プロファイル コーデックを使用した再生に推奨される Android メディア フレームワークの動画エンコード プロファイルとパラメータを示します。同じ推奨事項がメイン プロファイル コーデックにも適用されます。メイン プロファイル コーデックは Android 6.0 以降でのみ利用可能です。
| SD(低画質) | SD(高画質) | HD 720p(すべてのデバイスで N/A) | |
|---|---|---|---|
| 動画の解像度 | 176 x 144 ピクセル | 480 x 360 ピクセル | 1,280 x 720 ピクセル |
| 動画のフレームレート | 12 fps | 30 fps | 30 fps |
| 動画のビットレート | 56 Kbps | 500 Kbps | 2 Mbps |
| オーディオ コーデック | AAC-LC | AAC-LC | AAC-LC |
| オーディオ チャンネル | 1(モノラル) | 2(ステレオ) | 2(ステレオ) |
| オーディオ ビットレート | 24 Kbps | 128 Kbps | 192 Kbps |
次の表に、VP8 メディア コーデックを使用した再生に推奨される Android メディア フレームワークの動画エンコード プロファイルとパラメータを示します。
| SD(低画質) | SD(高画質) | HD 720p(すべてのデバイスで N/A) | HD 1080p(すべてのデバイスで N/A) | |
|---|---|---|---|---|
| 動画の解像度 | 320 x 180 ピクセル | 640 x 360 ピクセル | 1,280 x 720 ピクセル | 1,920 x 1,080 px |
| 動画のフレームレート | 30 fps | 30 fps | 30 fps | 30 fps |
| 動画のビットレート | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
動画デコードに関する推奨値
デバイスの実装では、VP8、VP9、H.264、H.265 のすべてのコーデックについて、同じストリーム内で、リアルタイムで、デバイスで各コーデックがサポートする最大解像度まで、標準の Android API を通じて動的な動画解像度とフレームレートの切り替えをサポートしなければなりません。
ドルビービジョン デコーダをサポートする実装は、次のガイドラインに沿う必要があります。
- ドルビー ビジョン対応エクストラクタを提供する。
- ドルビー ビジョン コンテンツをデバイスの画面または標準の動画出力ポート(例: HDMI)に適切に表示します。
- 下位互換性のあるベースレイヤ(存在する場合)のトラック インデックスを、結合したドルビー ビジョンレイヤのトラック インデックスと同じに設定します。
動画ストリーミングの要件
HTTP または RTSP でストリーミングされる動画コンテンツには、以下の追加要件があります。
- 3GPP コンテナと MPEG-4 コンテナの場合、
moovアトムはmdatアトムの前に配置する必要がありますが、ftypアトムの後に配置する必要があります。 - 3GPP、MPEG-4、WebM コンテナの場合、同じ時間オフセットに対応する音声サンプルと動画サンプルの差は 500 KB 以下でなければなりません。このオーディオと動画の隔たりを最小限に抑えるには、オーディオと動画を小さなチャンクサイズでインターリーブすることをおすすめします。
画像のサポート
| 形式 | エンコーダ | デコーダ | 詳細 | ファイル形式 コンテナ形式 |
|---|---|---|---|---|
| BMP | はい | BMP(.bmp) | ||
| GIF | はい | GIF(.gif) | ||
| JPEG | はい | はい | ベースラインとプログレッシブ | JPEG(.jpg) |
| PNG | はい | はい | PNG(.png) | |
| WebP |
Android 4.0+ ロスレス: Android 10+ 透過性: Android 4.2.1+ |
Android 4.0+ ロスレス: Android 4.2.1+ 透過性: Android 4.2.1+ |
Android 10 では、品質を 100 に設定することでロスレス エンコードを実現できます。 | WebP(.webp) |
| HEIF |
Android 10 以降 ( MediaCodec または HeifWriter 経由。Bitmap.compress には含まれません)
|
Android 9.0 以降 | デバイスは省略可。8 ビットのサポートについては、ImageDecoder.isMimeTypeSupported("image/heif") をご覧ください。10 ビット デコードには、オプションの HEVC Main10 プロファイルが必要です。 |
HEIF(.heic、.heif) |
| AVIF(ベースライン プロファイル) |
Android 14 以降 ( MediaCodec 経由、Bitmap.compress には含まれません)
|
Android 12 以上 | 8 ビット デコードは Android 12 以降でサポートされています。10 ビット デコードは任意です。ImageDecoder.isMimeTypeSupported("image/avif") で 10 ビット サポートを確認してください(false の場合でも、8 ビットは引き続き動作します)。 |
AVIF(.avif) |
ネットワーク プロトコル
オーディオと動画の再生では、以下のネットワーク プロトコルがサポートされています。
- RTSP(RTP、SDP)
- HTTP / HTTPS プログレッシブ ストリーミング
- HTTP/HTTPS ライブ ストリーミングのドラフト プロトコル:
- MPEG-2 TS メディア ファイルのみ
- プロトコル バージョン 3 Android 4.0 以降
- プロトコル バージョン 2 Android 3.x
- Android 3.0 未満はサポート対象外
注: HTTPS は Android 3.1 未満ではサポートされていません。
HDR 動画形式
OEM は、Android HDR アーキテクチャで任意の HDR 形式を有効にできます。このアーキテクチャは、HDR 形式のコアニーズである 10 ビットバッファ、メタデータ(静的、動的、なし)、伝達関数、カラースペース処理を提供します。
デベロッパーの整合性を確保し、HDR の主なユースケースに対応するため、HDR をサポートするデバイスでは、OEM がいくつかの基本形式をサポートすることが求められます。
- 映画のストリーミングなどのプロフェッショナル コンテンツの再生には、HDR10 が必要です。
- ユーザー作成コンテンツのキャプチャと再生については、Android デバイス全体で一貫したエクスペリエンスを提供するために HLG10 を必須とします。
HDR サポートを追加する OEM は、これらの形式をサポートする必要がありますが、HDR10+ やドルビー ビジョンなどの追加の形式もサポートできます。
| 形式 | 伝達関数 | メタデータ | コーデック | ビット深度 |
|---|---|---|---|---|
| HLG10 | HLG | いいえ | HEVC | 10 ビット |
| HDR10 | PQ | 静的 | HEVC | 10 ビット |
| HDR10+ | PQ | 静的 | HEVC | 10 ビット |
| ドルビー ビジョン 8.4 | HLG | 動的 | HEVC | 10 ビット |
形式の処理に関する推奨事項
| キャプチャ形式 | 元のアップロード形式 | 配信形式 |
| HLG | アプリのバックエンドで HDR HLG をサポート | HDR(HLG)をサポートするデバイス:
HLG デバイスが HDR をサポートしている(HLG はサポートせず PQ のみ): SDR(バックエンドで HLG から SDR へのトーン マップ) HDR をサポートしていないデバイス: SDR(バックエンドで HLG から SDR へのトーン マップ) |
ユースケース 2: ネイティブ カメラのキャプチャまたはユーザーのギャラリーからのインポート(アプリのバックエンドが HDR をサポート)
| キャプチャ形式 | 元のアップロード形式 | 配信形式 |
| HLG | HLG | アプリ内キャプチャのユースケースと同じ |
| HDR10+ | HLG
アップロード前に、トランスフォーマー API を使用して HDR10+(PQ)から HLG にトーン マップする |
アプリ内キャプチャのユースケースと同じ |
| DV8.4 | HLG
(DV8.4 は HLG を使用し、ビットストリームは HLG として動作するため、トーン マッピングは不要です) |
アプリ内キャプチャのユースケースと同じ |
ユースケース 3: アプリのバックエンドが HDR をサポートしていない
| キャプチャ形式 | 元のアップロード形式 | 配信形式 |
| すべての形式 | SDR
トランスフォーマー API を使用して、アップロード前に HLG から SDR にトーン マッピングする |
SDR |