我正在尝试播放从服务器下载的一系列视频文件。挑战在于我希望从一个文件顺利过渡到另一个文件。
我的想法是有两个 MediaPlayer 实例,每个实例准备然后轮流播放。我不清楚它们是否可以共享相同的 SurfaceView?或者也许,我应该使用不同的视图并在它们之间交换?或者,这个想法总的来说就是个坏主意?
当我尝试使用不可见的视图运行配置 MediaPlayer 实例时,它似乎会使我的模拟器崩溃。
您可以将播放列表制作为数组列表
private int url = 0;
private ArrayList<String> videoList = new ArrayList<String>();
并将网址添加到列表
videoList.add("/mnt/sdcard/v4.mp4");
videoList.add("/mnt/sdcard/v3.mp4");
videoList.add("/mnt/sdcard/v1.mp4");
以及创建方法调用
playVideo(videoList.get(0));
然后调用OnCompletionListener方法
url++;
if (mVideoView != null) {
current = null;
mVideoView.stopPlayback();
}
if (url > videoList.size() - 1) {
url = 0;
}
playVideo(videoList.get(url));
我按照视频视图上的API 演示进行操作,以下是它如何设置视频视图:
mVideoView.setVideoURI(Uri.parse(Uri.encode(URLString)));
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
我不是 100% 确定,但非常确定,当您调用 VideoView.setVideoURI() 时,VideoView 会创建并设置一个 MediaPlayer 对象。然后它会在下一次调用时将 MediaController 附加到它。 您可能只需为 OnCompletionListener 设置回调(
MediaPlayer 文档中的更多信息