2012-11-02 14 views
14

Sono nuovo ad Android e voglio riprodurre video uno dopo l'altro contemporaneamente in modo che assomigli al video continuo.Riproduci video uno dopo l'altro contemporaneamente senza intoppi [senza passaggio visibile da uno all'altro]

Ho trovato questo link su StackOverflow molto utile. how-to-play-videos-one-after-another-simultaneously Quando sto usando questo allora se io sono in grado di riprodurre i video uno dopo l'altro, Ma il passaggio da un segmento ad altri risultati in pausa il video per un secondo prima di giocare successivo. Quindi non sembra video continuo a causa di questo.

Please help me per risolvere il mio problema. Ecco il mio codice.

public class VideoActivity extends Activity{ 

    VideoView videoView, videoView1; 
    MediaController mc; 
    int count = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 

     videoView = (VideoView) findViewById(R.id.VVSimpleVideo); 
     setup(); 
     videoView.setOnCompletionListener(completionListener); 

    } 

    public void setup() { 

     String _path = "/mnt/sdcard/Video/"+count+".mp4"; 
     videoView.setVideoPath(_path); 
     videoView.start(); 
     count++; 
    } 


    private OnCompletionListener completionListener=new OnCompletionListener() { 

     public void onCompletion(MediaPlayer mp) { 
      mp.stop(); 
      setup(); 
     } 
    }; 

} 

Ora ho provato a giocare prendendo due istanze della classe VideoView. Provato per riprodurre il primo video dal primo lettore e il secondo video dal secondo lettore, Terzo video dal primo giocatore e il quarto video dal secondo lettore e così via.

Ma ancora non riesco a riprodurre il video senza problemi e lo stesso problema esiste.

Ecco il mio codice con doppio lettore.

public class VideoActivity extends Activity{ 

    VideoView videoView, videoView1; 
    MediaController mc; 
    int count = 0; 
    String _path; 
    String _path1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 

     videoView = (VideoView) findViewById(R.id.VVSimpleVideo); 
     _path = "/mnt/sdcard/Video/"+count+".mp4"; 
     videoView.setVideoPath(_path); 
     videoView.start(); 
     //setup(); 
     videoView.setOnCompletionListener(completionListener); 

     videoView1 = (VideoView) findViewById(R.id.VVSimpleVideo); 

     videoView1.setOnCompletionListener(completionListener1); 
     count++; 
     _path1 = "/mnt/sdcard/Video/"+count+".mp4"; 
     videoView1.setVideoPath(_path1); 
    } 

    public void setup() { 


     videoView.start(); 
     count++; 
     _path1 = "/mnt/sdcard/Video/"+count+".mp4"; 
     videoView1.setVideoPath(_path1); 
    } 

    public void setup1() { 


     videoView1.start(); 

     count++; 
     _path = "/mnt/sdcard/Video/"+count+".mp4"; 
     videoView.setVideoPath(_path); 
    } 

    private OnCompletionListener completionListener=new OnCompletionListener() { 

     public void onCompletion(MediaPlayer mp) { 
      mp.stop(); 
      setup1();  

     } 
    }; 

    private OnCompletionListener completionListener1=new OnCompletionListener() { 

     public void onCompletion(MediaPlayer mp) { 
      mp.stop(); 

      setup();   

     } 
    }; 

} 
+0

Ciao, ho anche un problema simile. Sei riuscito a ottenere il minimo tempo di "cambio schermo nero"? – codeshark

risposta

2

non sei davvero utilizzando due VideoViews a tutti, si assegnano sia VideoView e VideoView1-R.id.VVSimpleVideo, quindi sono lo stesso oggetto. Ciò significa che ogni volta che si preme onCompletion, si imposta nuovamente su di esso, invece di impostarne uno e suonare l'altro.

Provare a creare due oggetti separati VideoView nel layout. Impostarne uno su VISIBLE e uno su GONE/INVISIBLE e scambiare quando si desidera modificare.

Non posso garantire che lo renderà "senza soluzione di continuità", tuttavia, poiché è un'attività quasi impossibile. Anche la maggior parte dei lettori multimediali desktop non è veramente perfetta. Dipende solo da quale tolleranza hai per le cuciture.

+0

Hi Geobits, Grazie per la risposta. Grazie per aver corretto due diversi VideoView nel layout. Ma non è possibile avviare il secondo se DISPONIBILE/INVISIBILE. Ogni volta solo il primo giocatore lavora quando arriva il suo turno. Quindi ho provato a impostare la visibilità al volo da videoView.setVisibility (0); Non riesco a trovare VISIBLE/GONE/INVISIBLE come valori possibili, quindi inserisci 0. Non riesci ancora a mostrare fotogrammi dal secondo video, anche se la musica sta arrivando. – piku

+0

Ciao Sono in grado di modificare la visibilità al volo tramite \t videoView1.setVisibility (View.VISIBLE) Ma quando si sta passando mostra qualche blackout in mezzo, quindi suonare non è regolare. – piku

Problemi correlati