Android支持的媒体格式
本文档描述Android平台支持的媒体编解码器,容器和网络协议。
作为一名应用程序开发者,你可以在任何基于Android的设备上(包括那些由Android平台提供的和指定的设备)随意使用任何可用的媒体编解码器。不管怎样,最好去练习与设备无关的媒体编码规范。
网络协议
以下网络协议支持音频和视频回放:
- RTSP (RTP, SDP)
- HTTP progressive streaming
- HTTP live streaming draft protocol (Android 3.0 及以上)
注意: HTTPS 协议目前还不支持。
主要媒体格式
下表描述了Android平台内建的媒体支持格式。请注意任何提供的移动设备可能对没有列在表格中的额外的格式或者文件类型提供支持。
注意: 不能保证在所有Android平台上可用的媒体编解码器已经相应地在括号内进行标注。例如:"(Android 3.0+)".
表格 1. 主要媒体格式和编解码器支持
类型 | 格式/编解码器 | 编码器 | 解码器 | 详细 | 支持文件格式/封装格式 |
---|---|---|---|---|---|
音频 | AAC LC/LTP | • | • | Mono/Stereo content in any combination of standard bit rates up to 160 kbps and sampling rates from 8 to 48kHz | 3GPP (.3gp), and MPEG-4 (.mp4, .m4a). ADTS raw AAC (.aac, decode only, ADIF not supported, Android 3.1+). |
HE-AACv1 (AAC+) | • | ||||
HE-AACv2 (enhanced AAC+) | • | ||||
AMR-NB | • | • | 4.75 to 12.2 kbps sampled @ 8kHz | 3GPP (.3gp) | |
AMR-WB | • | • | 9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz | 3GPP (.3gp) | |
FLAC | • (Android 3.1+) |
Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1 kHz is recommended on devices with 44.1 kHz output, as the 48 to 44.1 kHz downsampler does not include a low-pass filter). 16-bit recommended; no dither applied for 24-bit. | FLAC (.flac) only | ||
MP3 | • | Mono/Stereo 8-320Kbps constant (CBR) or variable bit-rate (VBR) | MP3 (.mp3) | ||
MIDI | • | MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody | Type 0 and 1 (.mid, .xmf, .mxmf). Also RTTTL/RTX (.rtttl, .rtx), OTA (.ota), and iMelody (.imy) | ||
Ogg Vorbis | • | Ogg (.ogg) | |||
PCM/WAVE | • | 8- and 16-bit linear PCM (rates up to limit of hardware) | WAVE (.wav) | ||
图像 | JPEG | • | • | Base+progressive | JPEG (.jpg) |
GIF | • | GIF (.gif) | |||
PNG | • | • | PNG (.png) | ||
BMP | • | BMP (.bmp) | |||
视频 | H.263 | • | • | 3GPP (.3gp) and MPEG-4 (.mp4) | |
H.264 AVC | • (Android 3.0+) |
• | Baseline Profile (BP) | 3GPP (.3gp) and MPEG-4 (.mp4). MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+) | |
MPEG-4 SP | • | 3GPP (.3gp) | |||
VP8 | • (Android 2.3.3+) |
WebM (.webm) |
视频编码建议
下面的表格2,列出了Android媒体框架支持回放的视频编码资料和参数。另外,除了这些推荐的编码参数, 一个支持视频录制的设备可以被用作一个具有媒体回放能力的代理。这些配置可以使用 CamcorderProfile
类(API level 8及以上可用)来检查。
表格 2. 被支持的视频编解码参数示例
低品质 | 高品质 | |
---|---|---|
视频编解码器 | H.264 Baseline Profile | H.264 Baseline Profile |
视频分辨率 | 176 x 144 px | 480 x 360 px |
视频帧率 | 12 fps | 30 fps |
视频比特率 | 56 Kbps | 500 Kbps |
音频编解码器 | AAC-LC | AAC-LC |
音频通道 | 1 (mono) | 2 (stereo) |
音频比特率 | 24 Kbps | 128 Kbps |
对于通过HTTP或者RTSP协议传递的视频流,还有一些额外的要求:
- 对于3GPP 和 MPEG-4 封装格式,
moov
原子必须在任何mdat
原子之前。 - 对于3GPP,MPEG-4, 和 WebM 封装格式,对应同一时间偏移量的音频和视频采样数据不能超过500KB每块。考虑到在更小块数据中的交叉音频和视频,请尽量缩小音频/视频偏差。