2017-02-27 2 views
0

J'écris une application Android qui accepte un HLS et montre via VideoView. Mais parfois il y a des morceaux manquants dans le flux, et mon joueur se bloque. Voici comment j'essaye de le réparer.Comment sauter des morceaux manquants dans Android lors de la lecture vidéo?

player.setOnErrorListener(playerErrorHandler); 

private class PlayerErrorHandler implements MediaPlayer.OnErrorListener { 

    private boolean handledError = false; 

    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     if (!handledError) { 
      if (!isOnline()) { 
       finish(); 
      } 
      //if we're here then we have a missing chunk 
      int currentPosition = mp.getCurrentPosition(); 
      // check if seekForward time is lesser than song duration 
      mp.seekTo(currentPosition + 10); 

     } else { 
      handledError = false; 
     } 
     return true; 
    } 
} 



private boolean isOnline() { 
    ConnectivityManager cm = 
      (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    return netInfo != null && netInfo.isConnectedOrConnecting(); 
} 

Je viens donc de vérifier erreur s'il n'y a rien de mal avec ma connexion, et si oks erevything, cela signifie que j'ai un morceau manquant dans mon flux. Mais le problème est, mon transfert ne fonctionne pas et il continue à lancer une erreur en continu. Comment puis-je transférer comme 10 secondes? Ou peut-être mieux, est-il possible de dire au mediaplayer de sauter automatiquement les morceaux manquants et de continuer à jouer?

Répondre

0

obtenu le bon chemin à travers des essais et des erreurs. Voici comment je sauter les morceaux manquants

modifié ces lignes

int currentPosition = mp.getCurrentPosition(); 
mp.seekTo(currentPosition + 10); 

à ces

int currentPosition = mp.getCurrentPosition(); 

player.setVideoPath(streamUrl); 
player.seekTo(currentPosition + 5000); 
player.start();