Ten dokument opisuje obsługę kodeków multimedialnych, kontenerów i protokołów sieciowych przez platformę Android.
Tabele poniżej opisują obsługę formatów mediów wbudowaną w platformę Android. TAK oznacza, że format jest dostępny na wszystkich wersjach Androida. Jeśli określona jest konkretna platforma Android, format jest dostępny dla tej wersji i wszystkich późniejszych wersji. Format może być również dostępny we wcześniejszych wersjach, ale nie jest to gwarantowane.
Uwaga: określone urządzenie przenośne może obsługiwać dodatkowe formaty lub typy plików, które nie są wymienione w tych tabelach. Ponadto, jeśli używasz MediaCodecdirectly, możesz uzyskać dostęp do każdego z dostępnych formatów multimedialnych, niezależnie od obsługiwanych typów plików i formatów kontenerów.
Obsługa audio
Format | Enkoder | Dekoder | Szczegóły | Typy plików Formaty kontenerów |
---|---|---|---|---|
AAC LC | YES | YES | Obsługa formatów mono/stereo/5.0/5.1 ze standardowymi częstotliwościami próbkowania od 8 do 48 kHz. | – 3GPP (.3gp) – MPEG-4 (.mp4, .m4a) – ADTS raw AAC (.aac, dekodowanie w Android 3.1+, kodowanie w Android 4.0+, ADIF nie obsługiwane) – MPEG-TS (.ts, not seekable, Android 3.0+) |
HE-AACv1 (AAC+) | Android 4.1+ | YES | ||
HE-AACv2 (enhanced AAC+) | YES | Wsparcie dla stereo/5.Zawartość 0/5.1 o standardowej częstotliwości próbkowania od 8 do 48 kHz. | ||
xHE-AAC | Android 9+ | Obsługa do 8-kanałowej zawartości o standardowej częstotliwości próbkowania od 8 do 48 kHz | ||
AAC ELD (enhanced low delay AAC) | Android 4.1+ | Android 4.1+ | Obsługa treści mono/stereo o standardowej częstotliwości próbkowania od 16 do 48 kHz | |
AMR-NB | YES | YES | 4.75 do 12,2 kbit/s próbkowane @ 8kHz | – 3GPP (.3gp) – AMR (.amr) |
AMR-WB | YES | YES | 9 od 6.60 kbit/s do 23.85 kbit/s próbkowane @ 16kHz | |
FLAC | Android 4.1+ | Android 3.1+ | Mono/Stereo (brak wielokanałowości). Częstotliwość próbkowania do 48 kHz (ale zaleca się do 44,1 kHz na urządzeniach z wyjściem 44,1 kHz, ponieważ sampler 48 na 44,1 kHz nie zawiera filtra dolnoprzepustowego). Zalecany 16-bitowy; brak ditheru dla 24-bitowego. | – FLAC (.flac) – MPEG-4 (.mp4, .m4a, Android 10+) |
MIDI | YES | MIDI Typ 0 i 1. DLS Wersja 1 i 2. XMF i Mobile XMF. Wsparcie dla formatów dzwonków RTTTL/RTX, OTA i iMelody | – Typ 0 i 1 (.mid, .xmf, .mxmf) – RTTTL/RTX (.rtttl, .rtx) – OTA (.ota) – iMelody (.imy) |
|
MP3 | YES | Mono/Stereo 8-320Kbps stała (CBR) lub zmienna bit-rate (VBR) | – MP3 (.mp3) – MPEG-4 (.mp4, .m4a, Android 10+) – Matroska (.mkv, Android 10+) |
|
Opus | Android 10+ | Android 5.0+ | – Ogg (.ogg) – Matroska (.mkv) |
|
PCM/WAVE | Android 4.1+ | YES | 8- i 16-bitowe liniowe PCM (szybkość do limitu sprzętowego). Samplingi dla surowych nagrań PCM przy 8000, 16000 i 44100 Hz. | WAVE (.wav) |
Vorbis | YES | – Ogg (.ogg) – Matroska (.mkv, Android 4.0+) – MPEG-4 (.mp4, .m4a, Android 10+) |
Wsparcie wideo
Formaty wideo
Format | Enkoder | Dekoder | Detale | Typy plików Formaty kontenerów |
---|---|---|---|---|
H.263 | Tak | Tak | Wsparcie dla H.263 jest opcjonalna w Android 7.0+ | – 3GPP (.3gp) – MPEG-4 (.mp4) – Matroska (.mkv) |
H.264 AVC Baseline Profile (BP) |
Android 3.0+ | YES | – 3GPP (.3gp) – MPEG-4 (.mp4) – MPEG-TS (.ts, tylko audio AAC, bez możliwości przeglądania, Android 3.0+) – Matroska (.mkv) |
|
H.264 AVC Main Profile (MP) |
Android 6.0+ | Tak | Dekoder jest wymagany, koder jest zalecany. | |
H.265 HEVC | Android 5.0+ | Main Profile Level 3 dla urządzeń mobilnych i Main Profile Level 4.1 dla Android TV | – MPEG-4 (.mp4) – Matroska (.mkv) |
|
MPEG-4 SP | YES | 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+) |
VP9 | Android 4.4+ | – WebM (.webm) – Matroska (.mkv) |
||
AV1 | Android 10+ | Dekoder jest opcjonalny. | – MPEG-4 (.mp4) – Matroska (.mkv) |
Zalecenia dotyczące kodowania wideo
W poniższej tabeli wymieniono profile i parametry kodowania wideo Android media framework zalecane do odtwarzania przy użyciu kodeka H.264 Baseline Profile. Te same zalecenia dotyczą kodeka Main Profile, który jest dostępny tylko w systemie Android 6.0 i nowszych.
SD (niska jakość) | SD (wysoka jakość) | HD 720p (nie dotyczy wszystkich urządzeń) urządzenia) | |
---|---|---|---|
Rozdzielczość wideo | 176 x 144 px | 480 x 360 px | 1280 x 720 px |
Rozdzielczość obrazu wideo | 12 fps | 30 fps | |
30 fps | |||
Bitrate wideo | 56 Kbps | 500 Kbps | 2 Mbps |
Kodek audio | AAC-LC | AAC-LC | AAC-LC |
Kanały audio | 1 (mono) | 2 (stereo) | |
Bitrate audio | 24 Kbps | 128 Kbps | 192 Kbps |
W poniższej tabeli wymieniono profile i parametry kodowania wideo Android Media Framework zalecane do odtwarzania przy użyciu kodeka VP8.
SD (niska jakość) | SD (wysoka jakość) | HD 720p (nie dotyczy wszystkich urządzeń) | HD 1080p (nie dotyczy wszystkich urządzeń) | |
---|---|---|---|---|
Rozdzielczość wideo | 320 x 180 px | 640 x 360 px | 1280 x 720 px | 1920 x 1080 px |
Rozdzielczość klatek wideo | 30 fps | 30 fps | 30 fps | 30 fps |
Bitrate wideo | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
.
Zalecenia dotyczące dekodowania wideo
Wdrożenia urządzeń muszą obsługiwać dynamiczne przełączanie rozdzielczości wideo i liczby klatek na sekundę poprzez standardowe API Androida w ramach tego samego strumienia dla wszystkich VP8, VP9, H.264, i H.265 kodeków w czasie rzeczywistym i do maksymalnej rozdzielczości obsługiwanej przez każdy kodek na urządzeniu.
Implementacje, które obsługują dekoder Dolby Vision muszą przestrzegać następujących wytycznych:
- Zapewnij ekstraktor obsługujący Dolby Vision.
- Właściwe wyświetlanie zawartości Dolby Vision na ekranie urządzenia lub na standardowym porcie wyjściowym wideo (np. HDMI).
- Ustaw indeks ścieżki warstwy podstawowej (jeśli jest obecna) zgodnej wstecz, aby był taki sam jak indeks ścieżki połączonej warstwy Dolby Vision.
Wymagania dotyczące przesyłania strumieniowego wideo
W przypadku treści wideo przesyłanych strumieniowo przez HTTP lub RTSP istnieją dodatkowe wymagania:
- W przypadku kontenerów 3GPP i MPEG-4 atom
moov
musi poprzedzać wszelkie atomymdat
, ale musi następować po atomieftyp
. - Dla kontenerów 3GPP, MPEG-4 i WebM, próbki audio i wideo odpowiadające temu samemu przesunięciu czasowemu nie mogą być oddalone od siebie o więcej niż 500 KB. Aby zminimalizować ten dryf audio/video, należy rozważyć interleaving audio i wideo w mniejszych rozmiarach kawałków.
Obsługa obrazów
Format | Enkoder | Dekoder | Szczegóły | Typy plików Formaty kontenerów |
---|---|---|---|---|
BMP | Tak | BMP (.bmp) | ||
GIF | YES | GIF (.gif) | ||
JPEG | YES | YES | Base+progressive | JPEG (.jpg) |
PNG | YES | YES | PNG (.png) | |
WebP | Android 4.0+ Bezstratny: Android 10+ Transparentność: Android 4.2.1+ |
Android 4.0+ Bezstratny: Android 4.2.1+ Przejrzystość: Android 4.2.1+ |
Kodowanie bezstratne można osiągnąć w systemie Android 10 przy użyciu jakości 100. | WebP (.webp) |
HEIF | Android 8.0+ | HEIF (.heic; .heif) |
Protokoły sieciowe
Do odtwarzania audio i wideo obsługiwane są następujące protokoły sieciowe:
- RTSP (RTP, SDP)
- HTTP/HTTPS progressive streaming
- HTTP/HTTPS live streaming draft protocol:
- Tylko pliki multimedialneMPEG-2 TS
- Protokół w wersji 3 Android 4.0 i wyżej
- Protokół w wersji 2 Android 3.x
- Nieobsługiwany przed Android 3.0
Uwaga: HTTPS nie jest obsługiwany przed Android 3.1.
.