내 Android 앱에는 ExoPlayer 인터페이스를 구현하는 미디어 플레이어가 있습니다.Android ExoPlayer는 녹색 및 픽셀로 표시됩니다. onResume()
홈 버튼을 누르면 플레이어가 일시 중지 된 것으로 간주됩니다. 그런 다음 최근 앱에서 앱을 다시 시작하면 플레이어는 중단 한 부분부터 계속 재생해야합니다.
원래 에 player.release()
을 호출하여 전체 플레이어 인스턴스를 제거했습니다. 그런 다음 앱이 다시 시작되면 플레이어의 새 인스턴스를 만들고 seekTo()
을 사용하여 올바른 위치로 이동했습니다.
@Override
public void onPause() {
if (player != null) {
savePlayerPosition();
player.release();
player = null;
}
super.onPause();
}
@Override
public void onResume() {
super.onResume();
if (!player.isPlaying()) {
player = ExoPlayerFactory.newSimpleInstance(context, trackSelector,
new DefaultLoadControl(), drmSessionManager);
setPlayerListeners();
exoPlayerView.setPlayer(player);
player.setPlayWhenReady(false);
player.seekTo(playerWindow, playerPosition);
}
}
위의 코드의 문제는 내가 최근에 사용한 앱에서 응용 프로그램을로드 할 때마다, 플레이어가 대신 버퍼링 된 데이터를 유지하고 바로 재생 재개의 비디오를 다시 연결하고로드하는 데 약간의 시간이 걸린 것입니다 .
이 문제를 해결하기 위해 대신 코드를 변경하여 setPlayWhenReady()
으로 토글합니다.
@Override
public void onPause() {
if (player != null) {
player.setPlayWhenReady(false);
}
super.onPause();
}
@Override
public void onResume() {
super.onResume();
if (player != null && !player.isPlaying()) {
player.setPlayWhenReady(true);
}
}
이렇게하면 다시로드 문제가 해결되고 동영상은 중단 된 부분부터 바로 재생되기 시작합니다. 아래 그림과 같이 그러나 비디오가 다시 시작되면, 처음 몇 초 동안, 동영상, 색상 및 픽셀 화 꺼져 :
비디오가 몇 초 동안 재생 후에는 이력서 정상적인 착색 및 매끄러운 외관. 에뮬레이터뿐만 아니라 실제 장치를 사용할 때이 문제가 나타납니다.
플레이어가 엉망이 된 원인은 무엇입니까? 어떻게 수정하거나 피할 수 있습니까?