ExoPlayer
ExoPlayer는 Google에서 제공하는 앱 수준 미디어 재생 라이브러리입니다.
MediaPlayer 대신 사용할 수 있으며, 로컬 및 인터넷을 통해 오디오/비디오를 재생할 수 있습니다.
또한, MediaPlayer에서 지원되지 않는 HTTP 및 SmoothStreaming과 같은 많은 기능을 지원합니다.
ExoPlayer 구현하기
1. Manifest에 권한 선언
ExoPlayer를 사용하기 위해서 인터넷에 대한 권한을 추가합니다.
<uses-permission android:name="android.permission.INTERNET" />
2. build.gradle에 의존성 추가
ExoPlayer를 사용하기 위해서 build.gradle에 ExoPlayer 라이브러리를 추가합니다.
implementation 'com.google.android.exoplayer:exoplayer:2.19.0'
3. ExoPlayerView 추가
PlayerView는 미디어를 화면에 표시할 때 사용되는 뷰입니다.
- auto_show : 콘텐츠가 재생되거나 정지할 때, 혹은 끝나거나 재생에 실패할 때 컨트롤러가 자동으로 나오도록 설정
- use_controller : 비디오를 재생할 때, 재생 버튼 등이 있는 컨트롤러를 사용할지 설정
- controller_layout_id : PlayerView에서 사용할 컨트롤러의 레이아웃도 커스텀하여 지정
- resize_mode : 재생되는 콘텐츠를 PlayerView 크기에 맞게 설정
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:auto_show="true"
app:use_controller="false"
app:controller_layout_id="@layout/layout_player_control"
app:resize_mode="fixed_width" />
/>
4. ExoPlayer 객체 생성
미디어를 재생하는 데 사용되는 ExoPlayer 객체를 생성하고 초기화합니다.
이 과정에서 ExoPlayer에 대한 설정을 추가할 수 있습니다.
private var player: ExoPlayer? = null
private fun initExoPlayer() {
player = ExoPlayer.Builder(this).build()
.also { exoPlayer ->
binding.playerView.player = exoPlayer
binding.playerView.useController = false
exoPlayer.addListener(object : Player.Listener {
override fun onIsPlayingChanged(isPlaying: Boolean) {
super.onIsPlayingChanged(isPlaying)
// ...
}
})
}
}
또한, ExoPlayer 객체 생성은 각 생명 주기에 따라 메모리 해제(release)와 대응되어야 합니다.
즉, onCreate()에서 생성했다면 onDestroy()에서 release해야 합니다.
onStart() - onStop() / onResume() - onPause()
override fun onStart() {
super.onStart()
if (player == null) {
initExoPlayer()
}
}
override fun onResume() {
super.onResume()
if (player == null) {
initExoPlayer()
}
}
override fun onPause() {
super.onPause()
player?.pause()
}
override fun onStop() {
super.onStop()
player?.stop()
}
override fun onDestroy() {
super.onDestroy()
player?.release()
}
5. ExoPlayer 실행
먼저 콘텐츠를 재생하기 위해서 필요한 가장 작은 요소인 MediaItem을 하나 생성합니다.
MediaItem에는 다양한 유형이 있으며, 다음은 비디오 URL을 통해 미디어를 재생하는 방법입니다.
player?.setMediaItem(MediaItem.fromUri(Uri.parse(videoUrl)))
player?.prepare()
player?.play()
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] ML Kit를 사용하여 얼굴 인식 (0) | 2023.10.07 |
---|---|
[Android] CameraX 사용하기 (0) | 2023.10.06 |
[Android] Cloud Firestore와 Cloud Storage 사용하기 (0) | 2023.09.29 |
[Android] 카카오 로그인 구현하기 (0) | 2023.09.22 |
[Android] Moshi로 JSON 파싱하기 (0) | 2023.09.14 |