0

내 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); 
    } 
} 

이렇게하면 다시로드 문제가 해결되고 동영상은 중단 된 부분부터 바로 재생되기 시작합니다. 아래 그림과 같이 그러나 비디오가 다시 시작되면, 처음 몇 초 동안, 동영상, 색상 및 픽셀 화 꺼져 :

green screen

비디오가 몇 초 동안 재생 후에는 이력서 정상적인 착색 및 매끄러운 외관. 에뮬레이터뿐만 아니라 실제 장치를 사용할 때이 문제가 나타납니다.

플레이어가 엉망이 된 원인은 무엇입니까? 어떻게 수정하거나 피할 수 있습니까?

답변

2

ExoPlayer v2.3.0의 릴리스에서이 문제가 해결 된 것 같습니다.

그래도 완벽하지는 않습니다. 이제는 녹색으로 변하거나 픽셀 화 된 대신 비디오가 결합되기 전에 오디오가 분수로 재생되기 시작합니다. 그러나이 점프는 녹색 화면보다 덜 눈에 띄기 때문에이를 수정하려고합니다.