概述:
该文档介绍了Android平台可以支持的媒体编解码, 容器和网络协议. 作为一个APP开发者, 我们可以自由的使用任何Android设备上的媒体编解码器, 包括那些Android提供的和设备指定的. 但是使用设备无关的媒体编码配置文件是最好的做法.
支持的网络协议:
Android可以支持下列网络协议用来播放音视频:
RTSP(RTP,SDP).
HTTP/HTTPS 渐进式数据流
HTTP/HTTPS 直播流, 包括MPEG-2 TS媒体文件, Protocolversion 3(Android 4.0及以上), Protocol version2(Android3.x), Android3.0以前不支持.
Android3.1之前不支持HTTPS.
核心媒体格式:
下表描述了Android平台可以支持的媒体格式. 有些移动设备可能会支持额外的媒体格式或者文件格式. 媒体编解码不保证在所有的Android平台版本都可以支持, 会在表中注明.
类型 | 格式 | 编码 | 解码 | 详情 | 支持的文件类型 |
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) | |
Opus |
| Android 5.0+ |
| Matroska (.mkv) | |
Image | JPEG |
|
|
| 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+ |
|
| • 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+) | |
H.265 HEVC |
| Android 5.0+ |
| • MPEG-4 (.mp4) | |
MPEG-4 SP |
|
|
| • 3GPP (.3gp) | |
VP8 | Android 4.3+ | Android 2.3.3+ |
| • WebM (.webm) • Matroska (.mkv, Android 4.0+) | |
VP9 |
| Android 4.4+ |
| • WebM (.webm) • Matroska (.mkv, Android 4.0+) |
视频编码建议:
下表列出了Android媒体框架在H.264BP编解码中可以支持的视频编码配置文件和参数.
| SD(Low quality) | SD(High quality) | HD 720p(N/A on all device) |
Video分辨率 | 176x144px | 480x360px | 1280x720px |
Video帧率 | 12fps | 30fps | 30fps |
Video比特率 | 56Kbps | 500Kbps | 2Mbps |
Audio编解码格式 | AAC-LC | AAC-LC | AAC-LC |
Audio通道 | 1(mono) | 2(stereo) | 2(stereo) |
Audio比特率 | 24Kbps | 128Kbps | 192Kbps |
下表列出了可以支持的VP8视频编码参数:
| SD(Low quality) | SD(High quality) | HD 720p(N/A on all devices) | HD 1080p(N/A on all devices) |
Video分辨率 | 320x180px | 640x360px | 1280x720px | 1920x1080px |
Video帧率 | 30fps | 30fps | 30fps | 30fps |
Video比特率 | 800Kbps | 2Mbps | 4Mbps | 10Mbps |
除了这些编码参数建议之外, 一个设备的可用的视频记录配置(video recording profiles)可以作为媒体播放能力的代理. 这些配置文件可以使用CamcorderProfile类进行检查, 该类在API 8及以上可用.
对于通过HTTP或者RTSP传输的视频流, 有这些额外的要求:
1. 对于3GPP和MPEG-4容器, moov atom必须先于任何mdat atoms, 但是必须在ftyp atom后面.
2. 对于3GPP, MPEG-4和WebM容器, 音频和视频采样率相对于相同的时移可以不超过500KB. 为了尽量减少这种音视频的偏移, 可以考虑使用更小的音视频块.
参考: https://developer.android.com/guide/appendix/media-formats.html