本文說明 Android 平台支援的媒體轉碼器、容器和網路通訊協定。
下表說明 Android 平台內建的媒體格式支援功能。「是」表示手持裝置和平板電腦 (無論搭載哪個 Android 版本) 都能使用該格式。 如果指定了特定 Android 平台,則搭載該版本和後續所有版本的裝置都支援該格式。較舊版本可能也支援此格式,但無法保證。在手機和平板電腦以外的板型規格上,支援的媒體格式可能有所不同。
請注意,特定行動裝置可能支援這些表格未列出的其他格式或檔案類型。此外,如果您直接使用 MediaCodec,無論支援的檔案類型和容器格式為何,都可以存取任何可用的媒體格式。
音訊支援
| 格式 | 編碼器 | 解碼器 | 檔案類型容器格式 | 詳細資料 | |
|---|---|---|---|---|---|
| 擷取器 | Muxer | ||||
| AAC LC | 是 | 是 |
• 3GPP (.3gp) • ADTS 原始 AAC (.aac,不支援 ADIF) • MPEG-TS (.ts,無法搜尋,Android 3.0 以上版本) |
• 3GPP (.3gp) • ADTS 原始 AAC (.aac,不支援 ADIF) • MPEG-TS (不確定) (.ts,無法搜尋,Android 3.0 以上版本) |
支援單聲道/立體聲/5.0/5.1 內容,標準取樣率為 8 至 48 kHz。 |
| HE-AACv1 (AAC+) | Android 4.1 以上版本 | 是 | |||
| HE-AACv2 (增強型 AAC+) | 是 | 支援立體聲/5.0/5.1 內容,標準取樣率為 8 至 48 kHz。 | |||
| xHE-AAC | Android 9 以上版本 | 支援最高 8 聲道內容,標準取樣率為 8 至 48 kHz | |||
| AAC ELD (增強型低延遲 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 | 是 | 是 | 9 種速率,從 6.60 kbit/s 到 23.85 kbit/s,取樣率為 16kHz | ||
| FLAC | Android 4.1 以上版本 | Android 3.1 以上版本 |
• FLAC (.flac) • MPEG-4 (.mp4、.m4a,Android 10 以上版本) • Matroska (.mkv) |
單聲道/立體聲 (不支援多聲道)。取樣率最高可達 48 kHz (但建議在輸出為 44.1 kHz 的裝置上使用 44.1 kHz,因為 48 至 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-320Kbps 固定位元率 (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 (速率上限為硬體限制)。原始 PCM 錄音的取樣率為 8000、16000 和 44100 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 基準設定檔 (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 設定檔等級 3,Android TV 為 Main 設定檔等級 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 媒體框架影片編碼設定檔和參數。這些建議也適用於 Main Profile 轉碼器,但該轉碼器僅適用於 Android 6.0 以上版本。
| SD (畫質較差) | SD (高畫質) | HD 720p (不適用於所有裝置) | |
|---|---|---|---|
| 影片解析度 | 176 x 144 像素 | 480 x 360 像素 | 1280 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 (不適用於所有裝置) | HD 1080p (所有裝置均不適用) | |
|---|---|---|---|---|
| 影片解析度 | 320 x 180 像素 | 640 x 360 像素 | 1280 x 720 像素 | 1920 x 1080 像素 |
| 影片影格率 | 30 fps | 30 fps | 30 fps | 30 fps |
| 視訊位元率 | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
影片解碼建議
裝置實作必須支援透過標準 Android API,在同一串流中即時動態切換視訊解析度和影格率,適用於所有 VP8、VP9、H.264 和 H.265 編碼器,且最高可達裝置上各編碼器支援的最高解析度。
支援 Dolby Vision 解碼器的實作項目必須遵循下列規範:
- 提供支援 Dolby Vision 的擷取器。
- 在裝置螢幕或標準視訊輸出埠 (例如 HDMI) 上正確顯示 Dolby Vision 內容。
- 將回溯相容基礎層的曲目索引 (如有) 設為與合併的 Dolby Vision 層曲目索引相同。
影片串流規定
如果是透過 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 以上版本 | 裝置為選用項目。請參閱 ImageDecoder.isMimeTypeSupported("image/heif"),瞭解是否支援 8 位元。如要解碼 10 位元視訊,必須使用選用的 HEVC Main10 設定檔。 |
HEIF (.heic;.heif) |
| AVIF (基準設定檔) |
Android 14 以上版本 (透過 MediaCodec;不在 Bitmap.compress 中)
|
Android 12 以上版本 | Android 12 以上版本支援 8 位元解碼。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 之前的版本不支援
注意:Android 3.1 之前的版本不支援 HTTPS。
HDR 影片格式
原始設備製造商可透過 Android HDR 架構啟用任何 HDR 格式,滿足 HDR 格式的核心需求:10 位元緩衝區、中繼資料 (靜態、動態和無)、傳輸函式和色彩空間處理。
為確保開發人員體驗一致,並解決主要 HDR 用途,我們要求原始設備製造商在支援 HDR 的裝置上支援幾種基本格式:
- 如要播放專業內容 (例如串流電影),則必須使用 HDR10。
- 對於使用者原創內容的擷取和播放,我們要求使用 HLG10,確保 Android 裝置提供一致的體驗。
加入 HDR 支援功能的原始設備製造商必須支援這些格式,但也可以支援其他格式,例如 HDR10+ 或 Dolby Vision。
| 格式 | 轉移函式 | 中繼資料 | 轉碼器 | 位元深度 |
|---|---|---|---|---|
| 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 的裝置 (僅支援 PQ,不支援 HLG): 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 色調對應 |
標準動態範圍 |