概述:
該文檔介紹了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