시작하기

간단한 사용 사례의 경우 ExoPlayer를 시작하려면 다음을 구현해야 합니다. 다음 단계를 따르세요.

  1. ExoPlayer를 프로젝트에 종속 항목으로 추가합니다.
  2. ExoPlayer 인스턴스를 만듭니다.
  3. 플레이어를 뷰에 연결합니다 (동영상 출력 및 사용자 입력용).
  4. 재생할 MediaItem로 플레이어를 준비합니다.
  5. 완료되면 플레이어를 놓습니다.

이러한 단계는 아래에 자세히 설명되어 있습니다. 전체 예는 다음을 참조하세요. 기본 데모 앱PlayerActivity

ExoPlayer를 종속 항목으로 추가

ExoPlayer 모듈 추가

AndroidX Media3을 사용하는 가장 쉬운 방법은 Gradle을 추가하는 것입니다. 앱의 build.gradle 파일에 필요한 라이브러리의 종속 항목 모듈을 마칩니다

예를 들어 DASH 재생 지원 및 UI 구성요소가 있는 ExoPlayer에 종속 다음과 같이 모듈에 종속 항목을 추가할 수 있습니다.

Kotlin

implementation("androidx.media3:media3-exoplayer:1.4.1")
implementation("androidx.media3:media3-exoplayer-dash:1.4.1")
implementation("androidx.media3:media3-ui:1.4.1")

Groovy

implementation "androidx.media3:media3-exoplayer:1.4.1"
implementation "androidx.media3:media3-exoplayer-dash:1.4.1"
implementation "androidx.media3:media3-ui:1.4.1"

여기서 1.4.1이 선호되는 버전입니다. 최신 버전은 출시 노트 참조). 모든 모듈은 동일한 버전이어야 합니다.

AndroidX Media3에는 외부 라이브러리를 사용하여 추가 기능을 제공합니다. 일부는 다음과 같습니다. Maven 저장소에서 사용할 수 있지만 다른 파일은 수동으로 빌드해야 합니다. 라이브러리 디렉터리를 찾아 개별 리드미에서 자세한 내용을 확인하세요.

사용 가능한 라이브러리 모듈에 대한 자세한 내용은 Google Maven AndroidX 미디어 페이지

자바 8 지원 사용 설정

아직 사용 설정하지 않았다면 모든 build.gradle에서 Java 8 지원을 사용 설정해야 합니다. android 섹션에 다음을 추가하여 ExoPlayer에 종속된 파일을 만듭니다.

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

멀티덱스 사용 설정

Gradle minSdkVersion이 20 이하인 경우 순서대로 멀티덱스 사용 설정 빌드 오류를 방지합니다

플레이어 만들기

다음을 제공하는 ExoPlayer.Builder를 사용하여 ExoPlayer 인스턴스를 만들 수 있습니다. 맞춤설정할 수 있습니다. 다음 코드는 만들 수 있습니다

Kotlin

val player = ExoPlayer.Builder(context).build()

자바

ExoPlayer player = new ExoPlayer.Builder(context).build();

대화목록 관련 참고사항

ExoPlayer 인스턴스는 단일 애플리케이션 스레드에서 액세스해야 합니다. 대상 대부분의 경우 애플리케이션의 기본 스레드여야 합니다. ExoPlayer의 UI 구성요소를 사용할 때 애플리케이션의 기본 스레드가 필요함 또는 IMA 확장 프로그램에서 사용할 수 있습니다

ExoPlayer 인스턴스에 액세스해야 하는 스레드는 명시적으로 지정할 수 있음 플레이어를 만들 때 Looper를 전달하여 지정됩니다. Looper이 지정된 경우 플레이어가 생성되는 스레드의 Looper는 스레드에 Looper이 없는 경우 Looper 애플리케이션의 기본 스레드가 사용됩니다. 모든 경우에 다음과 같은 스레드의 Looper는 플레이어에 액세스해야 하는 플레이어는 Player.getApplicationLooper

ExoPlayer의 스레딩 모델에 관한 자세한 내용은 '스레딩 모델' ExoPlayer Javadoc 섹션에 나와 있습니다.

뷰에 플레이어 연결

ExoPlayer 라이브러리는 미디어용으로 사전 빌드된 다양한 UI 구성요소를 제공합니다. 있습니다. 여기에는 다음을 캡슐화하는 PlayerView가 포함됩니다. 동영상이 재생되는 PlayerControlView, SubtitleView, Surface 있습니다. PlayerView는 애플리케이션의 레이아웃 XML에 포함될 수 있습니다. 예를 들어 플레이어를 뷰에 바인딩하는 방법은 다음과 같습니다.

Kotlin

// Bind the player to the view.
playerView.player = player

자바

// Bind the player to the view.
playerView.setPlayer(player);

다음과 같은 독립형 구성요소로 PlayerControlView를 사용할 수도 있습니다. 오디오 전용 사용 사례에 유용합니다.

ExoPlayer의 사전 빌드된 UI 구성요소를 사용하는 것은 선택사항입니다. 동영상 앱용 자체 UI를 구현하는 타겟 SurfaceView, TextureView SurfaceHolder 또는 Surface는 ExoPlayer의 setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder, setVideoSurface 메서드를 제공합니다. ExoPlayer의 addTextOutput 메서드는 재생 중에 렌더링되어야 하는 자막을 수신하는 데 사용됩니다.

재생목록 채우기 및 플레이어 준비

ExoPlayer에서 모든 미디어는 MediaItem로 표현됩니다. CANNOT TRANSLATE 미디어 조각이 있으면 상응하는 MediaItem를 빌드하여 플레이어를 준비하고 play를 호출하여 재생을 시작합니다.

Kotlin

// Build the media item.
val mediaItem = MediaItem.fromUri(videoUri)
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

자바

// Build the media item.
MediaItem mediaItem = MediaItem.fromUri(videoUri);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

ExoPlayer는 재생목록을 직접 지원하므로 플레이어를 준비할 수 있음 차례로 재생될 수 있습니다.

Kotlin

// Build the media items.
val firstItem = MediaItem.fromUri(firstVideoUri)
val secondItem = MediaItem.fromUri(secondVideoUri)
// Add the media items to be played.
player.addMediaItem(firstItem)
player.addMediaItem(secondItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

자바

// Build the media items.
MediaItem firstItem = MediaItem.fromUri(firstVideoUri);
MediaItem secondItem = MediaItem.fromUri(secondVideoUri);
// Add the media items to be played.
player.addMediaItem(firstItem);
player.addMediaItem(secondItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

재생목록을 준비할 필요 없이 재생 중에 업데이트할 수 있습니다. 반환합니다. 재생목록 채우기 및 조작에 대해 자세히 알아보려면 재생목록 페이지 이러한 상황에서 사용할 수 있는 다양한 옵션에 대해 자막 파일 자르기 및 첨부와 같은 미디어 항목을 만드는 것은 미디어 항목 페이지.

플레이어 제어

플레이어가 준비되면 메서드를 호출하여 재생을 제어할 수 있습니다. 있습니다. 다음은 가장 일반적으로 사용되는 몇 가지 메서드입니다.

  • playpause가 재생을 시작하고 일시중지합니다.
  • seekTo는 미디어 내 탐색을 허용합니다.
  • hasPrevious, hasNext, previous, next를 사용하면 있습니다.
  • setRepeatMode는 미디어 반복 여부 및 방식을 제어합니다.
  • setShuffleModeEnabled는 재생목록 셔플을 제어합니다.
  • setPlaybackParameters는 재생 속도와 오디오 피치를 조정합니다.

플레이어가 PlayerView 또는 PlayerControlView에 바인딩된 경우 이러한 구성 요소와의 사용자 상호작용은 호출됩니다.

플레이어 해제

더 이상 필요하지 않은 플레이어를 해제하여 다른 애플리케이션에서 사용할 수 있도록 동영상 디코더와 같은 제한된 리소스를 업데이트해야 합니다. 이 ExoPlayer.release를 호출하여 실행할 수 있습니다.