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
moov
musi 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 |