我想连续播放2个视频。第一个视频总是播放得很好。完成后,您可以在日志中看到它设置新的视频URL,但SurfaceView会抛出错误,VideoView会冻结第一个视频的最后一帧。没有其他事情发生。 有什么想法吗 ?谢谢!
LE:令人惊讶的是,第二个视频会调用OnPreparedListener。
LE2:有时候第二个视频播放得很好,有时却没有...而且我没有在它工作和不工作之间改变一行代码。这纯粹是随机的......
LE3:快速解决方案是在设置新视频网址之前添加此行:
mVideoView.setVisibility(View.GONE);
OnCompletionListener中的代码:
setCurrentPlaybackUrl(); // sets mCurrentMediaUrl to the second video URL
mVideoView.setVideoPath(mCurrentMediaUrl);
mVideoView.start();
这是第一个视频完成播放时的日志输出:
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
答案 0 :(得分:4)
尝试onCompletion(MediaPlayer mp)
,添加mp.stop()
然后再做你的事情。
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play_video();
}
});
play_video();
其中play_video
是以下方法:
void play_video() {
Uri uri = Uri.parse(video_link);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.setVisibility(View.VISIBLE);
videoView.start();
}
唯一的区别是我播放了两次相同的视频,而不是两个不同的视频。