Obsługiwane formaty multimediów

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)
• MPEG-4 (.mp4, .m4a)
• ADTS raw AAC (.aac, ADIF not supported)
• MPEG-TS (.ts, not seekable, Android 3.0+)
• 3GPP (.3gp)
• MPEG-4 (.mp4, .m4a)
• 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 moov musi poprzedzać wszystkie atomy mdat, ale musi następować po atomie ftyp.
  • 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