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 |