このドキュメントでは、Android プラットフォームがサポートするメディア コーデック、コンテナ、ネットワーク プロトコルについて説明します。
以下の表に、Android プラットフォームが組み込みでサポートしているメディア形式について説明します。[YES] は、すべての Android バージョンを搭載したハンドヘルドとタブレットでこの形式を使用できることを意味します。特定の Android プラットフォームが指定されている場合、そのバージョンとそれ以降のバージョンを搭載したハンドセットとタブレットでフォーマットを使用できます。この形式は以前のバージョンでも使用できる可能性がありますが、保証されるものではありません。スマートフォンやタブレット以外のフォーム ファクタでは、メディア形式のサポートが異なる場合があります。
特定のモバイル デバイスでは、これらの表に記載されていない追加の形式やファイル形式がサポートされている場合があります。また、MediaCodec を直接使用すると、サポートされているファイル形式やコンテナ形式に関係なく、使用可能なメディア形式にアクセスできます。
オーディオ サポート
形式 | エンコーダ | デコーダ | ファイル形式 / コンテナ形式 | 詳細 | |
---|---|---|---|---|---|
エクストラクタ | 多重化 | ||||
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 Hz、16,000 Hz、44,100 Hz。 | |
Vorbis | はい |
• Ogg(.ogg) • Matroska(.mkv、Android 4.0 以降) • MPEG-4(.mp4、.m4a、Android 10 以降) |
• WebM(.webm) |
動画のサポート
動画形式
形式 | エンコーダ | デコーダ | ファイル形式 / コンテナ形式 | 詳細 | |
---|---|---|---|---|---|
エクストラクタ | 多重化 | ||||
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 Baseline Profile コーデックを使用した再生で推奨される Android メディア フレームワークの動画エンコード プロファイルとパラメータを示します。Main Profile コーデック(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 8.0 以降 | HEIF(.heic、.heif) | ||
AVIF(ベースライン プロファイル) | Android 14 以上 | Android 14 以上 | Android 14 以降では、エンコーダとデコーダが必須です。 | 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 の主要なユースケースに対応するため、Google は OEM に対し、HDR をサポートするデバイスで次のベース形式をサポートするよう義務付けています。
- 映画のストリーミングなど、プロのコンテンツを再生するには HDR10 が必要です。
- ユーザー作成コンテンツの撮影と再生では、Android デバイス間で一貫したエクスペリエンスを提供するために HLG10 が必要です。
HDR のサポートを追加する OEM は、これらの形式をサポートする必要がありますが、HDR10+ やドルビー ビジョンなどの追加の形式をサポートすることもできます。
形式 | 伝達関数 | メタデータ | コーデック | ビット深度 |
---|---|---|---|---|
HLG10 | HLG | × | HEVC | 10 ビット |
HDR10 | PQ | 静的 | HEVC | 10 ビット |
HDR10+ | PQ | 静的 | HEVC | 10 ビット |
Dolby Vision 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
アップロード前に、Transformer API を使用して HDR10+(PQ)から HLG にトーン マッピングする |
アプリ内キャプチャのユースケースと同じ |
DV8.4 | HLG
(DV8.4 は HLG を使用し、ビットストリームは HLG として動作するため、トーンマッピングは不要です) |
アプリ内キャプチャのユースケースと同じ |
ユースケース 3: アプリのバックエンドが HDR をサポートしていない
キャプチャ形式 | アップロード形式 | 配信形式 |
任意の形式 | SDR
アップロード前にトランスフォーマー API を使用して HLG から SDR にトーンマッピングする |
SDR |