티스토리 뷰

반응형
allprojects {
    repositories {
        google()
        jcenter()
    }
}

 

제일먼저 project경로의 그래들 파일에 위와같이 추가해준다.

 

android {
	compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}

 

그리고 app경로의 그래들 파일에는 위와같이 추가해준다.

exoplayer2가 자바8을 사용하기 때문이다.

 

 //exoplayer
    implementation "com.google.android.exoplayer:exoplayer-core:2.11.1"
    implementation "com.google.android.exoplayer:exoplayer-ui:2.11.1"
    implementation "com.google.android.exoplayer:exoplayer-hls:2.11.1"

 

이어서 app경로의 그래들 파일에 위와같은 라이브러리를 사용하는데 뒤에 2.11.1버전은 19년12월 기준 최신버전이다.

 

//exoplayer변수
    private var player: SimpleExoPlayer? = null
    private var playWhenReady = true
    private var currentWindow = 0
    private var playbackPosition = 0L

 

MainActivity.kt 에 위처럼 변수들을 선언해준다.

 


fun initializePlayer(filename:String?){
        if(player == null){
            player = ExoPlayerFactory.newSimpleInstance(this.getApplicationContext());
            exoPlayerView!!
                .setPlayer(player);
        }
        var video_url:String = "{url}"
        var mediaSource:MediaSource = buildMediaSource(Uri.parse(video_url))
        //준비
        player!!.prepare(mediaSource, true, false)
        //스타트, 스탑
        player!!.playWhenReady.and(playWhenReady)
    }

    fun buildMediaSource(uri: Uri) : MediaSource{
        var userAgent:String = Util.getUserAgent(this, "project_name")
        if(uri.getLastPathSegment().contains("mp3") || uri.getLastPathSegment().contains("mp4")){
            return ExtractorMediaSource.Factory(DefaultHttpDataSourceFactory(userAgent)).createMediaSource(uri)
        }else if(uri.getLastPathSegment().contains("m3u8")){
            return HlsMediaSource.Factory(DefaultHttpDataSourceFactory(userAgent)).createMediaSource(uri)
        }else{
            return ExtractorMediaSource.Factory(DefaultDataSourceFactory(this, userAgent)).createMediaSource(uri)
        }
    }
    fun releasePlayer(){
        if(player != null){
            playbackPosition = player!!.currentPosition
            currentWindow = player!!.currentWindowIndex
            playWhenReady = player!!.playWhenReady
            exoPlayerView!!.setPlayer(null)
            player!!.release()
            player = null
        }
    }
    override fun onStop() {
        super.onStop()
        releasePlayer()
    }

 

그리고 onCreate함수 밑에 위 코드를 붙여준다.

마지막으로 비디오를 실행하고픈 위치에 initializePlayer() 함수를 넣어주면 끝이다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함