2012-10-22 9 views
5

Ich möchte 2 Videos in einer Reihe spielen. Das erste Video spielt immer gut. Nach Abschluss des Vorgangs können Sie im Protokoll sehen, dass die neue Video-URL festgelegt wird, aber dann gibt SurfaceView einen Fehler aus und das VideoView friert nur mit dem letzten Frame des ersten Videos ein. Nichts anderes passiert. Irgendwelche Gedanken? Vielen Dank !Android VideoView nicht sequentielle Videos abspielen

LE: Überraschenderweise wird der OnPreparedListener für das zweite Video aufgerufen.

LE2: Manchmal spielt das zweite Video gut, manchmal nicht ... und ich habe die Codezeile nicht geändert, wenn es funktioniert und wann nicht. Es ist rein zufällig ...

LE3: Schnelle Lösung ist diese Zeile hinzufügen, bevor Sie die neue Video-URL ein:

mVideoView.setVisibility(View.GONE); 

-Code von OnCompletionListener:

setCurrentPlaybackUrl(); // sets mCurrentMediaUrl to the second video URL 
mVideoView.setVideoPath(mCurrentMediaUrl); 
mVideoView.start(); 

Dies ist das Protokoll ausgegeben, wenn das erste Video beendet Wiedergabe:

10-22 12:32:35.762: I/AwesomePlayer(126): setDataSource_l('https://xx/TestingVideo_lo.mp4') 
10-22 12:32:35.762: E/BufferQueue(123): [SurfaceView] connect: already connected (cur=3, req=3) 
10-22 12:32:35.762: E/MediaPlayerService(126): setVideoSurfaceTexture failed: -22 
10-22 12:32:35.762: E/BufferQueue(123): [SurfaceView] connect: already connected (cur=3, req=3) 
10-22 12:32:35.762: E/MediaPlayerService(126): setVideoSurfaceTexture failed: -22 

Antwort

4

Versuchen Sie, auf die onCompletion(MediaPlayer mp), t o fügen Sie mp.stop() hinzu und dann machen Sie Ihre Sachen.

EDIT: Ich habe dies versucht und es funktioniert:

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
@Override 
public void onCompletion(MediaPlayer mp) { 
     play_video(); 
} 
}); 

play_video(); 

wo play_video das folgende Verfahren:

void play_video() { 
    Uri uri = Uri.parse(video_link); 
    videoView.setVideoURI(uri);  
    videoView.requestFocus(); 
    videoView.setVisibility(View.VISIBLE); 
    videoView.start(); 

} 

Der einzige Unterschied ist, dass ich das gleiche Video zweimal gespielt, nicht zwei verschiedene Videos.

+0

Nichts hat sich geändert. –

+1

Manchmal spielt das zweite Video gut, manchmal nicht ... und ich habe die Codezeile nicht geändert, wenn es funktionierte und wenn nicht. Es ist rein zufällig ... –

+0

0/3 erfolgreiche Versuche mit 2 verschiedenen URLs. 1/3 erfolgreiche Versuche mit derselben URL. Ich werde verrückt ... –