Pertanyaan Android VideoView tidak memutar video berurutan


Saya ingin memutar 2 video berturut-turut. Video pertama selalu diputar dengan baik. Setelah selesai, Anda dapat melihat di log yang mengatur URL video baru, tetapi kemudian SurfaceView melempar kesalahan dan VideoView hanya membeku dengan frame terakhir dari video pertama. Tidak ada hal lain yang terjadi. Ada pikiran apa? Terima kasih!

LE: Anehnya, OnPreparedListener dipanggil untuk video kedua.

LE2: Kadang-kadang video kedua diputar dengan baik, kadang tidak ... dan saya belum mengubah baris kode antara saat berhasil dan kapan tidak. Itu murni acak ...

LE3: Solusi cepat adalah tambahkan baris ini sebelum Anda menetapkan URL video baru:

mVideoView.setVisibility(View.GONE);

Kode dari OnCompletionListener:

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

Ini adalah keluaran log saat video pertama selesai diputar:

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

5
2017-10-22 09:57


asal


Jawaban:


Coba di onCompletion(MediaPlayer mp) , menambahkan mp.stop() dan kemudian lakukan barang-barang Anda.

EDIT: Saya telah mencoba ini dan itu berhasil:

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

play_video();

dimana play_video adalah metode berikut:

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

 }

Satu-satunya perbedaan adalah saya memutar video yang sama dua kali, bukan dua video berbeda.


4
2017-10-22 10:09