Fonction VideoView seekto () extrêmement incohérente
j'essaie de chercher à un endroit particulier dans une vidéo sur Android et je suis complètement coincé en raison des incohérences qu'il montre dans son comportement. Voici une liste de ce que j'ai fait
- VideoView.Seekto passe à 5: 19 pour une vidéo, 5: 17 pour une vidéo et 5:32 pour une autre pour les mêmes millisecondes(326000 ms)!
- puisque VideoView ne supporte pas onSeekListener, j'ai modifié le Source VideoView et il a ajouté son soutien. Pourtant, il ne fait pas de pause et commencez à chercher où je veux - il y a toujours un décalage! Le onSeekListener est appelé immédiatement quelques 6 s avant où je le veux arrêter. Dans de nombreux cas, la barre de recherche montre le bon moment et saute soudainement en arrière quelques secondes, même si j'appelle la vidéo.commencer de onSeekCompleteListener
Pourquoi est-ce si incohérent ? Y a-t-il une façon précise de chercher là où vous voulez aller en millisecondes dans videoview? Je sais que je devrais utiliser MediaPLayer + Surface mais puisque VideoView n'est qu'un wrapper des deux je le modifie à la source mais en vain.
je suis conscient de cela: http://code.google.com/p/android/issues/detail?id=9135 Mais y a-t-il un moyen de contourner cela et d'avoir un moyen défini de
1.) Cherchant à l'heure exacte en millisecondes
2.) Suspension et reprise à l'heure exacte?
3 réponses
vous devez attendre la recherche pour compléter.
VideoView n'a pas de OnSeekCompleteListener () mais vous pouvez accéder au MediaPlayer à partir de la méthode on-prepared de VideoView et ensuite définir le OnSeekCompleteListener, comme ceci:
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnSeekCompleteListener(new OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
//Seek completed. Move seekbar
}
});
}
});
je sais que ce n'est pas la bonne solution à votre question, mais jetez un oeil à cette bibliothèque qui est faite sur la vue Vidéo par défaut de Google
https://github.com/brianwernick/ExoMedia
il a toutes les fonctionnalités et plus qui est pris en charge par la vue Vidéo par défaut.
Vous pouvez utiliser cette vidéo et emVideoView.seekTo(1000);
pour passer à 1000 millisecondes dans la vidéo. Vous pouvez également avoir setOnSeekCompletionListener
pour faire le traitement quand chercher complet.