支持的媒体格式

本文档介绍了 Android 平台提供的媒体编解码器、容器和网络协议支持。

下表介绍了 Android 平台内置的媒体格式支持。“是”表示该格式适用于搭载所有 Android 版本的手持设备和平板电脑。 如果指定了特定的 Android 平台,则格式适用于搭载相应版本及所有更高版本的手机和平板电脑。早期版本中或许也可以使用该格式,但不保证一定如此。在手机和平板电脑以外的外形规格上,对媒体格式的支持可能有所不同。

请注意,特定移动设备可能支持这些表中未列出的其他格式或文件类型。此外,如果您直接使用 MediaCodec,则可以访问任何可用的媒体格式,而不考虑支持的文件类型和容器格式。

音频支持

格式 编码器 解码器 具体说明 文件类型
容器格式
AAC LC 支持单声道/立体声/5.0/5.1 内容,标准采样率为 8-48 kHz。 • 3GPP (.3gp)
• MPEG-4(.mp4、.m4a)
• ADTS 原始 AAC(.aac,在 Android 3.1 及更高版本中解码,在 Android 4.0 及更高版本中编码,不支持 ADIF)
• MPEG-TS(.ts、不可查找、Android 3.0 及更高版本)
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 4.75-12.2 kbps,采样率为 8 kHz • 3GPP (.3gp)
• AMR (.amr)
AMR-WB 有 9 个比特率(介于 6.60-23.85 kbit/s 之间)可供选择,采样率为 16 kHz
FLAC Android 4.1 及更高版本 Android 3.1 及更高版本 单声道/立体声(非多声道)。采样率最高可达 48 kHz(但对于输出为 44.1 kHz 的设备,建议最高不超过 44.1 kHz,因为 48-44.1 kHz 的降采样器不包含低通滤波器)。建议使用 16 位;对于 24 位,不会应用任何抖动。 • FLAC (.flac)
• MPEG-4(.mp4、.m4a、Android 10 及更高版本)
MIDI   MIDI 类型 0 和 1。DLS 版本 1 和 2。XMF 和 Mobile XMF。支持铃声格式 RTTTL/RTX、OTA 和 iMelody • 类型 0 和 1(.mid、.xmf、.mxmf)
• RTTTL/RTX(.rtttl、.rtx)
• OTA (.ota)
• iMelody (.imy)
MP3   单声道/立体声 8-320 Kbps 恒定 (CBR) 或可变比特率 (VBR) • MP3 (.mp3)
• MPEG-4(.mp4、.m4a、Android 10 及更高版本)
• Matroska(.mkv、Android 10 及更高版本)
Opus Android 10+ Android 5.0 及更高版本 • Ogg (.ogg)
• Matroska (.mkv)
PCM/WAVE Android 4.1 及更高版本 8 位和 16 位线性 PCM(比特率最高可达到硬件上限)。以 8000、16000 和 44100 Hz 录制原始 PCM 所需的采样率。 WAVE (.wav)
Vorbis     • Ogg (.ogg)
• Matroska(.mkv、Android 4.0 及更高版本)
• MPEG-4(.mp4、.m4a、Android 10 及更高版本)

视频支持

视频格式

格式 编码器 解码器 具体说明 文件类型
容器格式
H.263 对 H.263 的支持在 Android 7.0 及更高版本中并非必需 • 3GPP (.3gp)
• MPEG-4 (.mp4)
• Matroska (.mkv)
H.264 AVC
Baseline Profile (BP)
Android 3.0 及以上版本 • 3GPP (.3gp)
• MPEG-4 (.mp4)
• MPEG-TS(.ts,仅限 AAC 音频,不可查找,Android 3.0 及更高版本)
• Matroska (.mkv)
H.264 AVC
Main Profile (MP)
Android 6.0 及更高版本 解码器为必需项,编码器为推荐项。
H.265 HEVC Android 5.0 及更高版本 适用于移动设备的 Main Profile Level 3 和适用于 Android TV 的 Main Profile Level 4.1 • MPEG-4 (.mp4)
• Matroska (.mkv)
MPEG-4 SP     3GPP (.3gp)
VP8 Android 4.3 及更高版本 Android 2.3.3 及更高版本 只能在 Android 4.0 及更高版本中流式传输 WebM (.webm)
• Matroska(.mkv,Android 4.0 及更高版本)
VP9 Android 4.4 及更高版本 WebM (.webm)
• Matroska (.mkv)
AV1 Android 14 及更高版本 Android 10+ 从 Android 14 开始,必须使用编码器和解码器。 • MPEG-4 (.mp4)
• Matroska (.mkv)

视频编码建议

下表列出了推荐使用 H.264 Baseline Profile 编解码器进行播放的 Android 媒体框架视频编码配置文件和参数。相同的建议适用于 Main Profile 编解码器,该编解码器仅在 Android 6.0 及更高版本中可用。

  标清(低画质) 标清(高画质) 高清 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 媒体框架视频编码配置文件和参数。

  标清(低画质) 标清(高画质) 高清 720p(在所有设备上均不适用) 高清 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

视频解码建议

对于所有 VP8、VP9、H.264 和 H.265 编解码器,设备实现都必须支持通过标准 Android API 在同一视频串流内实时进行动态视频分辨率和帧速率切换,并且能够支持设备上每个编解码器所支持的最大分辨率。

支持杜比视界解码器的实现必须遵循以下准则:

  • 提供具有杜比视界功能的提取器。
  • 在设备屏幕或标准视频输出端口(例如(通过 HDMI 输出)。
  • 将向后兼容的基本层(如果存在)的轨道索引设置为与组合式杜比视界层的轨道索引相同。

视频流式传输要求

对于通过 HTTP 或 RTSP 流式传输的视频内容,还有一些其他要求:

  • 对于 3GPP 和 MPEG-4 容器,moov Atom 必须在任何 mdat Atom 之前,但必须在 ftyp Atom 之后。
  • 对于 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 之前的版本中不支持

注意:Android 3.1 之前的版本不支持 HTTPS。

HDR 视频格式

OEM 可以通过 Android HDR 架构启用他们选择的任何 HDR 格式。Android HDR 架构提供了 HDR 格式的核心需求:10 位缓冲区、元数据(静态、动态和无)、传递函数和颜色空间处理。

为了确保开发者的一致性并解决关键的 HDR 用例,我们要求 OEM 在支持 HDR 的设备上支持以下几种基本格式:

  • 如需播放专业内容(例如在线播放电影),我们要求采用 HDR10。
  • 对于用户生成的内容的捕获和播放,我们要求 HLG10 在各种 Android 设备上提供一致的体验。

添加 HDR 支持的 OEM 必须支持这些格式,但还可以支持其他格式,例如 HDR10+ 或杜比视界。

格式 传递函数 元数据 编解码器 位元深度
HLG10 HLG 暖通空调系统 10 位
HDR10 质量 静态 暖通空调系统 10 位
HDR10+ 质量 静态 暖通空调系统 10 位
杜比视界 8.4 HLG 动态 暖通空调系统 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