Jetpack Media3 소개

Jetpack Media3은 Android 앱이 풍부한 오디오 및 시각적 환경을 표시할 수 있는 미디어 라이브러리를 위한 새로운 공간입니다. Media3은 기기 기능에 따라 강력한 맞춤설정, 안정성, 최적화를 갖춘 단순한 아키텍처를 제공하여 단편화로 인한 복잡성을 추상화합니다.

이 문서에서는 Media3으로 재생 및 편집 사용 사례를 구현하기 위한 주요 API를 소개합니다.

재생 구성요소

Media3은 재생 사용 사례를 위한 몇 가지 주요 구성요소를 제공합니다. 이전 Android 미디어 라이브러리를 사용해 본 적이 있다면 이러한 구성요소를 구성하는 클래스가 익숙할 것입니다.

다음 다이어그램은 일반적인 앱에서 이러한 구성요소가 함께 작동하는 방식을 보여줍니다.

Media3을 사용하는 미디어 앱의 다양한 구성요소는 인터페이스와 클래스를 공유하므로 여러 가지 간단한 방법으로 함께 연결됩니다.
그림 1: 미디어 앱 구성요소

미디어 플레이어

미디어 플레이어는 미디어 파일의 재생을 허용하는 앱의 구성요소입니다. Media3에서는 다음을 찾을 수 있습니다.

클래스 설명 구현 관련 참고사항
Player Player는 재생, 일시중지, 탐색 기능 등 미디어 플레이어의 기존 상위 수준 기능을 정의하는 인터페이스입니다. Media3에서 Player 인터페이스는 MediaSessionMediaController를 비롯한 여러 구성요소에 의해 구현되거나 사용되는 공통 API입니다.
ExoPlayer ExoPlayer는 Media3에 있는 Player 인터페이스의 기본 구현입니다.

Media3 ExoPlayer 자세히 알아보기

미디어 세션

미디어 세션은 미디어 플레이어와 상호작용하는 보편적인 방법을 제공합니다. 이렇게 하면 앱이 외부 소스에 미디어 재생을 알리고 외부 소스로부터 재생 제어 요청을 수신할 수 있습니다. 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를 구현합니다.

Media3 MediaSession 자세히 알아보기

UI 구성요소

Media3은 동영상 보기 및 재생을 제어하는 기본 UI 구성요소를 제공합니다.

클래스 설명 구현 관련 참고사항
PlayerView 동영상 및 재생 컨트롤을 표시하는 기본 View입니다. ExoPlayer, MediaController 또는 기타 맞춤 Player에 연결합니다.

Media3 UI에 대해 자세히 알아보기

구성요소 수정

Media3에는 미디어 편집 사용 사례를 위한 다음과 같은 Transformer API가 포함되어 있습니다.

  • 오디오 및 동영상 처리(예: 필터 및 효과 추가)
  • HDR 동영상 및 슬로 모션 동영상과 같은 특수 형식 처리
  • 컴포지션(예: 여러 입력 파일 결합)
  • 최종 출력을 파일로 내보내기
클래스 설명 구현 관련 참고사항
Transformer 변환을 시작 및 중지하고 실행 중인 변환의 진행 상황 업데이트를 확인하려면 Transformer 클래스를 사용합니다.
Effects Effects 객체는 미디어 항목에 적용할 오디오 및 동영상 효과 모음입니다.
EditedMediaItem EditedMediaItem은 처리할 미디어 항목과 여기에 적용할 수정사항을 나타냅니다. 내보내기 프로세스를 시작하기 전에 ExoPlayer를 사용하여 미디어 항목에 추가된 효과를 미리 볼 수 있습니다.

Media3 Transformer 자세히 알아보기

소개 동영상

Media3을 제작한 엔지니어가 소개한 Media3 소개는 아래 동영상을 참고하세요.