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
moovmusi 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.
.