마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[Android] 동영상 플레이어 관련 질문..!

0 추천
안녕하세요.

 

제가 동영상 플레이어를 만드려 만들고 있는데 고수님들의 조언을 좀 구하고 싶습니다.

2개의 동영상을 하나의 액티비티에 올리려 하고 두개가 동시에 재생이 되어야 합니다.

 

그리고 switch라는 button을 만들어 해당 버튼을 누르면 1번 동영상이 hide되고 2번 동영상은 show

 

또 swtich버튼을 누릴시 1번 동영상은 show 2번 동영상은 hide가 되어야 합니다.

 

hide될떄 각 동영상은 play되고 있어야 합니다.

 

VideoView를 쓰니 hide 할떄 surfaceView destory되어 show를 하여도 동영상이 나타나지 않고,

MediaPlayer로는 가능할까요? 아니면 다른 플레이어 예를들면 ExoPlayer같은거에서는 가능할까요?

 

답변 부탁드립니다!
김트릿 (380 포인트) 님이 2018년 7월 3일 질문

1개의 답변

0 추천

VideoView를 쓰니 hide 할떄 surfaceView destory되어 show를 하여도 동영상이 나타나지 않고,
MediaPlayer로는 가능할까요? 아니면 다른 플레이어 예를들면 ExoPlayer같은거에서는 가능할까요?

=> MediaPlayer 로 가능합니다. VideoView의 경우 hide 시 surfaceDestory 가 되면서,  stopPlayback이 불려 재생이 멈추기 때문에 안되는데, 이 때 MediaPlayer.setDisplay 로 화면 정보를 null 로 변경 해 주면, 화면 없이 재생됩니다. 다시 show가 불리면, surfaceChanged 가 불리니. 이 정보를  MediaPlayer.setDisplay 로 넘겨주시면 화면이 나오고요...

이건 ExoPlayer도 유사하게 surface만 변경 해주면 될 뿐 사용법은  동일합니다. 

단 DRM 걸린 컨텐츠의 경우 단말에 따라 화면 정보를 설정을 변경 못 할 수 있습니다.

익명사용자 님이 2018년 7월 3일 답변
2018년 7월 3일 수정
답변 감사합니다.
하지만 MediaPlayer.setDisplay를 null로 할시 nullpointException 에러가납니다.
해당 동작이 정상 동작하는게 맞는건가요?
https://developer.android.com/reference/android/media/MediaPlayer.html#setDisplay(android.view.SurfaceHolder) 에 " null surface holder or surface will result in only the audio track being played." 설명 되어 있듯이 null로 파라메터 넣으면, 오디오만 재생 됩니다.  nullpointException 이 났다면, MediaPlayer 객체가 null일 것으로 생각되니 확인 해 보세요.
...