本文介绍媒体的编解码器、容器和Android平台所支持的网络协议。
作为一个应用程序的开发者,你可以免费使用在Android设备上有效的任何格式的媒体编解码器,包括由Android平台和设备特殊提供的编解码器。但是,最好的做法是使用设备无关的媒体编码配置文件。
以下是音视频播放所支持的网络协议:
RTSP(RTP、SDP)
HTTP/HTTPS实时流
HTTP/HTTPS Live Streaming草案协议:
只针对MPEG-2 TS流媒体媒体文件;
协议版本3(Android4.0以上)
协议版本2(Android3.x)
Android3.0以前不支持
注:在Android3.1之前不支持HTTPS。
下表介绍了Android平台内置的它所支持的媒体的格式。注意:任意给定的移动设备都可以提供这个列表中没有列出的另外的媒体格式的支持。
注:这些媒体的编解码并不保证在所有的Android平台上都是有效的,要注意括号中的注释---例如“(Android3.0+)”
表1.核心媒体格式和编解码支持
类型 |
格式/编解码器 |
编码器 |
解码器 |
详细 |
支持的文件类型/容器、格式 |
Audio |
AAC LC/LTP |
• |
• |
用标准的高达160kbps的位率和8到48kHZ的采样频率来任意组合的单声道/立体声内容。 |
• 3GPP (.3gp) |
HE-AACv1 (AAC+) |
|
• |
|||
HE-AACv2 (enhanced AAC+) |
|
• |
|||
AMR-NB |
• |
• |
用8kHz来采样的4.75到12.2kbps的位流 |
3GPP (.3gp) |
|
AMR-WB |
• |
• |
用16kHz来采样的6.6kbit/s到23.85kbit/s的位流 |
3GPP(.3gp) |
|
FLAC |
|
• (Android3.1+) |
单声道或立体声(没有多声道)。采样率上限到48kHz(推荐在设备上使用上限为44.1kHZ,因为48到44.1之间的采样率不包含低通滤波)。采样大小推荐使用16位,24位的采样大小适用于无抖动场合。 |
只有FLAC(.flac) |
|
MP3 |
|
• |
单声道或立体声 8-320Kbps固定(CBR)或可变(VBR)播放速率 |
MP3(.mp3) |
|
MIDI |
|
• |
MIDI类型0和1. DLS版本1和2. XMF和移动XMF。 支持铃声格式:RTTTL/RTX,OTA,iMelody |
1. 类型0和1(.mid,xmf,mxmf) 2. RTTTL/RTX(.rtttl,rtx) 3. OTA(.ota) 4. iMelody(.imy) |
|
Vorbis |
|
• |
|
1. Ogg(.ogg) 2. Matroska(.mkv,Android4.0+) |
|
PCM/WAVE |
|
• |
8位和16位PCM(采样率上限受硬件限制) |
WAVE(.wav) |
|
Image |
JPEG |
• |
• |
基本+实时 |
JPEG(.jpg) |
GIF |
|
• |
|
GIF(.gif) |
|
PNG |
• |
• |
|
PNG(.png) |
|
BMP |
|
• |
|
BMP(.bmp) |
|
WEBP |
• (Android4.0+) |
• (Android4.0+) |
|
WebP(.webp) |
|
Video |
H.263 |
• |
• |
|
1. 3GPP(.3gp) 2. MPEG-4(.mp4) |
H.264 AVC |
• (Android3.0+) |
• |
Baseline Profile(BP) |
1. 3GPP(.3gp) 2. MPEG-4(.mp4) 3. PEG-TS(.ts,只有AAC音频,不能寻址,Android3.0+) |
|
MPEG-4 SP |
|
• |
|
3GPP(.3gp) |
|
VP8 |
|
• (Android2.3.3+) |
只有在Android4.0以上才能够被流化 |
1. WebM(.webm) 2. Matroska(.mkv, Android4.0+) |
下表2列出了Android媒体框架做支持的视频编码的Profile和参数的示例。除了这些编码参数的建议,设备可用的视频录制Profile能够被用作媒体播放能力的代理。这些Profile能够使用API Level 8以后的CamcorderProfile类来检查。
表2.被支持的视频编码参数的示例
|
SD(低品质) |
SD(高品质) |
HD(不是所有设备都可用) |
Video codec |
H.264 Baseline Profile |
H.264 Baseline Profile |
H.264 Baseline Profile |
Video resolution |
176 x 144px |
480 x 360px |
1280 x 720px |
Video frame rate |
12fps |
30fps |
30fps |
Video bitrate |
56Kbps |
500Kbps |
2Mbps |
Audio codec |
AAC-LC |
AAC-LC |
AAC-LC |
Audio channels |
1(mono) |
2(stereo) |
2(stereo) |
Audio bitrate |
24Kbps |
128Kbps |
192Kbps |
对于HTTP或RTSP之上的被流化的视频内容,还有一些额外的需求:
对于3GPP和MPEG-4容器,moov原子必须先于任何mdat原子,而必须要让ftyp原子成功。
对于3GPP,MPEG-4和WebM容器,音视频采样所对应的相同时间偏移不能超过500KB的间隔。考虑在用较小音视频数据块进行交叉。