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?