In diesem Dokument wird die Unterstützung für Media-Codecs, Container und Netzwerkprotokolle beschrieben, die von der Android-Plattform bereitgestellt wird.
In den folgenden Tabellen wird die Unterstützung für Media-Formate beschrieben, die in die Android-Plattform integriert ist. „JA“ bedeutet, dass das Format auf Smartphones und Tablets mit allen Android-Versionen verfügbar ist. Wenn eine bestimmte Android-Plattform angegeben ist, ist das Format auf Smartphones und Tablets mit dieser Version und allen späteren Versionen verfügbar. Das Format ist möglicherweise auch in früheren Versionen verfügbar, dies wird jedoch nicht garantiert. Auf anderen Formfaktoren als Smartphones und Tablets kann die Unterstützung für Mediaformate variieren.
Ein bestimmtes Mobilgerät unterstützt möglicherweise zusätzliche Formate oder Dateitypen, die in diesen Tabellen nicht aufgeführt sind. Wenn Sie einen MediaCodec direkt verwenden, können Sie außerdem unabhängig von den unterstützten Dateitypen und Containerformaten auf alle verfügbaren Mediaformate zugreifen.
Audio-Unterstützung
| Format | Encoder | Decodierer | Dateitypen und Containerformate | Details | |
|---|---|---|---|---|---|
| Extrahierer | Muxer | ||||
| AAC LC | JA | JA |
• 3GPP (.3gp) • ADTS Raw AAC (.aac, ADIF wird nicht unterstützt) • MPEG-TS (.ts, nicht suchbar, Android 3.0+) |
• 3GPP (.3gp) • ADTS-Roh-AAC (.aac, ADIF wird nicht unterstützt) • MPEG-TS (nicht sicher) (.ts, nicht suchbar, Android 3.0+) |
Unterstützung von Mono-/Stereo-/5.0-/5.1-Inhalten mit Standard-Abtastraten von 8 bis 48 kHz. |
| HE-AACv1 (AAC+) | Android 4.1 oder höher | JA | |||
| HE-AACv2 (enhanced AAC+) | JA | Unterstützung von Stereo-/5.0-/5.1-Inhalten mit Standard-Abtastraten von 8 bis 48 kHz. | |||
| xHE-AAC | Android 9 oder höher | Unterstützung von bis zu 8‑Kanal-Inhalten mit Standardabtastraten von 8 bis 48 kHz | |||
| AAC ELD (Enhanced Low Delay AAC) | Android 4.1 oder höher | Android 4.1 oder höher | Unterstützung von Mono-/Stereo-Inhalten mit Standard-Abtastraten von 16 bis 48 kHz | ||
| AMR‑NB | JA | JA |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4,75 bis 12,2 kbit/s, Samplingrate 8 kHz |
| AMR‑WB | JA | JA | 9 Raten von 6,60 kbit/s bis 23,85 kbit/s, abgetastet bei 16 kHz | ||
| FLAC | Android 4.1 oder höher | Android 3.1 und höher |
• FLAC (.flac) • MPEG‑4 (.mp4, .m4a, Android 10+) • Matroska (.mkv) |
Mono/Stereo (kein Mehrkanal). Abtastraten bis zu 48 kHz (auf Geräten mit 44,1 kHz-Ausgabe wird jedoch eine Abtastrate von bis zu 44,1 kHz empfohlen, da der Downsampler von 48 auf 44,1 kHz keinen Tiefpassfilter enthält). 16 Bit werden empfohlen. Bei 24 Bit wird kein Dithering angewendet. | |
| MIDI | JA |
• Typ 0 und 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI-Typ 0 und 1. DLS-Version 1 und 2. XMF und Mobile XMF Unterstützung der Klingeltonformate RTTTL/RTX, OTA und iMelody | ||
| MP3 | JA |
• MP3 (.mp3) • MPEG‑4 (.mp4, .m4a, Android 10+) • Matroska (.mkv, Android 10+) |
Mono/Stereo, 8–320 kbit/s, konstante (CBR) oder variable Bitrate (VBR) | ||
| Opus | Android 10 und höher | Android 5.0 oder höher |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 oder höher | JA | WAVE (.wav) | Lineare 8- und 16-Bit-PCM (Raten bis zum Limit der Hardware). Abtastraten für PCM-Rohaufnahmen bei 8.000, 16.000 und 44.100 Hz. | |
| Vorbis | JA |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0 oder höher) • MPEG-4 (.mp4, .m4a, Android 10 oder höher) |
• WebM (.webm) | ||
Video support
Videoformate
| Format | Encoder | Decodierer | Dateitypen und Containerformate | Details | |
|---|---|---|---|---|---|
| Extrahierer | Muxer | ||||
| H.263 | JA | JA |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
Unterstützung für H.263 ist in Android 7.0 und höher optional |
| H.264 AVC Baseline-Profil (BP) |
Android 3.0 und höher | JA |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, nur AAC-Audio, nicht suchbar, Android 3.0+) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| H.264 AVC Main Profile (MP) |
Android 6.0 oder höher | JA | Der Decoder ist erforderlich, der Encoder wird empfohlen. | ||
| H.265 HEVC | Android 5.0 oder höher |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Main Profile Level 3 für Mobilgeräte und Main Profile Level 4.1 für Android TV | |
| MPEG-4 SP | JA | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 und höher | Android 2.3.3 oder höher |
• WebM (.webm) • Matroska (.mkv, Android 4.0 oder höher) |
• WebM (.webm) | Nur auf Android 4.0 und höher streamen |
| VP9 | Android 4.4 oder höher |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1 | Android 14 und höher | Android 10 und höher |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Ab Android 14 sind Encoder und Decoder obligatorisch. |
| APV | Android 16 und höher | Android 16 und höher | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | Ab Android 16 sind Encoder und Decoder obligatorisch. |
Empfehlungen für die Videocodierung
In der folgenden Tabelle sind die Videocodierungsprofile und ‑parameter des Android-Media-Frameworks aufgeführt, die für die Wiedergabe mit dem H.264-Baseline-Profil-Codec empfohlen werden. Dieselben Empfehlungen gelten für den Main-Profil-Codec, der nur in Android 6.0 und höher verfügbar ist.
| SD (niedrige Qualität) | SD (hohe Qualität) | HD 720p (auf allen Geräten nicht verfügbar) | |
|---|---|---|---|
| Videoauflösung | 176 × 144 px | 480 × 360 px | 1280 × 720 px |
| Video-Framerate | 12 fps | Frame-Rate: 30 fps | Frame-Rate: 30 fps |
| Video-Bitrate | 56 kbit/s | 500 kbit/s | 2 Mbit/s |
| Audio-Codec | AAC-LC | AAC-LC | AAC-LC |
| Audiokanäle | 1 (Mono) | 2 (Stereo) | 2 (Stereo) |
| Audio-Bitrate | 24 kbit/s | 128 Kbit/s | 192 kbit/s |
In der folgenden Tabelle sind die Videocodierungsprofile und ‑parameter des Android-Media-Frameworks aufgeführt, die für die Wiedergabe mit dem VP8-Mediacodec empfohlen werden.
| SD (niedrige Qualität) | SD (hohe Qualität) | HD 720p (auf allen Geräten nicht verfügbar) | HD 1080p (auf allen Geräten nicht verfügbar) | |
|---|---|---|---|---|
| Videoauflösung | 320 × 180 px | 640 × 360 px | 1280 × 720 px | 1920 × 1080 Pixel |
| Video-Framerate | Frame-Rate: 30 fps | Frame-Rate: 30 fps | Frame-Rate: 30 fps | Frame-Rate: 30 fps |
| Video-Bitrate | 800 kbit/s | 2 Mbit/s | 4 Mbit/s | 10 Mbit/s |
Empfehlungen für die Videodecodierung
Geräteimplementierungen müssen dynamische Videoauflösungs- und Framerate-Wechsel über die standardmäßigen Android-APIs innerhalb desselben Streams für alle VP8-, VP9-, H.264- und H.265-Codecs in Echtzeit und bis zur maximalen Auflösung unterstützen, die von jedem Codec auf dem Gerät unterstützt wird.
Implementierungen, die den Dolby Vision-Decoder unterstützen, müssen die folgenden Richtlinien einhalten:
- Stellen Sie einen Dolby Vision-kompatiblen Extractor bereit.
- Dolby Vision-Inhalte werden auf dem Gerätebildschirm oder an einem Standard-Videoausgang (z.B. HDMI) korrekt angezeigt.
- Lege den Track-Index der abwärtskompatiblen Basisebene(n) (falls vorhanden) auf denselben Wert wie den Track-Index der kombinierten Dolby Vision-Ebene fest.
Anforderungen an Videostreams
Für Videoinhalte, die über HTTP oder RTSP gestreamt werden, gelten zusätzliche Anforderungen:
- Bei 3GPP- und MPEG-4-Containern muss das
moov-Atom vor allenmdat-Atomen und nach demftyp-Atom stehen. - Bei 3GPP-, MPEG‑4- und WebM-Containern dürfen Audio- und Videobeispiele, die demselben zeitlichen Versatz entsprechen, nicht mehr als 500 KB voneinander entfernt sein. Um diese Audio-/Video-Abweichung zu minimieren, sollten Sie Audio und Video in kleineren Abschnitten verschachteln.
Bildunterstützung
| Format | Encoder | Decodierer | Details | Dateitypen Containerformate |
|---|---|---|---|---|
| BMP | JA | BMP (.bmp) | ||
| GIF | JA | GIF (.gif) | ||
| JPEG | JA | JA | Grundpreis + progressiv | JPEG (.jpg) |
| PNG | JA | JA | PNG (.png) | |
| WebP |
Android 4.0 oder höher Verlustfrei: Android 10 oder höher Transparenz: Android 4.2.1 oder höher |
Android 4.0 und höher Verlustfrei: Android 4.2.1 und höher Transparenz: Android 4.2.1 und höher |
Die verlustfreie Codierung kann unter Android 10 mit einer Qualität von 100 erreicht werden. | WebP (.webp) |
| HEIF |
Android 10 oder höher (über MediaCodec oder HeifWriter; nicht in Bitmap.compress)
|
Android 9.0 oder höher | Gerät optional. Informationen zur Unterstützung von 8‑Bit-Farben findest du unter ImageDecoder.isMimeTypeSupported("image/heif"). Für die 10‑Bit-Decodierung ist das optionale HEVC Main10-Profil erforderlich. |
HEIF (.heic; .heif) |
| AVIF (Baseline-Profil) |
Android 14 und höher (über MediaCodec; nicht in Bitmap.compress)
|
Android 12 und höher | Die 8‑Bit-Decodierung wird ab Android 12 unterstützt. Die 10‑Bit-Decodierung ist optional. Prüfen Sie ImageDecoder.isMimeTypeSupported("image/avif") auf 10‑Bit-Unterstützung (auch wenn „false“ zurückgegeben wird, funktioniert die 8‑Bit-Decodierung weiterhin). |
AVIF (.avif) |
Netzwerkprotokolle
Die folgenden Netzwerkprotokolle werden für die Audio- und Videowiedergabe unterstützt:
- RTSP (RTP, SDP)
- Progressives Streaming über HTTP/HTTPS
- HTTP/HTTPS-Livestreaming Protokollentwurf:
- Nur MPEG-2 TS-Mediendateien
- Protokollversion 3, Android 4.0 und höher
- Protokollversion 2 Android 3.x
- Wird vor Android 3.0 nicht unterstützt
Hinweis:HTTPS wird vor Android 3.1 nicht unterstützt.
HDR-Videoformate
OEMs können mit der Android-HDR-Architektur jedes beliebige HDR-Format aktivieren. Diese Architektur bietet die wichtigsten Anforderungen von HDR-Formaten: 10-Bit-Puffer, Metadaten (statisch, dynamisch und keine), Transferfunktion und Farbraumverarbeitung.
Damit Entwickler einheitliche Bedingungen vorfinden und wichtige HDR-Anwendungsfälle abgedeckt werden, müssen OEMs auf Geräten, die HDR unterstützen, einige grundlegende Formate unterstützen:
- Für die Wiedergabe professioneller Inhalte wie Streamingfilme ist HDR10 erforderlich.
- Für die Aufnahme und Wiedergabe von von Nutzern erstellten Inhalten ist HLG10 erforderlich, um eine einheitliche Nutzung auf allen Android-Geräten zu ermöglichen.
OEMs, die HDR-Unterstützung hinzufügen, müssen diese Formate unterstützen, können aber auch zusätzliche Formate wie HDR10+ oder Dolby Vision unterstützen.
| Format | Übertragungsfunktion | Metadaten | Codec | Bittiefe |
|---|---|---|---|---|
| HLG10 | HLG | Nein | HEVC | 10 Bit |
| HDR10 | PQ | Statisch | HEVC | 10 Bit |
| HDR10+ | PQ | Statisch | HEVC | 10 Bit |
| Dolby Vision 8.4 | HLG | Dynamisch | HEVC | 10 Bit |
Empfehlungen zur Formatierung
| Aufnahmeformat | Upload-Format | Bereitstellungsformat |
| HLG | App-Backend unterstützt HDR HLG | Geräte, die HDR (HLG) unterstützen:
HLG Geräte, die HDR unterstützen (keine HLG-Unterstützung, nur PQ): SDR (Tone Mapping von HLG zu SDR im Backend) Geräte, die HDR nicht unterstützen: SDR (Tone-Mapping von HLG zu SDR im Backend) |
Anwendungsfall 2: Aufnahme mit der nativen Kamera oder Import aus der Galerie des Nutzers (App-Backend unterstützt HDR)
| Aufnahmeformat | Upload-Format | Bereitstellungsformat |
| HLG | HLG | Wie beim Anwendungsfall „In-App-Aufnahme“ |
| HDR10+ | HLG
Tone-Mapping von HDR10+ (PQ) zu HLG vor dem Upload mit Transformer-APIs |
Wie beim Anwendungsfall „In-App-Aufnahme“ |
| DV8.4 | HLG
(DV8.4 verwendet HLG und der Bitstream verhält sich wie HLG, daher ist kein Tone-Mapping erforderlich) |
Wie beim Anwendungsfall „In-App-Aufnahme“ |
Anwendungsfall 3: Das App-Backend unterstützt kein HDR
| Aufnahmeformat | Upload-Format | Bereitstellungsformat |
| Beliebiges Format | SDR
HLG vor dem Hochladen mit Transformer-APIs in SDR umwandeln |
SDR |