我开发的应用程序包含许多短(1-2秒)视频。
视频显示在一个活动中。用户可以重放视频(可能在播放视频时)或更改实际视频。
改变视频的部分代码:
String videoPath = getVideoPath();
videoView.setVideoPath(videoPath);
videoView.start();
这三行已导致应用加载新视频并播放。
视频完成后问题开始。从这一点开始,加载新视频会导致许多问题(例如,有时半部电影只播放声音,而屏幕为黑色空白)。重放视频也有类似的问题(我最终从上面调用3个通道)。
在完成电影发布资源或类似的事情之后,似乎是android(这就是为什么我设置相同的路径,当我想重播视频时)。
理想情况下,我希望视频能够在完成播放后暂停和寻找电影的开始(但我无法在OnCompletedListener中执行此操作,因为它已将状态更改为已停止...)。
我可以以某种方式实现这一目标吗? (我的意思是 - >在完成视频暂停和搜索到开始之后)
我已经尝试了暂停视频的所有组合,暂停它们,设置OnPreparedListener,设置OnCompletedListener。
THX!
答案 0 :(得分:7)
尝试类似
的内容mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.reset();
mVideoView.setVideoPath(file.getAbsolutePath());
mVideoView.start();
}
});
答案 1 :(得分:1)
停止播放,更改视频路径,启动视频
videoView.stopPlayback();
videoView.setVideoPath(newVideoPath);
videoView.start();
答案 2 :(得分:0)
我以下列方式重构了我的代码:每当我需要新视频时,我会重新加载整个活动。它大部分时间都有效,但现在在播放开始时我没有视频黑度,有时会出现“无法打开媒体文件”的错误。
它与android资源管理有关吗?我在onCompletionListener中发布了mediaPlayer。
从外部存储播放许多视频有没有人遇到过这样的问题?
答案 3 :(得分:0)
您可以执行以下操作:
videoView.setOnCompletionListener(MediaPlayer.OnCompletionListener { mp ->
mp.seekTo(0);//go to second 0
mp.start()// start again
})
我在此链接中发现: https://developer.android.com/reference/android/media/MediaPlayer