0

Dans mon application Android, j'ai un lecteur multimédia qui implémente l'interface ExoPlayer.Android ExoPlayer devient vert et pixélisé onResume()

Lorsque le bouton d'accueil est enfoncé, le lecteur est censé faire une pause. Ensuite, lorsque l'application est relancée à partir d'applications récentes, le lecteur doit continuer à jouer à partir de l'endroit où il s'est arrêté.

À l'origine, j'ai appelé player.release() dans onPause() et s'est débarrassé de l'instance de lecteur entier. Ensuite, lorsque l'application a repris, j'ai créé une nouvelle instance du lecteur et utilisé seekTo() pour passer à la bonne position.

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

Le problème avec le code ci-dessus est que chaque fois que je charge l'application à partir des applications récentes, le joueur a pris quelques instants pour se reconnecter et charger la vidéo, au lieu de conserver les données mises en mémoire tampon et droit de reprendre loin de jouer .

Pour résoudre ce problème, je change mon code pour plutôt basculer setPlayWhenReady(). Cela a permis de résoudre le problème de rechargement et la lecture de la vidéo reprend maintenant à l'endroit où elle s'était arrêtée. Cependant, lorsque la vidéo reprend, pour les premières secondes, la vidéo est de couleur et pixélisée, comme le montre l'image ci-dessous:

green screen

Après la vidéo est lue pendant quelques secondes, il reprend la coloration normale et apparence lisse. Je vois ce problème en utilisant un périphérique réel ainsi qu'un émulateur.

Qu'est-ce qui cause des problèmes au lecteur? Comment puis-je corriger ou éviter cela?

Répondre

2

Il semble que ce problème a été corrigé avec la version d'ExoPlayer v2.3.0.

Ce n'est toujours pas parfait, cependant. Maintenant, au lieu de devenir vert et pixélisé, l'audio commence à jouer une fraction avant que la vidéo ne se joigne à lui. Ce saut est cependant moins visible qu'un écran vert, cependant, je considère cela comme une solution.