2010-04-25 2 views
0

Je suis android débutant, alors allez-y doucement sur moi ;-)Est-ce que android supporte les listes de lecture pour les fichiers vidéo?

J'essaie de lire une séquence de fichiers vidéo que je télécharge à partir d'un serveur. Le défi est que je veux avoir une transition en douceur d'un fichier à l'autre.

Mon idée est d'avoir deux instances de MediaPlayer préparant et jouant ensuite à tour de rôle. Ce n'est pas clair pour moi s'ils peuvent partager le même SurfaceView? Ou peut-être, je devrais utiliser des vues différentes et échanger entre eux? Ou, l'idée est une mauvaise idée tous ensemble? Lorsque j'essaie d'exécuter la configuration de l'instance de MediaPlayer avec une vue qui n'est pas visible, elle semble planter mon émulateur.

+0

Salut DanJ :) S'il vous plaît dites-nous comment avez-vous résolu votre problème? – AB1209

+0

Je n'ai pas réussi à trouver une méthode avec des transitions douces – DanJ

Répondre

0

J'ai suivi les API Demo on Video View, et voici comment il met en place le VideoView:

mVideoView.setVideoURI(Uri.parse(Uri.encode(URLString))); 
mVideoView.setMediaController(new MediaController(this)); 
mVideoView.requestFocus(); 

Je ne suis pas 100% sûr, mais à peu près sûr que le VideoView crée et met en place un objet MediaPlayer lorsque vous appelez VideoView.setVideoURI(). Il lui attache ensuite un MediaController avec le prochain appel.

Vous pouvez probablement simplement configurer un rappel pour OnCompletionListener (more info here in MediaPlayer doc), et avoir cet appel VideoView.setVideoURI() pour le nouveau fichier dans la playlist.

+1

Oui, il est possible de gérer le passage onComplete dans une nouvelle URL. Mais il en résulte un décalage entre les films, et un écran vide que j'aimerais éviter. – DanJ

3

vous pouvez faire une liste de lecture liste de tableau

private int url = 0; 
private ArrayList<String> videoList = new ArrayList<String>(); 

et ajouter url à la liste

videoList.add("/mnt/sdcard/v4.mp4"); 
    videoList.add("/mnt/sdcard/v3.mp4"); 
    videoList.add("/mnt/sdcard/v1.mp4"); 

et méthode de création appel

playVideo(videoList.get(0)); 

puis OnCompletionListener appel de méthode

url++; 
     if (mVideoView != null) { 
      current = null;    
      mVideoView.stopPlayback(); 
     } 

     if (url > videoList.size() - 1) { 
      url = 0; 
     } 

     playVideo(videoList.get(url)); 
Questions connexes