Ubuntu, Android

[Android] Exoplayer

vhxpffltm 2020. 5. 7. 22:06

Exoplayer는 오픈소스 미디어 플레이어 라이브러리이다. 기존의 MediaPlayer 보다 더욱 작고 유연하며 안정적이므로 많은 개발자들이 사용하는 오픈 소스 라이브러리이며 2014년 구글에서 오픈소스로 공개하였다. 우리가 즐겨보는 유튜브는ExoPlayer 를 사용한다.

 

공식 Github 홈페이지에 자세한 사항이 나와있다.

https://github.com/google/ExoPlayer

 

위의 사이트에 접속하면 기본적으로 어떻게 안드로이드 앱에 적용시키고 무엇인지 그리고 전체 소스코드를 확인할 수 있다. 전체 소스코드의 일부 분석 또한 간단하게 진행할 것이다.

 

https://exoplayer.dev/hello-world.html 에서 Exoplayer에 대한 정보를 얻을 수 있으며 지원 가능한 포맷, 디바이스 그리고 개발 방법에 대한 다양한 표준을 참고할 수 있다.

 

그렇다면 여기서는 Exoplayer 라이브러리를 사용하여 개발한 동영상 앱 재생과 우리가 원하는 Exoplayer 라이브러리 버전을 로컬에서 적용하는 방법에 대해 알아보자.

 

Exoplayer 로컬 추가

공식 Github에 있는대로 추가할 수 있다.

1
2
3
4
include ':app'
gradle.ext.exoplayerRoot = 'E:\\ExoPlayer-release-v2.10'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')
cs

setting.gradle (project setting) 내용이 include ':app' 만 존재할텐데 이 부분에 위와 같이 추가하고 동기화를 시켜주면 로컬 파일의 경로에 있는 Exoplayer의 버전을 다운받고 로컬에 있는 Exoplayer만 사용할 수 있다.

 

 

위와 같이 로컬에 있는 Exoplayer 버전의 모든 라이브러리가 설정된 모습이다.

 

여기서 분석해 볼 라이브러리는 core이다. core라이브러리는 추후에 분석하고 이같이 라이브러리가 추가되면 build.gradle도 함께 추가될 것이다.

 

이제 라이브러리를 프로젝트에 추가했으니 앱 프로젝트에 적용해 보자.

 

 

build.gradle (Module: app) 에 dependencies 에 추가하고자 하는 라이브러리를 위와 같이 추가한다. 필자는 exoplayer-library, hls, core, dash, ui 정도만 추가했다. 핵심인 core를 분석하기 위해 이렇게 추가하였다. 

 

필요한 라이브러리가 있다면 추가하면 된다.

 

이제 Exoplayer를 적용한 앱이 필요할텐데 오픈소스 app을 사용하였다.

 

https://androidwave.com/how-to-use-exoplayer-playing-audio-video/

 

위의 링크에서 제공하는 앱을 이용하여 Exoplayer를 테스트한다. 여기서 필자는 테스트를 하면서 각 동영상의 포맷과 설정때문에 앱을 실행하면 해당 동영상이 바로 실행되도록 코드를 조금 수정하였다. 그정도는 누구나 할 수 있을 것이다.

 

다음엔 앱 코드를 간단하게 살펴보고 Exoplayer의 동작흐름에 대해 좀 더 알아보도록 한다.