Ten dokument opisuje obsługę kodeków multimedialnych, kontenerów i protokołów sieciowych zapewnianą przez platformę Android.
Tabele poniżej opisują obsługę formatów multimediów wbudowaną w platformę Android. ODPOWIEDŹ „TAK” oznacza, że format jest dostępny na urządzeniach przenośnych i tabletach z dowolną wersją Androida. Jeśli określono konkretną platformę Androida, format jest dostępny na telefonach i tabletach z tą wersją i wszystkimi nowszymi. Format może być też dostępny w starszych wersjach, ale nie jest to gwarantowane. Na urządzeniach innych niż telefony i tablety obsługa formatów multimediów może się różnić.
Pamiętaj, że niektóre urządzenia mobilne mogą obsługiwać dodatkowe formaty lub typy plików, które nie są wymienione w tych tabelach. Jeśli korzystasz bezpośrednio z interfejsu MediaCodec, 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 i formaty kontenerów | Szczegóły | |
|---|---|---|---|---|---|
| Ekstraktor | Muxer | ||||
| AAC LC | TAK | TAK |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF not supported) • MPEG-TS (.ts, not seekable, Android 3.0+) |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF nieobsługiwany) • MPEG-TS (not sure) (.ts, not seekable, Android 3.0+) |
Obsługa treści mono/stereo/5.0/5.1 o standardowych częstotliwościach próbkowania od 8 do 48 kHz. |
| HE-AACv1 (AAC+) | Android 4.1 lub nowszy | TAK | |||
| HE-AACv2 (ulepszony AAC+) | TAK | Obsługa treści stereo/5.0/5.1 o standardowych częstotliwościach próbkowania od 8 do 48 kHz. | |||
| xHE-AAC | Android 9+ | Obsługa treści do 8-kanałowych ze standardowymi częstotliwościami próbkowania od 8 do 48 kHz. | |||
| AAC ELD (ulepszony kodek AAC o niskim opóźnieniu) | Android 4.1 lub nowszy | Android 4.1 lub nowszy | Obsługa treści mono/stereo o standardowych częstotliwościach 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 przy próbkowaniu 8 kHz |
| AMR-WB | TAK | TAK | 9 szybkości od 6,60 kbit/s do 23,85 kbit/s przy próbkowaniu 16 kHz | ||
| FLAC | Android 4.1 lub nowszy | Android 3.1 lub nowszy |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv) |
Mono/Stereo (bez wielokanałowego). Częstotliwości próbkowania do 48 kHz (ale na urządzeniach z wyjściem 44,1 kHz zalecana jest częstotliwość do 44,1 kHz, ponieważ próbnik w dół z 48 kHz do 44,1 kHz nie zawiera filtra dolnoprzepustowego). Zalecana jest 16-bitowa głębia kolorów; w przypadku 24-bitowej głębi kolorów nie jest stosowane roztrząsanie. | |
| MIDI | TAK |
• Typ 0 i 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
Typy 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+) • Matroska (.mkv, Android 10+) |
Mono/Stereo 8–320 kb/s stała (CBR) lub zmienna szybkość transmisji (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 liniowy PCM (częstotliwości do limitu sprzętowego). Częstotliwości próbkowania dla nagrań w formacie PCM w postaci surowej przy 8000, 16 000 i 44 100 Hz. | |
| Vorbis | TAK |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+) • MPEG-4 (.mp4, .m4a, Android 10+) |
• WebM (.webm) | ||
Obsługa wideo
Formaty wideo
| Format | za pomocą kodera. | Dekoder | Typy plików i 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 nowszym. |
| H.264 AVC Profil podstawowy (BP) |
Android 3.0+ | TAK |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, tylko audio AAC, bez możliwości przewijania, 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 enkoder – zalecany. | ||
| H.265 HEVC | Android 5.0 lub nowszy |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Profil główny poziom 3 w przypadku urządzeń mobilnych i profil główny poziom 4.1 w przypadku Androida 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 na Androidzie 4.0 lub nowszym |
| VP9 | Urządzenia z Androidem 4.4 lub nowszym |
• 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) | Od Androida 14 koder i dekoder są obowiązkowe. |
| APV | Android 16+ | Android 16+ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | Koder i dekoder są obowiązkowe od Androida 16. |
Rekomendacje dotyczące kodowania filmów
W tabeli poniżej znajdziesz profile i parametry kodowania wideo w ramach multimediów na Androidzie, które są zalecane do odtwarzania przy użyciu kodeka H.264 Baseline Profile. Te same zalecenia dotyczą kodeka Main Profile, który jest dostępny tylko na Androidzie 6.0 i nowszym.
| SD (niska jakość) | SD (wysoka jakość) | HD 720p (niedostępne na wszystkich urządzeniach) | |
|---|---|---|---|
| Rozdzielczość wideo | 176 x 144 pikseli | 480 x 360 pikseli | 1280 x 720 pikseli |
| Liczba klatek filmu | 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 audio | 24 Kb/s | 128 Kb/s | 192 kb/s |
W tabeli poniżej znajdziesz profile i parametry kodowania wideo w ramach platformy multimedialnej Androida zalecane do odtwarzania za pomocą kodeka VP8.
| SD (niska jakość) | SD (wysoka jakość) | HD 720p (niedostępne na wszystkich urządzeniach) | HD 1080p (niedostępne na wszystkich urządzeniach) | |
|---|---|---|---|---|
| Rozdzielczość wideo | 320 x 180 pikseli | 640 x 360 pikseli | 1280 x 720 pikseli | 1920 x 1080 pikseli |
| Liczba klatek filmu | 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ć dynamiczne przełączanie rozdzielczości i liczby klatek wideo 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 i do maksymalnej rozdzielczości obsługiwanej przez każdy kodek na urządzeniu.
Implementacje obsługujące dekoder Dolby Vision muszą być zgodne z tymi wytycznymi:
- Użyj ekstraktora obsługującego Dolby Vision.
- prawidłowo wyświetlać treści w Dolby Vision na ekranie urządzenia lub na standardowym porcie wyjścia wideo (np. HDMI);
- Ustaw indeks ścieżki zgodnych wstecznie warstw podstawowych (jeśli występują) na 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 obowiązują dodatkowe wymagania:
- W przypadku kontenerów 3GPP i MPEG-4 atom
moovmusi poprzedzać wszystkie atomymdat, ale musi następować po atomieftyp. - W przypadku kontenerów 3GPP, MPEG-4 i WebM próbki audio i wideo odpowiadające temu samemu przesunięciu czasowemu nie mogą różnić się o więcej niż 500 KB. Aby zminimalizować to rozsynchronizowanie dźwięku i obrazu, rozważ przeplatanie dźwięku i obrazu w mniejszych fragmentach.
Obsługa obrazów
| Format | za pomocą kodera. | Dekoder | Szczegóły | Typy plików Formaty kontenerów |
|---|---|---|---|---|
| BMP | TAK | BMP (.bmp), | ||
| GIF | TAK | GIF (.gif), | ||
| JPEG, | TAK | TAK | Podstawa + progresywna | JPEG (.jpg) |
| PNG | TAK | TAK | PNG (.png), | |
| WebP |
Android 4.0 lub nowszy Bezstratna: Android 10 lub nowszy Przezroczystość: Android 4.2.1 lub nowszy |
Android 4.0 lub nowszy Bezstratna: Android 4.2.1 lub nowszy Przezroczystość: Android 4.2.1 lub nowszy |
Kodowanie bezstratne jest możliwe na Androidzie 10 przy jakości 100. | WebP (.webp), |
| HEIF |
Android 10 lub nowszy (za pomocą MediaCodec lub HeifWriter; nie w Bitmap.compress)
|
Android 9.0 lub nowszy | Urządzenie opcjonalne. Sprawdź, czy urządzenie obsługuje 8-bitowe kolory na stronie ImageDecoder.isMimeTypeSupported("image/heif"). Dekodowanie 10-bitowe wymaga opcjonalnego profilu HEVC Main10. |
HEIF (.heic; .heif) |
| AVIF (profil podstawowy) |
Android 14 lub nowszy (za pomocą MediaCodec; nie w Bitmap.compress)
|
Android 12+ | Dekodowanie 8-bitowe jest obsługiwane od Androida 12. Dekodowanie 10-bitowe jest opcjonalne. Sprawdź ImageDecoder.isMimeTypeSupported("image/avif"), czy jest obsługiwane (nawet jeśli wartość to „false”, dekodowanie 8-bitowe nadal działa). |
AVIF (.avif) |
Protokoły sieciowe
Do odtwarzania dźwięku i wideo obsługiwane są te protokoły sieciowe:
- RTSP (RTP, SDP)
- Strumieniowe przesyłanie progresywne HTTP/HTTPS
- Transmisja na żywo przez HTTP/HTTPS wersja robocza protokołu:
- tylko pliki multimedialne MPEG-2 TS;
- Protokół w wersji 3, Android 4.0 lub nowszy
- Wersja protokołu 2 Android 3.x
- Nieobsługiwane w wersjach Androida starszych niż 3.0
Uwaga: protokół HTTPS nie jest obsługiwany w wersjach Androida starszych niż 3.1.
Formaty wideo 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 kolorów.
Aby zapewnić deweloperom spójność i uwzględnić kluczowe przypadki użycia HDR, wymagamy od producentów OEM obsługi kilku podstawowych formatów na urządzeniach obsługujących HDR:
- W przypadku odtwarzania treści profesjonalnych, takich jak filmy przesyłane strumieniowo, wymagamy HDR10.
- W przypadku przechwytywania i odtwarzania treści użytkowników wymagamy formatu HLG10, aby zapewnić spójne działanie na 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 | Dynamiczna | HEVC | 10-bitowy |
Rekomendacje dotyczące obsługi formatów
| Format przechwytywania | Format przesłanego pliku | Docelowy format |
| HLG | Obsługa HDR HLG w backendzie aplikacji | Urządzenia obsługujące HDR (HLG):
HLG Urządzenia obsługujące HDR (bez HLG, tylko PQ): SDR (mapowanie tonów z HLG na SDR na backendzie) Urządzenia, które nie obsługują HDR: SDR (mapowanie tonów z HLG na SDR na serwerze) |
Przypadek użycia 2. Zrobienie zdjęcia za pomocą natywnej aplikacji aparatu lub zaimportowanie go z galerii użytkownika (backend aplikacji obsługuje HDR)
| Format przechwytywania | Format przesłanego pliku | Docelowy format |
| HLG | HLG | Taki sam jak w przypadku użycia przechwytywania w aplikacji |
| HDR10+ | HLG
Mapowanie tonów z HDR10+ (PQ) na HLG przed przesłaniem za pomocą interfejsów API transformatora |
Taki sam jak w przypadku użycia przechwytywania w aplikacji |
| DV8.4 | HLG
(DV8.4 używa HLG, a strumień bitów będzie działać jak HLG, więc nie jest wymagane mapowanie tonów). |
Taki sam jak w przypadku użycia przechwytywania w aplikacji |
Przypadek użycia 3. Backend aplikacji nie obsługuje HDR
| Format przechwytywania | Format przesłanego pliku | Docelowy format |
| Dowolny format | SDR
Mapowanie tonów z HLG na SDR przed przesłaniem za pomocą interfejsów Transformer API |
SDR |