Jetpack Media3은 Android 앱이 풍부한 오디오 및 시각적 환경을 표시할 수 있는 미디어 라이브러리를 위한 새로운 공간입니다. Media3은 기기 기능에 따라 강력한 맞춤설정, 안정성, 최적화를 갖춘 단순한 아키텍처를 제공하여 단편화로 인한 복잡성을 추상화합니다.
이 문서에서는 Media3으로 재생 및 편집 사용 사례를 구현하기 위한 주요 API를 소개합니다.
재생 구성요소
Media3은 재생 사용 사례를 위한 몇 가지 주요 구성요소를 제공합니다. 이전 Android 미디어 라이브러리를 사용해 본 적이 있다면 이러한 구성요소를 구성하는 클래스가 익숙할 것입니다.
다음 다이어그램은 일반적인 앱에서 이러한 구성요소가 함께 작동하는 방식을 보여줍니다.
미디어 플레이어
미디어 플레이어는 미디어 파일의 재생을 허용하는 앱의 구성요소입니다. Media3에서는 다음을 찾을 수 있습니다.
클래스 | 설명 | 구현 관련 참고사항 |
---|---|---|
Player |
Player 는 재생, 일시중지, 탐색 기능 등 미디어 플레이어의 기존 상위 수준 기능을 정의하는 인터페이스입니다.
|
Media3에서 Player 인터페이스는 MediaSession 및 MediaController 를 비롯한 여러 구성요소에 의해 구현되거나 사용되는 공통 API입니다.
|
ExoPlayer |
ExoPlayer 는 Media3에 있는 Player 인터페이스의 기본 구현입니다.
|
미디어 세션
미디어 세션은 미디어 플레이어와 상호작용하는 보편적인 방법을 제공합니다. 이렇게 하면 앱이 외부 소스에 미디어 재생을 알리고 외부 소스로부터 재생 제어 요청을 수신할 수 있습니다. Media3에서는 다음을 찾을 수 있습니다.
클래스 | 설명 | 구현 관련 참고사항 |
---|---|---|
MediaSession |
미디어 세션을 사용하면 앱이 오디오 또는 동영상 플레이어와 상호작용할 수 있습니다. 외부에서 미디어 재생을 알리고 외부 소스로부터 재생 명령어를 수신합니다. |
Media3에서 MediaSession 는 명령어를 실행하고 현재 상태를 가져오려면 Player 가 필요합니다.
|
MediaSessionService |
MediaSessionService 는 백그라운드 재생을 용이하게 하기 위해 앱의 기본 Activity 와는 별개인 서비스에 미디어 세션 및 관련 플레이어를 보유합니다.
|
|
MediaController |
MediaController 클래스는 일반적으로 앱 외부에서(예: 다른 앱이나 시스템 자체에서) 명령어를 전송하는 데 사용됩니다.
명령어는 연결된 MediaSession 의 기본 Player 로 전송됩니다.
|
MediaController 클래스는 Player 인터페이스를 구현하지만 메서드를 호출하면 연결된 MediaSession 로 명령어가 전송됩니다. Google 어시스턴트와 같은 클라이언트 앱은 MediaController 를 사용하여 연결된 세션에서 재생을 제어할 수 있습니다.
|
MediaLibraryService |
MediaLibraryService 는 클라이언트 앱에 콘텐츠 라이브러리를 제공할 수 있도록 추가 API가 포함되어 있다는 점을 제외하면 MediaSessionService 와 유사합니다.
|
|
MediaBrowser |
MediaBrowser 클래스를 사용하면 사용자가 미디어 앱의 콘텐츠 라이브러리를 탐색하고 재생할 항목을 선택할 수 있습니다.
|
MediaBrowser 클래스는 MediaController 인터페이스와 Player 인터페이스를 모두 구현합니다. MediaController 와 마찬가지로 Android Auto와 같은 클라이언트 앱은 일반적으로 MediaBrowser 를 구현합니다.
|
UI 구성요소
Media3은 동영상 보기 및 재생을 제어하는 기본 UI 구성요소를 제공합니다.
클래스 | 설명 | 구현 관련 참고사항 |
---|---|---|
PlayerView |
동영상 및 재생 컨트롤을 표시하는 기본 View 입니다.
|
ExoPlayer , MediaController 또는 기타 맞춤 Player 에 연결합니다.
|
구성요소 수정
Media3에는 미디어 편집 사용 사례를 위한 다음과 같은 Transformer API가 포함되어 있습니다.
- 오디오 및 동영상 처리(예: 필터 및 효과 추가)
- HDR 동영상 및 슬로 모션 동영상과 같은 특수 형식 처리
- 컴포지션(예: 여러 입력 파일 결합)
- 최종 출력을 파일로 내보내기
클래스 | 설명 | 구현 관련 참고사항 |
---|---|---|
Transformer |
변환을 시작 및 중지하고 실행 중인 변환의 진행 상황 업데이트를 확인하려면 Transformer 클래스를 사용합니다.
|
|
Effects |
Effects 객체는 미디어 항목에 적용할 오디오 및 동영상 효과 모음입니다.
|
|
EditedMediaItem |
EditedMediaItem 은 처리할 미디어 항목과 여기에 적용할 수정사항을 나타냅니다.
|
내보내기 프로세스를 시작하기 전에 ExoPlayer 를 사용하여 미디어 항목에 추가된 효과를 미리 볼 수 있습니다.
|
소개 동영상
Media3을 제작한 엔지니어가 소개한 Media3 소개는 아래 동영상을 참고하세요.