支持的媒体格式
这篇文档描述了android平台提供的媒体编解码器,容器和网络协议支持。
作为一个应用程序开发者,你可以自由使用任何一个android设备支持的任意媒体编解码器,包括android平台提供的那些和设备特有的那些。但是,最好的使用与设备无关的媒体编码配置来实现。
网络协议
音频和视频播放支持以下网络协议:
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
内核媒体格式
下表描述了固定在Android平台内的媒体格式支持情况。注意任意一个给定的移动设备都可能提供没有列在下表中的额外的一些格式或文件类型的支持。
注意:应该相应注意到在括号中那些在所有Android平台版本中都授权不可用的媒体编解码器,如"(Android 3.0+)"。
表1,内核媒体格式和编解码器的支持
Type | Format / Codec | Encoder | Decoder | Details | Supported File Type(s) / Container Formats |
---|---|---|---|---|---|
Audio | AAC LC | • | • | Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz. | • 3GPP (.3gp) • MPEG-4 (.mp4, .m4a) • ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported) • MPEG-TS (.ts, not seekable, Android 3.0+) |
HE-AACv1 (AAC+) | • (Android 4.1+) | • | |||
HE-AACv2 (enhanced AAC+) | • | Support for stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz. | |||
AAC ELD (enhanced low delay AAC) | • (Android 4.1+) | • (Android 4.1+) | Support for mono/stereo content with standard sampling rates from 16 to 48 kHz | ||
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) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) | ||
Vorbis | • | • Ogg (.ogg) • Matroska (.mkv, Android 4.0+) | |||
PCM/WAVE | • (Android 4.1+) | • | 8- and 16-bit linear PCM (rates up to limit of hardware). Sampling rates for raw PCM recordings at 8000, 16000 and 44100 Hz. | WAVE (.wav) | |
Image | JPEG | • | • | Base+progressive | JPEG (.jpg) |
GIF | • | GIF (.gif) | |||
PNG | • | • | PNG (.png) | ||
BMP | • | BMP (.bmp) | |||
WebP | • (Android 4.0+) (Lossless, Transparency, Android 4.2.1+) | • (Android 4.0+) (Lossless, Transparency, Android 4.2.1+) | WebP (.webp) | ||
Video | H.263 | • | • | • 3GPP (.3gp) • MPEG-4 (.mp4) | |
H.264 AVC | • (Android 3.0+) | • | Baseline Profile (BP) | • 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+) | |
MPEG-4 SP | • | 3GPP (.3gp) | |||
VP8 | • (Android 4.3+) | • (Android 2.3.3+) | Streamable only in Android 4.0 and above | • WebM (.webm) • Matroska (.mkv, Android 4.0+) |
视频编码推荐
下面表2,列出了视频编码配置文件,以及以H.264基本档次编解码实现播放的Android媒体框架所支持的参数。而表3列出了以VP8媒体编解码实现播放的框架支持参数的示例。
出了推荐的这些编码参数,根据配置一个设备支持的视频类型可以判断媒体播放的性能。使用CamcorderProfile类检查这些配置,该类在从API水平8就可用了。
表2 以H.264基本档次编解码支持视频编码的参数示例
SD (Low quality) | SD (High quality) | HD 720p (N/A on all devices) | |
---|---|---|---|
Video resolution | 176 x 144 px | 480 x 360 px | 1280 x 720 px |
Video frame rate | 12 fps | 30 fps | 30 fps |
Video bitrate | 56 Kbps | 500 Kbps | 2 Mbps |
Audio codec | AAC-LC | AAC-LC | AAC-LC |
Audio channels | 1 (mono) | 2 (stereo) | 2 (stereo) |
Audio bitrate | 24 Kbps | 128 Kbps | 192 Kbps |
SD (Low quality) | SD (High quality) | HD 720p (N/A on all devices) | HD 1080p (N/A on all devices) | |
---|---|---|---|---|
Video resolution | 320 x 180 px | 640 x 360 px | 1280 x 720 px | 1920 x 1080 px |
Video frame rate | 30 fps | 30 fps | 30 fps | 30 fps |
Video bitrate | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
对于3GPP和MPEG-4容器来说,moov原子必须领先于任意mdat原子,但在ftyp原子之后。
对于3GPP、MPEG-4以及WebM容器来说,对应相同的时间补偿的音频和视频示例可能相差不会超过500KB 。为了缩小音频/视频的漂移,考虑采用音频和视频以一小块大小来交替传输。
<add by myself: moov 部分是视频的元数据信息和mdat部分是视频的内容信息 ——the end>