이 문서에서는 Android 플랫폼에서 제공하는 미디어 코덱, 컨테이너, 네트워크 프로토콜 지원을 설명합니다.
아래 표는 Android 플랫폼에 내장된 미디어 형식 지원을 설명합니다. '예'는 형식을 모든 Android 버전을 실행하는 휴대기기와 태블릿에서 사용할 수 있음을 의미합니다. 특정 Android 플랫폼이 지정된 경우 해당 버전과 이후 버전을 실행하는 휴대전화와 태블릿에서 형식을 사용할 수 있습니다. 이전 버전에서도 형식을 사용할 수 있지만 보장되지는 않습니다. 핸드셋 및 태블릿 이외의 폼 팩터에서는 미디어 형식 지원이 다를 수 있습니다.
특정 모바일 기기에서 이러한 표에 나열되지 않은 추가 형식이나 파일 형식을 지원할 수 있습니다. 또한 MediaCodec을 직접 사용하는 경우 지원되는 파일 유형과 컨테이너 형식에 관계없이 사용 가능한 미디어 형식에 액세스할 수 있습니다.
오디오 지원
| 형식 | 인코더 | 디코더 | 파일 형식 컨테이너 형식 | 세부정보 | |
|---|---|---|---|---|---|
| 추출기 | Muxer | ||||
| AAC LC | 예 | 예 |
• 3GPP (.3gp) • ADTS 원시 AAC (.aac, ADIF 지원되지 않음) • MPEG-TS (.ts, 탐색 불가, Android 3.0 이상) |
• 3GPP (.3gp) • ADTS 원시 AAC (.aac, ADIF 지원되지 않음) • MPEG-TS (확실하지 않음) (.ts, 탐색 불가, Android 3.0 이상) |
표준 샘플링 레이트가 8~48kHz인 모노/스테레오/5.0/5.1 콘텐츠 지원 |
| HE-AACv1(AAC+) | Android 4.1 이상 | 예 | |||
| HE-AACv2(개선된 AAC+) | 예 | 표준 샘플링 레이트가 8~48kHz인 스테레오/5.0/5.1 콘텐츠 지원 | |||
| xHE-AAC | Android 9+ | 표준 샘플링 레이트가 8~48kHz인 최대 8채널 콘텐츠 지원 | |||
| AAC ELD(개선된 저지연 AAC) | Android 4.1 이상 | Android 4.1 이상 | 표준 샘플링 레이트가 16~48kHz인 모노/스테레오 콘텐츠 지원 | ||
| AMR-NB | 예 | 예 |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
8kHz에서 샘플링된 4.75~12.2kbps |
| AMR-WB | 예 | 예 | 16kHz에서 샘플링된 6.60kbit/초~23.85kbit/초 9레이트 | ||
| FLAC | Android 4.1 이상 | Android 3.1 이상 |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10 이상) • Matroska (.mkv) |
모노/스테레오(다중 채널 없음) 최대 48kHz의 샘플링 레이트(48~44.1kHz 다운샘플러에는 저역 통과 필터가 없으므로 44.1kHz 출력 기기에서는 최대 44.1kHz가 권장됨). 16비트 권장됨(24비트에는 디더가 적용되지 않음) | |
| MIDI | 예 |
• 유형 0 및 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI 유형 0 및 1. DLS 버전 1 및 2. XMF 및 모바일 XMF. 벨소리 형식 RTTTL/RTX, OTA 및 iMelody 지원 | ||
| MP3 | 예 |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10 이상) • Matroska (.mkv, Android 10 이상) |
모노/스테레오 8-320Kbps 상수(CBR) 또는 가변 비트 전송률(VBR) | ||
| Opus | Android 10+ | Android 5.0 이상 |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 이상 | 예 | WAVE(.wav) | 8비트 및 16비트 선형 PCM(최대 하드웨어 제한 레이트) 8000, 16000, 44100Hz에서 원시 PCM 녹음의 샘플링 레이트 | |
| Vorbis | 예 |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0 이상) • MPEG-4 (.mp4, .m4a, Android 10 이상) |
• WebM (.webm) | ||
동영상 지원
동영상 형식
| 형식 | 인코더 | 디코더 | 파일 형식 컨테이너 형식 | 세부정보 | |
|---|---|---|---|---|---|
| 추출기 | Muxer | ||||
| H.263 | 예 | 예 |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
Android 7.0 이상에서는 H.263 지원이 선택사항 |
| H.264 AVC 기준 프로필 (BP) |
Android 3.0+ | 예 |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, AAC 오디오만 해당, 탐색 불가, Android 3.0 이상) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| H.264 AVC 기본 프로필 (MP) |
Android 6.0 이상 | 예 | 디코더가 필수, 인코더 권장됨 | ||
| H.265 HEVC | Android 5.0 이상 |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4(.mp4) | 휴대기기용 기본 프로필 레벨 3, Android TV용 기본 프로필 레벨 4.1 | |
| MPEG-4 SP | 예 | • MPEG-4(.mp4) | • MPEG-4(.mp4) | ||
| VP8 | Android 4.3 이상 | Android 2.3.3 이상 |
• WebM (.webm) • Matroska (.mkv, Android 4.0 이상) |
• WebM (.webm) | Android 4.0 이상에서만 스트리밍 가능 |
| VP9 | Android 4.4 이상 |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1 | Android 14+ | Android 10+ |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4(.mp4) | 인코더와 디코더는 Android 14부터 필수입니다. |
| APV | Android 16 이상 | Android 16 이상 | • MPEG-4(.mp4) | • MPEG-4(.mp4) | 인코더와 디코더는 Android 16부터 필수입니다. |
동영상 인코딩 권장사항
아래 표에는 H.264 기준 프로필 코덱을 사용한 재생에 권장되는 Android 미디어 프레임워크 동영상 인코딩 프로필과 매개변수가 나와 있습니다. Android 6.0 이상에서만 사용할 수 있는 기본 프로필 코덱에도 동일한 권장사항이 적용됩니다.
| SD(낮은 화질) | SD(고화질) | HD 720p(모든 기기에서 해당 사항 없음) | |
|---|---|---|---|
| 동영상 해상도 | 176x144px | 480x360px | 1280x720px |
| 동영상 프레임 속도 | 12fps | 30fps | 30fps |
| 동영상 비트 전송률 | 56Kbps | 500Kbps | 2Mbps |
| 오디오 코덱 | AAC-LC | AAC-LC | AAC-LC |
| 오디오 채널 | 1(모노) | 2(스테레오) | 2(스테레오) |
| 오디오 비트 전송률 | 24Kbps | 128Kbps | 192Kbps |
아래 표에는 VP8 미디어 코덱을 사용한 재생에 권장되는 Android 미디어 프레임워크 동영상 인코딩 프로필과 매개변수가 나열되어 있습니다.
| SD(낮은 화질) | SD(고화질) | HD 720p(모든 기기에서 해당 사항 없음) | HD 1080p(모든 기기에서 해당 사항 없음) | |
|---|---|---|---|---|
| 동영상 해상도 | 320x180px | 640x360px | 1280x720px | 1920x1080px |
| 동영상 프레임 속도 | 30fps | 30fps | 30fps | 30fps |
| 동영상 비트 전송률 | 800Kbps | 2Mbps | 4Mbps | 10Mbps |
동영상 디코딩 권장사항
기기 구현은 모든 VP8, VP9, H.264, H.265 코덱의 동일한 스트림 내에서 표준 Android API를 통해 실시간으로 동적 동영상 해상도와 프레임 속도 전환을 지원하고 기기의 각 코덱이 지원하는 최대 해상도까지 지원해야 합니다.
Dolby Vision 디코더를 지원하는 구현은 다음 가이드라인을 따라야 합니다.
- Dolby Vision 지원 추출기를 제공해야 합니다.
- 기기 화면이나 표준 동영상 출력 포트 (예: HDMI)에 Dolby Vision 콘텐츠를 제대로 표시해야 합니다.
- 이전 버전과 호환되는 기본 레이어(있는 경우)의 트랙 색인을 결합된 Dolby Vision 레이어의 트랙 색인과 동일하게 설정합니다.
동영상 스트리밍 요구사항
HTTP 또는 RTSP를 통해 스트리밍되는 동영상 콘텐츠에는 추가 요구사항이 있습니다.
- 3GPP 및 MPEG-4 컨테이너의 경우
moov원자는mdat원자보다 앞에 있어야 하지만ftyp원자 뒤에 있어야 합니다. - 3GPP, MPEG-4 및 WebM 컨테이너의 경우 동일한 시차에 상응하는 오디오 및 동영상 샘플의 크기는 각각 500KB일 수 있습니다. 오디오/동영상 드리프트를 최소화하려면 작은 청크 크기로 오디오와 동영상을 인터리빙하는 것을 고려하세요.
이미지 지원
| 형식 | 인코더 | 디코더 | 세부정보 | 파일 형식 컨테이너 형식 |
|---|---|---|---|---|
| BMP | 예 | BMP(.bmp) | ||
| GIF | 예 | GIF(.gif) | ||
| JPEG | 예 | 예 | 기본+프로그레시브 | JPEG(.jpg) |
| PNG | 예 | 예 | PNG(.png) | |
| WebP |
Android 4.0 이상 무손실: Android 10 이상 투명도: Android 4.2.1 이상 |
Android 4.0 이상 무손실: Android 4.2.1 이상 투명도: Android 4.2.1 이상 |
Android 10에서는 품질 100을 사용하여 무손실 인코딩을 달성할 수 있습니다. | WebP(.webp) |
| HEIF |
Android 10 이상 ( MediaCodec 또는 HeifWriter를 통해, Bitmap.compress에는 없음)
|
Android 9.0 이상 | 기기는 선택사항입니다. 8비트 지원은 ImageDecoder.isMimeTypeSupported("image/heif")를 참고하세요. 10비트 디코딩에는 선택사항인 HEVC Main10 프로필이 필요합니다. |
HEIF(.heic, .heif) |
| AVIF (기준 프로필) |
Android 14 이상 ( MediaCodec을 통해, Bitmap.compress에는 없음)
|
Android 12+ | 8비트 디코딩은 Android 12 이상에서 지원됩니다. 10비트 디코딩은 선택사항입니다. 10비트 지원은 ImageDecoder.isMimeTypeSupported("image/avif")를 확인하세요 (false인 경우에도 8비트는 계속 작동함). |
AVIF (.avif) |
네트워크 프로토콜
다음 네트워크 프로토콜이 오디오 및 동영상 재생에 지원됩니다.
- RTSP(RTP, SDP)
- HTTP/HTTPS 프로그레시브 스트리밍
- HTTP/HTTPS 라이브 스트리밍 초안 프로토콜:
- MPEG-2 TS 미디어 파일 전용
- 프로토콜 버전 3 Android 4.0 이상
- 프로토콜 버전 2 Android 3.x
- Android 3.0 이전에는 지원되지 않음
참고: HTTPS가 Android 3.1 이전에는 지원되지 않습니다.
HDR 동영상 형식
OEM은 Android HDR 아키텍처를 사용하여 원하는 HDR 형식을 사용 설정할 수 있습니다. 이 아키텍처는 HDR 형식의 핵심 요구사항인 10비트 버퍼, 메타데이터 (정적, 동적, 없음), 전송 함수, 색상 공간 처리를 제공합니다.
개발자의 일관성을 보장하고 주요 HDR 사용 사례를 해결하기 위해 HDR을 지원하는 기기에서 OEM은 몇 가지 기본 형식을 지원해야 합니다.
- 영화 스트리밍과 같은 전문 콘텐츠 재생에는 HDR10이 필요합니다.
- 사용자 제작 콘텐츠 캡처 및 재생의 경우 Android 기기 전반에서 일관된 환경을 제공하려면 HLG10이 필요합니다.
HDR 지원을 추가하는 OEM은 이러한 형식을 지원해야 하지만 HDR10+ 또는 Dolby Vision과 같은 추가 형식을 지원할 수도 있습니다.
| 형식 | 전송 함수 | 메타데이터 | 코덱 | 비트 심도 |
|---|---|---|---|---|
| HLG10 | HLG | 아니요 | HEVC | 10비트 |
| HDR10 | PQ | 정적 | HEVC | 10비트 |
| HDR10+ | PQ | 정적 | HEVC | 10비트 |
| Dolby Vision 8.4 | HLG | 동적 | HEVC | 10비트 |
형식 처리 권장사항
| 캡처 형식 | 업로드 형식 | 전송 형식 |
| HLG | 앱 백엔드에서 HDR HLG 지원 | HDR (HLG)을 지원하는 기기:
HLG 기기에서 HDR을 지원합니다 (HLG 지원 없음, PQ만 해당). SDR (백엔드에서 HLG에서 SDR로 톤 매핑) HDR을 지원하지 않는 기기: SDR (백엔드에서 HLG에서 SDR로 톤 매핑) |
사용 사례 2: 네이티브 카메라 캡처 또는 사용자 갤러리에서 가져오기 (앱 백엔드에서 HDR 지원)
| 캡처 형식 | 업로드 형식 | 전송 형식 |
| HLG | HLG | 인앱 캡처 사용 사례와 동일 |
| HDR10+ | HLG
트랜스포머 API를 사용하여 업로드하기 전에 HDR10+ (PQ)에서 HLG로 톤 매핑 |
인앱 캡처 사용 사례와 동일 |
| DV8.4 | HLG
(DV8.4는 HLG를 사용하며 비트 스트림은 HLG로 작동하므로 톤 매핑이 필요하지 않음) |
인앱 캡처 사용 사례와 동일 |
사용 사례 3: 앱 백엔드에서 HDR을 지원하지 않음
| 캡처 형식 | 업로드 형식 | 전송 형식 |
| 모든 형식 | SDR
트랜스포머 API를 사용하여 업로드하기 전에 HLG에서 SDR로 톤 매핑 |
SDR |