本文档描述了Android平台提供的媒体编解码器、容器和网络协议支持。
作为应用程序开发人员,您可以使用任何Android设备上可用的任何媒体编解码器,包括由Android平台提供的媒体编解码器和特定于设备的媒体编解码器。但是,最好使用与设备无关的媒体编码配置文件。
下表描述了安卓平台内置的媒体格式支持。
不能保证在所有Android平台版本上都可用的编解码器在括号中注明,例如:(Android 3.0+)。请 注意,任何给定的移动设备都可能支持表中未列出的其他格式或文件类型。
Android兼容性定义的第5节规定了设备必须支持的与Android 8.1兼容的媒体格式。
音频支持
格式/编码格式
编码器
解码器
详细
支持的文件类型和格式容器范围
AAC LC
•
•
支持单声道/立体声/5.0/5.1内容,标准采样率为8至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+)
•
支持立体声/5.0/5.1内容,标准采样率为8至48 kHz。
AAC ELD (enhanced low delay AAC)
• (Android 4.1+)
• (Android 4.1+)
支持标准采样率为16至48 kHz的单声道/立体声内容
AMR-NB
•
•
在8kHz下采样4.75至12.2 kbps
3GPP (.3gp)
AMR-WB
•
•
在16kHz时,采样率从6.60 kbit/s到23.85 kbit/s为9。
3GPP (.3gp)
FLAC
• (Android 4.1+)
• (Android 3.1+)
单声道/立体声(无多声道)。采样率高达48 kHz(但对于输出为44.1 kHz的设备,建议采样率高达44.1 kHz,因为48至44.1 kHz的下采样器不包括低通滤波器)。建议16位;24位不应用抖动。
FLAC (.flac) only
GSM
•
Android支持在电话设备上进行GSM解码
GSM(.gsm)
MIDI
•
MIDI类型0和1。DLS版本1和2。XMF和移动XMF。支持铃声格式rtttl/rtx、ota和imelody
• Type 0 and 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy)
MP3
•
单声道/立体声音质(CBR)8恒定或可变比特率(VBR)
MP3 (.mp3)
Opus
• (Android 5.0+)
Matroska (.mkv)
PCM/WAVE
• (Android 4.1+)
•
8位和16位线性PCM(速率达到硬件限制)。8000、16000和44100 Hz下原始PCM记录的采样率。
WAVE (.wav)
Vorbis
•
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+)
视频支持
格式/编码格式
编码器
解码器
详细说明
支持的文件类型/容器格式
H.263
•
•
在Android 7.0+中,对H.263的支持是可选的。
• 3GPP (.3gp) • MPEG-4 (.mp4)
H.264 AVC Baseline Profile (BP)
• (Android 3.0+)
•
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+)
H.264 AVC Main Profile (MP)
• (Android 6.0+)
•
需要解码器,建议使用编码器。
H.265 HEVC
• (Android 5.0+)
移动设备的主配置文件级别3和Android TV的主配置文件级别4.1
• MPEG-4 (.mp4)
MPEG-4 SP
•
3GPP (.3gp)
VP8
• (Android 4.3+)
• (Android 2.3.3+)
仅在Android 4.0及更高版本中可流式传输
• WebM (.webm) • Matroska (.mkv, Android 4.0+)
VP9
• (Android 4.4+)
• WebM (.webm) • Matroska (.mkv, Android 4.0+)
视频编码建议
下表列出了Android Media Framework视频编码配置文件和建议使用H.264基线配置文件编解码器播放的参数。同样的建议也适用于主配置文件编解码器,该编解码器仅在Android 6.0及更高版本中可用。
SD (低质量)
SD (高质量)
HD 720p (不适用于所有设备)
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
下表列出了建议使用VP8媒体编解码器播放的Android Media Framework视频编码配置文件和参数。
SD (低质量)
SD (高质量)
HD 720p (不适用于所有设备)
HD 1080p (不适用于所有设备)
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
视频解码建议
设备实现必须支持通过同一流中的标准Android API对所有VP8、VP9、H.264和H.265编解码器进行动态视频分辨率和帧速率切换,并实时达到设备上每个编解码器支持的最大分辨率。
支持杜比视觉解码器的实现必须遵循以下准则:
1.提供一个杜比视觉提取。
2.在设备屏幕或标准视频输出端口(如HDMI)上正确显示Dolby Vision内容。
3.将向后兼容基础层(如果存在)的跟踪索引设置为与组合的Dolby视觉层的跟踪索引相同。
视频流要求
1.对于通过HTTP或RTSP传输的视频内容,还有其他要求:
2.对于3gpp和mpeg-4容器,moov原子必须位于任何mdat原子之前,但必须继承ftyp原子。
3.对于3gpp、mpeg-4和webm容器,与同一时间偏移相对应的音频和视频采样间隔不得超过500 kb。要最小化这种音频/视频偏移,请考虑以较小的块大小交错存储音频和视频。
图片支持
格式/编码格式
编码器
解码器
详细说明
支持文件类型/容器格式
BMP
•
BMP (.bmp)
GIF
•
GIF (.gif)
JPEG
•
•
Base+progressive
JPEG (.jpg)
PNG
•
•
PNG (.png)
WebP
• (Android 4.0+) (Lossless, Transparency, Android 4.2.1+)
• (Android 4.0+) (Lossless, Transparency, Android 4.2.1+)
WebP (.webp)
HEIF
• (Android 8.0+)
HEIF (.heic; .heif)
网络协议
音频和视频播放支持以下网络协议:
——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。
本文来自翻译:Supported media formats