지원되는 미디어 형식

이 문서에서는 Android 플랫폼에서 제공하는 미디어 코덱, 컨테이너 및 네트워크 프로토콜 지원을 설명합니다.

애플리케이션 개발자는 Android 플랫폼에서 제공하는 미디어 코덱과 기기별 미디어 코덱을 비롯하여 Android 지원 기기에서 사용 가능한 모든 미디어 코덱을 사용할 수 있습니다. 그러나 모든 기기에 쓰일 수 있는 미디어 인코딩 프로필을 사용하는 것이 가장 좋습니다.

아래 표는 Android 플랫폼에 내장된 미디어 형식 지원을 설명합니다. 모든 Android 플랫폼 버전에서 사용 가능성이 보장되지 않은 코덱은 괄호로 표시(예: (Android 3.0 이상))됩니다. 어느 휴대기기든 표에 나열되지 않은 다른 형식이나 파일 형식을 지원할 수 있습니다.

Android 호환성 정의 섹션 5는 기기에서 Android 8.1과 호환되기 위해 지원해야 하는 미디어 형식을 지정합니다.

오디오 지원

오디오 형식 및 코덱

형식/코덱 인코더 디코더 세부정보 지원되는 파일 형식/컨테이너 형식
AAC LC 표준 샘플링 레이트가 8~48kHz인 모노/스테레오/5.0/5.1 콘텐츠 지원 • 3GPP(.3gp)
• MPEG-4(.mp4, .m4a)
• ADTS 원시 AAC(.aac, Android 3.1 이상에서 디코딩, Android 4.0 이상에서 인코딩, ADIF 지원되지 않음)
• MPEG-TS(.ts, 검색 불가, Android 3.0 이상)
HE-AACv1(AAC+)
(Android 4.1 이상)
HE-AACv2(개선된 AAC+)   표준 샘플링 레이트가 8~48kHz인 스테레오/5.0/5.1 콘텐츠 지원
AAC ELD(개선된 저지연 AAC)
(Android 4.1 이상)

(Android 4.1 이상)
표준 샘플링 레이트가 16~48kHz인 모노/스테레오 콘텐츠 지원
AMR-NB 8kHz에서 샘플링된 4.75~12.2kbps 3GPP(.3gp)
AMR-WB 16kHz에서 샘플링된 6.60kbit/초~23.85kbit/초 9레이트 3GPP(.3gp)
FLAC
(Android 4.1 이상)

(Android 3.1 이상)
모노/스테레오(다중 채널 없음) 최대 48kHz의 샘플링 레이트(48~44.1kHz 다운샘플러에는 저역 통과 필터가 없으므로 44.1kHz 출력 기기에서는 최대 44.1kHz가 권장됨). 16비트 권장됨(24비트에는 디더가 적용되지 않음) FLAC(.flac) 전용
GSM   Android는 텔레포니 기기에서 GSM 디코딩 지원 GSM(.gsm)
MIDI   MIDI 유형 0과 1. DLS 버전 1과 2. XMF와 모바일 XMF. 벨소리 형식 RTTTL/RTX, OTA 및 iMelody 지원 • 유형 0과 1(.mid, .xmf, .mxmf)
• RTTTL/RTX(.rtttl, .rtx)• OTA(.ota)• iMelody(.imy)
MP3   모노/스테레오 8-320Kbps 상수(CBR) 또는 가변 비트 전송률(VBR) MP3(.mp3)
Opus
(Android 5.0 이상)
Matroska(.mkv)
PCM/WAVE
(Android 4.1 이상)
8비트 및 16비트 선형 PCM(최대 하드웨어 제한 레이트) 8000Hz, 16000Hz, 44100Hz에서 원시 PCM 녹음 샘플링 레이트 WAVE(.wav)
Vorbis     • Ogg(.ogg)
• Matroska(.mkv, Android 4.0 이상)

동영상 지원

동영상 형식 및 코덱

형식/코덱 인코더 디코더 세부정보 지원되는 파일 형식/컨테이너 형식
H.263 Android 7.0 이상에서는 H.263 지원이 선택사항 • 3GPP(.3gp)
• MPEG-4(.mp4)
H.264 AVC
기준 프로필 (BP)

(Android 3.0 이상)
• 3GPP(.3gp)
• MPEG-4(.mp4)• MPEG-TS(.ts, AAC 오디오 전용, 검색 불가, Android 3.0 이상)
H.264 AVC
기본 프로필 (MP)

(Android 6.0 이상)
디코더가 필수, 인코더 권장됨
H.265 HEVC
(Android 5.0 이상)
휴대기기용 기본 프로필 레벨 3, Android TV용 기본 프로필 레벨 4.1 • MPEG-4(.mp4)
MPEG-4 SP     3GPP(.3gp)
VP8
(Android 4.3 이상)

(Android 2.3.3 이상)
Android 4.0 이상에서만 스트리밍 가능 WebM(.webm)
• Matroska(.mkv, Android 4.0 이상)
VP9
(Android 4.4 이상)
WebM(.webm)
• Matroska(.mkv, Android 4.0 이상)

동영상 인코딩 권장사항

아래 표에는 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 Atom은 모든 mdat Atom 앞에, ftyp Atom 뒤에 있어야 합니다.
  • 3GPP, MPEG-4 및 WebM 컨테이너의 경우 동일한 시차에 상응하는 오디오 및 동영상 샘플의 크기는 각각 500KB일 수 있습니다. 오디오/동영상 드리프트를 최소화하려면 작은 청크 크기로 오디오와 동영상을 인터리빙하는 것을 고려하세요.

이미지 지원

형식/코덱 인코더 디코더 세부정보 지원되는 파일 형식/컨테이너 형식
BMP     BMP(.bmp)
GIF     GIF(.gif)
JPEG 기본+프로그레시브 JPEG(.jpg)
PNG   PNG(.png)
WebP
(Android 4.0 이상)
(무손실, 투명도, Android 4.2.1 이상)

(Android 4.0 이상)
(무손실, 투명도, Android 4.2.1 이상)
  WebP(.webp)
HEIF  
(Android 8.0 이상)
  HEIF(.heic, .heif)

네트워크 프로토콜

다음 네트워크 프로토콜이 오디오 및 동영상 재생에 지원됩니다.

  • 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 이전에는 지원되지 않습니다.