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

  1. 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)!
  2. 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?

23
demandé sur Slartibartfast 2012-10-17 20:42:00

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

    } 
}); 
1
répondu Shivam Agrawal 2017-12-12 19:34:58

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.

-1
répondu Rudrik Patel 2017-12-15 11:59:32
-2
répondu J.J. Kim 2017-05-23 12:34:19