주의! 이글은 개인 공부 목적으로 작성된 포스팅입니다.
잘못된 내용이 있을 수 있음을 주의해주세요.
오늘은 ExoPlayer를 배워볼까 한다.
ExoPlayer는 Android 프레임워크에 속하지 않고 Android SDK에서 별도로 배포되는 오픈소스 프로젝트다.
- Adaptive streaming
해당 라이브러리를 사용하면 손쉽게 Adaptive streaming을 사용할 수 있다. 이미 구현되어있다.
Adaptive streaming의 대표적인 예는 사용자의 인터넷 환경에 맞춰 유튜브 화질이 조절되는 예로 알 수 있다.- 손쉬운 구현
해당 라이브러리를 사용하면 기본적으로 동영상 플레이의 인터페이스 제공과 간단한 코드 몇 줄이면 동영상 재생을 구현할 수 있기 때문에 많은 시간을 절약할 수 있다.
오늘은 많은 설명보단 구현해보고 체험해봐야 빨리 익힐 수 있다.
implementation 'com.google.android.exoplayer:exoplayer:2.19.0'
implementation 'com.google.android.exoplayer:exoplayer-core:2.19.0'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.19.0'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.19.0'
ExoPlayer는 많은 기능을 지원하기에 위와 같이 implementation이 나뉘어있다.
예를 들어 dash를 사용하고 싶으면 위와 같이 추가 해줘야한다.
ExoPlayer의 모든 모듈 버전은 위와 같이 동일한 버전으로 사용해야 한다.
이제 우리는 인터넷에서 영상 소스를 받아 재생할 예정이기 때문에 AndroidManifest.xml에 인터넷 권한 추가를 해주자.
<uses-permission android:name="android.permission.INTERNET"/>
또한, HTTPS를 사용한 접속이 아닌 HTTP 접속을 할 경우를 대비해 <application> 태그 안에 아래 코드를 추가해주자.
android:usesCleartextTraffic="true"
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
위와 같이 xml을 작성해준다.
예제 소스 : "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
lateinit var player : ExoPlayer
private val videoUrl = "예제 소스"
제일 먼저 적절한 위치에 위 2개의 변수를 선언해준다.
private fun initailizePlayer(){
player = ExoPlayer
.Builder(this)
.build()
.also { exoPlayer ->
binding.videoView.player = exoPlayer
}
}
onCreate()에 작성해도 되지만 가독성을 위해 함수로 작성해주자.
해당 함수는 기본적으로 ExoPlayer를 초기화 및 생성해주는 함수이다.
val mediaItem = MediaItem.fromUri(videoUri)
ExoPlayer는 기본적으로 mediaItem을 등록해줘야 플레이를 할 수 있다. 재생 목록 정도로 생각하면 된다.
player.setMediaItem(mediaItem)
player.prepare()
player.play()
위의 과정이 끝나면 기본적으로 ExoPlayer에서 미디어를 재생할 준비는 끝났다.
아래 결과를 살펴보자.
긴 글 읽어주셔 감사하고 피드백은 언제나 환영입니다.
감사합니다.