Android - ExoPlayer?

Lee Jung-hwan·2023년 7월 14일
0

Android

목록 보기
2/4

주의! 이글은 개인 공부 목적으로 작성된 포스팅입니다.
잘못된 내용이 있을 수 있음을 주의해주세요.

오늘은 ExoPlayer를 배워볼까 한다.
ExoPlayer는 Android 프레임워크에 속하지 않고 Android SDK에서 별도로 배포되는 오픈소스 프로젝트다.


⭐️ 이걸 쓰면 뭐가 좋을까?

  1. Adaptive streaming
    해당 라이브러리를 사용하면 손쉽게 Adaptive streaming을 사용할 수 있다. 이미 구현되어있다.
    Adaptive streaming의 대표적인 예는 사용자의 인터넷 환경에 맞춰 유튜브 화질이 조절되는 예로 알 수 있다.
  2. 손쉬운 구현
    해당 라이브러리를 사용하면 기본적으로 동영상 플레이의 인터페이스 제공과 간단한 코드 몇 줄이면 동영상 재생을 구현할 수 있기 때문에 많은 시간을 절약할 수 있다.

⚙️ 구현해 보자!

오늘은 많은 설명보단 구현해보고 체험해봐야 빨리 익힐 수 있다.

제일 먼저 Build.gradle(Moudle: app) 단위에 아래 Dependencies를 추가해주자.

    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 권한 추가

이제 우리는 인터넷에서 영상 소스를 받아 재생할 예정이기 때문에 AndroidManifest.xml에 인터넷 권한 추가를 해주자.

<uses-permission android:name="android.permission.INTERNET"/>

또한, HTTPS를 사용한 접속이 아닌 HTTP 접속을 할 경우를 대비해 <application> 태그 안에 아래 코드를 추가해주자.

android:usesCleartextTraffic="true"
  • Android는 기본적으로 HTTP 방식을 허가하지 않기 때문에 위의 방법은 좋은 방법은 아니다.

xml 작성

<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"

  1. 전역 변수 설정
lateinit var player : ExoPlayer
private val videoUrl = "예제 소스"

제일 먼저 적절한 위치에 위 2개의 변수를 선언해준다.

  1. InitializePlayer() 함수 작성
 private fun initailizePlayer(){
        player = ExoPlayer
            .Builder(this)
            .build()
            .also { exoPlayer ->
                binding.videoView.player = exoPlayer
        }
    }

onCreate()에 작성해도 되지만 가독성을 위해 함수로 작성해주자.
해당 함수는 기본적으로 ExoPlayer를 초기화 및 생성해주는 함수이다.

  1. mediaItem 등록
 val mediaItem = MediaItem.fromUri(videoUri)

ExoPlayer는 기본적으로 mediaItem을 등록해줘야 플레이를 할 수 있다. 재생 목록 정도로 생각하면 된다.

  1. meida 등록 및 재생
		player.setMediaItem(mediaItem)
        player.prepare()
        player.play()

위의 과정이 끝나면 기본적으로 ExoPlayer에서 미디어를 재생할 준비는 끝났다.
아래 결과를 살펴보자.


😆 결과


긴 글 읽어주셔 감사하고 피드백은 언제나 환영입니다.
감사합니다.

profile
안녕하세요😁 안드로이드 개발자 이정환 입니다~⭐️

0개의 댓글