-
Android Exoplayer 플레이리스트안드로이드 2020. 3. 17. 09:08
이번엔 Exoplayer에서 플레이리스트를 설정하는 법에 대해 알아보자
플레이리스트 설정 전에 일단 영상 하나를 재생하는 프로세스부터 알고 해야 될 것 같다.
영상 재생은 아래와 같은 단계를 거친다.
// playerView View 맵핑 playerView = findViewById(R.id.playerView); // 영상 Uri Uri uri = Uri.parse("/storage/emulated/0/test.mp4"); DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "PlayerSample")); MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri); // 플레이어 생성 player = new SimpleExoPlayer.Builder(context).build(); // 재생 준비되면 바로 재생 시작 player.setPlayWhenReady(true); // 플레이어 뷰에 플레이어 맵핑 playerView.setPlayer(player); // 타임바 사용 timeBar.setEnabled(true); // 플레이어에 영상재생 준비 player.prepare(mediaSource);
기본적으로 Exoplayer에선 DataSource를 이용해 영상 스트림을 읽을 수 있는 형태로 표현하고 그 형태를 MediaSource라 한다. 따라서 위 코드를 보면 DataSource에서 영상 uri를 이용해 MediaSource를 생성하는 것을 볼 수 있다.
이 로직을 그대로 이용해 플레이 리스트를 만들 수 있다.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "PlayerSample")); MediaSource videoSource[] = new MediaSource[listCount]; for (int i = 0; i<listCount; i++) { videoSource[i] = new ProgressiveMediaSource.Factory(dataSourceFactory).setTag(i).createMediaSource(mList[i]); } final MediaSource mediaSource = new ConcatenatingMediaSource(videoSource);
영상 하나를 재생하는 코드와 플레이어 관련 부분은 똑같기 때문에 MediaSource를 구성하는 코드만 보면 된다.
똑같이 DataSource를 생성하고 MediaSource를 배열 형태로 선언한다.
그리고 조금 다른 점은 DataSource를 이용해 MediaSource를 생성할 때 setTag()라는 메소드가 사용된다.
플레이리스트에선 영상마다 자신의 고유 태그 값이 있어야 영상을 구분할 수 있기 때문에 이와 같은 메소드가 사용되는 것이다.
MediaSource는 ConcatenatingMediaSource를 이용해 플레이리스트를 만들 수 있다.
'안드로이드' 카테고리의 다른 글
Android Exoplayer 제스쳐 기능 추가 (0) 2020.05.08 [Kotlin] 함수형 프로그래밍 (0) 2020.04.01 Android Exoplayer UI 커스터마이징 (0) 2020.03.16 마스크 구매 알림이 개발기 - 3 (0) 2020.03.13 마스크 구매 알림이 개발기 - 2 (0) 2020.03.11 댓글