Ten dokument opisuje obsługę kodeków multimedialnych, kontenerów i protokołów sieciowych na platformie Android.
Tabele poniżej opisują formaty multimediów obsługiwane przez platformę Android. Odpowiedź „TAK” oznacza, że format jest dostępny na urządzeniach przenośnych i tabletach z wszystkimi wersjami Androida. Jeśli określono konkretną platformę Androida, format jest dostępny na telefonach i tabletach z tą wersją oraz we wszystkich nowszych wersjach. Format może być też dostępny w wersjach wcześniejszych, ale nie jest to gwarantowane. W przypadku formatów innych niż telefony komórkowe i tablety obsługa formatów multimediów może się różnić.
Pamiętaj, że dane urządzenie mobilne może obsługiwać dodatkowe formaty lub typy plików, które nie są wymienione w tych tabelach. Jeśli dodatkowo używasz MediaCodec bezpośrednio, możesz uzyskać dostęp do dowolnego z dostępnych formatów multimediów niezależnie od obsługiwanych typów plików i formatów kontenerów.
Wsparcie audio
| Format | za pomocą kodera. | Dekoder | Typy plików Formaty kontenerów | Szczegóły | |
|---|---|---|---|---|---|
| Ekstraktor | Muxer | ||||
| AAC LC | TAK | TAK | • 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF nieobsługiwany) • MPEG-TS (.ts, nie można przeskakiwać, Android 3.0+) | • 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF nieobsługiwany) • MPEG-TS (niepewne) (.ts, nieobsługiwane przeskakiwanie, Android 3.0 lub nowszy) | Obsługa treści mono/stereo/5.0/5.1 z standardową częstotliwością próbkowania od 8 do 48 kHz. | 
| HE-AACv1 (AAC+) | Android 4.1 lub nowszy | TAK | |||
| HE-AACv2 (ulepszone AAC+) | TAK | Obsługa treści stereo/5.0/5.1 ze standardową częstotliwością próbkowania od 8 do 48 kHz. | |||
| xHE-AAC | Android 9 lub nowszy | Obsługa treści z maksymalnie 8 kanałami przy standardowych częstotliwościach próbkowania od 8 do 48 kHz | |||
| AAC ELD (ulepszona wersja AAC o małym opóźnieniu) | Android 4.1 lub nowszy | Android 4.1 lub nowszy | Obsługa treści mono lub stereo ze standardową częstotliwością próbkowania od 16 do 48 kHz | ||
| AMR-NB | TAK | TAK | • 3GPP (.3gp) • AMR (.amr) | • 3GPP (.3gp) • AMR (.amr) | 4,75–12,2 kb/s próbkowane z częstotliwością 8 kHz | 
| AMR-WB | TAK | TAK | 9 szybkości od 6,60 kb/s do 23,85 kb/s z próbkowaniem 16 kHz | ||
| FLAC | Android 4.1 lub nowszy | Android 3.1 lub nowszy | • FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10 lub nowszy) • Matroska (.mkv) | Mono/Stereo (bez kanałów dodatkowych). Częstotliwości próbkowania do 48 kHz (ale na urządzeniach z wyjściami 44,1 kHz zalecamy stosowanie częstotliwości do 44,1 kHz, ponieważ konwerter w dół z 48 kHz na 44,1 kHz nie zawiera filtra dolnoprzepustowego). Zalecamy 16-bitową rozdzielczość. W przypadku 24-bitowej rozdzielczości nie stosuje się ditheringu. | |
| MIDI | TAK | • Typ 0 i 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) | Typ MIDI 0 i 1. DLS w wersji 1 i 2. XMF i Mobile XMF. Obsługa formatów dzwonków RTTTL/RTX, OTA i iMelody | ||
| MP3 | TAK | • MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10 lub nowszy) • Matroska (.mkv, Android 10 lub nowszy) | Mono/Stereo 8–320 kb/s CBR lub VBR | ||
| Opus | Android 10 lub nowszy | Android 5.0 lub nowszy | • Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) | • Ogg (.ogg) • WebM (.webm) | |
| PCM/WAVE | Android 4.1 lub nowszy | TAK | WAVE (.wav) | 8- i 16-bitowy PCM liniowy (szybkość do limitu sprzętowego). Częstotliwości próbkowania dla nieprzetworzonych nagrań PCM o częstotliwości 8000, 16000 i 44100 Hz. | |
| Vorbis | TAK | • Ogg (.ogg) • Matroska (.mkv, Android 4.0 lub nowszy) • MPEG-4 (.mp4, .m4a, Android 10 lub nowszy) | • WebM (.webm) | ||
Obsługa filmów
Formaty wideo
| Format | za pomocą kodera. | Dekoder | Typy plików Formaty kontenerów | Szczegóły | |
|---|---|---|---|---|---|
| Ekstraktor | Muxer | ||||
| H.263 | TAK | TAK | • 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) | • 3GPP (.3gp) • MPEG-4 (.mp4) | Obsługa H.263 jest opcjonalna w Androidzie 7.0 i nowszych | 
| H.264 AVC profil podstawowy (BP) | Android 3.0+ | TAK | • 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, tylko dźwięk AAC, brak możliwości przeskakiwania, Android 3.0+) • Matroska (.mkv) | • 3GPP (.3gp) • MPEG-4 (.mp4) | |
| H.264 AVC Profil główny (MP) | Android 6.0 lub nowszy | TAK | Dekoder jest wymagany, a koder jest zalecany. | ||
| H.265 HEVC | Android 5.0 lub nowszy | • MPEG-4 (.mp4) • Matroska (.mkv) | • MPEG-4 (.mp4) | Profil główny na poziomie 3 na urządzeniach mobilnych i profil główny na poziomie 4.1 na Androidzie TV | |
| MPEG-4 SP | TAK | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 lub nowszy | Android 2.3.3 lub nowszy | • WebM (.webm) • Matroska (.mkv, Android 4.0 lub nowszy) | • WebM (.webm) | Możliwość przesyłania strumieniowego tylko w Androidzie 4.0 lub nowszym | 
| VP9 | Android 4.4 lub nowszy | • WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) | • WebM (.webm) | ||
| AV1 | Android 14 lub nowszy | Android 10 lub nowszy | • MPEG-4 (.mp4) • Matroska (.mkv) | • MPEG-4 (.mp4) | Koder i dekoder są obowiązkowe od wersji Android 14. | 
| APV | Android 16 lub nowszy | Android 16 lub nowszy | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | Koder i dekoder są obowiązkowe od Androida 16. | 
Rekomendacje dotyczące kodowania filmów
Tabela poniżej zawiera listę profili i parametrów kodowania wideo w ramach frameworku multimediów na Androida zalecanych do odtwarzania za pomocą profilu podstawowego kodeka H.264. Te same zalecenia dotyczą profilu głównego, który jest dostępny tylko w Androidzie 6.0 i nowszych.
| SD (niska jakość) | SD (wysoka jakość) | HD 720p (nie dotyczy na wszystkich urządzeniach) | |
|---|---|---|---|
| Rozdzielczość wideo | 176 x 144 pikseli | 480 x 360 pikseli | 1280 x 720 pikseli | 
| liczba klatek na sekundę, | 12 kl./s | 30 klatek/s | 30 klatek/s | 
| Szybkość transmisji wideo | 56 kb/s | 500 Kb/s | 2 Mb/s | 
| Kodek audio | AAC-LC | AAC-LC | AAC-LC | 
| Kanały audio | 1 (mono) | 2 (stereo) | 2 (stereo) | 
| Szybkość transmisji dźwięku | 24 Kb/s | 128 Kb/s | 192 kb/s | 
Tabela poniżej zawiera profile i parametry kodowania wideo w ramach platformy multimedialnej Androida zalecane do odtwarzania za pomocą kodeka multimedialnego VP8.
| SD (niska jakość) | SD (wysoka jakość) | HD 720p (nie dotyczy na wszystkich urządzeniach) | HD 1080p (nie dotyczy wszystkich urządzeń) | |
|---|---|---|---|---|
| Rozdzielczość wideo | 320 x 180 pikseli | 640 x 360 pikseli | 1280 x 720 pikseli | 1920 x 1080 piks. | 
| liczba klatek na sekundę, | 30 klatek/s | 30 klatek/s | 30 klatek/s | 30 klatek/s | 
| Szybkość transmisji wideo | 800 Kb/s | 2 Mb/s | 4 Mb/s | 10 Mb/s | 
Rekomendacje dotyczące dekodowania filmów
Implementacje urządzeń muszą obsługiwać dynamiczną zmianę rozdzielczości i częstotliwości klatek za pomocą standardowych interfejsów API Androida w ramach tego samego strumienia dla wszystkich kodeków VP8, VP9, H.264 i H.265 w czasie rzeczywistym oraz do maksymalnej rozdzielczości obsługiwanej przez każdy z tych kodeków na urządzeniu.
Implementacje obsługujące dekoder Dolby Vision muszą spełniać te wytyczne:
- Podaj narzędzie do wyodrębniania danych obsługujące Dolby Vision.
- Prawidłowo wyświetlać treści Dolby Vision na ekranie urządzenia lub na standardowym wyjściu wideo (np. HDMI).
- Ustaw indeks ścieżki warstw podstawowych zgodnych wstecznie (jeśli są obecne) tak, aby był taki sam jak indeks ścieżki połączonej warstwy Dolby Vision.
Wymagania dotyczące strumieniowego przesyłania filmów
W przypadku treści wideo przesyłanych strumieniowo przez HTTP lub RTSP obowiązują dodatkowe wymagania:
- W przypadku kontenerów 3GPP i MPEG-4 atom moovmusi poprzedzać dowolny atommdat, ale musi być poprzedzony atomemftyp.
- W przypadku kontenerów 3GPP, MPEG-4 i WebM próbki audio i wideo odpowiadające temu samemu przesunięciu czasowym mogą różnić się o nie więcej niż 500 KB. Aby zminimalizować różnice między dźwiękiem a obrazem, rozważ przeplatanie dźwięku i obrazu w mniejszych fragmentach.
Obsługa obrazu
| Format | za pomocą kodera. | Dekoder | Szczegóły | Typy plików Formaty kontenerów | 
|---|---|---|---|---|
| BMP | TAK | BMP (.bmp), | ||
| GIF | TAK | GIF (.gif) | ||
| JPEG | TAK | TAK | Podstawowy + progresywny | JPEG (.jpg) | 
| PNG | TAK | TAK | PNG (.png) | |
| WebP | Android 4.0 lub nowszy Bezstratna kompresja: Android 10 lub nowszy Przezroczystość: Android 4.2.1 lub nowszy | Android 4.0 lub nowszy Bezstratne: Android 4.2.1 lub nowszy Przejrzystość: Android 4.2.1 lub nowszy | Bezstratne kodowanie można uzyskać na Androidzie 10, używając jakości 100. | WebP (.webp), | 
| HEIF | Android 8.0+ | HEIF (.heic; .heif) | ||
| AVIF (profil podstawowy) | Android 14 lub nowszy | Android 14 lub nowszy | Koder i dekoder są obowiązkowe od wersji Android 14. | AVIF (.avif) | 
Protokoły sieciowe
W przypadku odtwarzania dźwięku i obrazu obsługiwane są te protokoły sieciowe:
- RTSP (RTP, SDP)
- strumieniowe przesyłanie danych w formacie HTTP/HTTPS,
- Transmisja na żywo przez HTTP/HTTPS protokółu draft: - tylko pliki multimedialne MPEG-2 TS;
- Wersja protokołu 3. Android 4.0 lub nowszy
- Wersja protokołu 2, Android 3.x
- Nieobsługiwane w wersjach starszych niż Android 3.0
 
Uwaga: HTTPS nie jest obsługiwany w wersjach Androida starszych niż 3.1.
Formaty filmów HDR
Producenci OEM mogą włączyć dowolny format HDR za pomocą architektury HDR Androida, która zapewnia podstawowe potrzeby formatów HDR: 10-bitowe bufory, metadane (statyczne, dynamiczne i brak), funkcję przenoszenia i obsługę przestrzeni barw.
Aby zapewnić spójność dla deweloperów i uwzględnić kluczowe przypadki użycia HDR, wymagamy od producentów OEM obsługi kilku formatów podstawowych na urządzeniach obsługujących HDR:
- W przypadku odtwarzania profesjonalnych treści, takich jak filmy strumieniowe, wymagamy HDR10.
- W przypadku rejestrowania i odtwarzania treści generowanych przez użytkowników wymagamy HLG10, aby zapewnić spójne działanie na wszystkich urządzeniach z Androidem.
Producenci OEM, którzy dodają obsługę HDR, muszą obsługiwać te formaty, ale mogą też obsługiwać dodatkowe formaty, takie jak HDR10+ lub Dolby Vision.
| Format | Funkcja przenoszenia | Metadane | Kodek | Głębia bitowa | 
|---|---|---|---|---|
| HLG10 | HLG | Nie | HEVC | 10-bitowy | 
| HDR10 | PQ | Statyczny | HEVC | 10-bitowy | 
| HDR10+ | PQ | Statyczny | HEVC | 10-bitowy | 
| Dolby Vision 8.4 | HLG | Dynamiczne | HEVC | 10-bitowy | 
Rekomendacje dotyczące formatu
| Format nagrywania | Format przesyłania | Format dostarczania | 
| HLG | Wsparcie backendu aplikacji HDR HLG | Urządzenia obsługujące HDR (HLG): HLG Urządzenia obsługujące HDR (bez obsługi HLG, tylko PQ): SDR (mapa tonów z HLG na SDR na zapleczu) Urządzenia, które nie obsługują HDR: SDR (mapowanie tonacji z HLG na SDR na zapleczu) | 
Przypadek 2. Natywne przechwytywanie za pomocą aparatu lub importowanie z galerii użytkownika (back-end aplikacji obsługuje HDR)
| Format nagrywania | Format przesyłania | Format dostarczania | 
| HLG | HLG | Taki sam jak w przypadku rejestrowania w aplikacji | 
| HDR10+ | HLG Przekształcanie mapy tonalnej z HDR10+ (PQ) na HLG przed przesłaniem za pomocą interfejsów API dotyczących przekształcania | Taki sam jak w przypadku rejestrowania w aplikacji | 
| DV8.4 | HLG (DV8.4 używa HLG, a bitstream będzie działać jak HLG, więc nie jest wymagane mapowanie tonów) | Taki sam jak w przypadku rejestrowania w aplikacji | 
Przypadek użycia 3. Backend aplikacji nie obsługuje HDR
| Format nagrywania | Format przesyłania | Format dostarczania | 
| dowolny format, | SDR mapowanie tonacji z HLG na SDR przed przesłaniem za pomocą interfejsów API transformera; | SDR | 
