我是 android 初学者,所以请放轻松;-)
我正在尝试播放从服务器下载的一系列视频文件。挑战在于我希望从一个文件平稳过渡到另一个文件。
我的想法是让两个 MediaPlayer 实例分别准备然后依次播放。我不清楚他们是否可以共享同一个 SurfaceView?或者,我应该使用不同的视图并在它们之间交换?或者,这个想法是一个坏主意?
当我尝试使用不可见的视图运行配置 MediaPlayer 实例时,它似乎使我的模拟器崩溃。
我是 android 初学者,所以请放轻松;-)
我正在尝试播放从服务器下载的一系列视频文件。挑战在于我希望从一个文件平稳过渡到另一个文件。
我的想法是让两个 MediaPlayer 实例分别准备然后依次播放。我不清楚他们是否可以共享同一个 SurfaceView?或者,我应该使用不同的视图并在它们之间交换?或者,这个想法是一个坏主意?
当我尝试使用不可见的视图运行配置 MediaPlayer 实例时,它似乎使我的模拟器崩溃。
您可以将播放列表制作为数组列表
private int url = 0;
private ArrayList<String> videoList = new ArrayList<String>();
并将 url 添加到列表中
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));
我关注了Video View 上的 API Demo,它是如何设置 VideoView 的:
mVideoView.setVideoURI(Uri.parse(Uri.encode(URLString)));
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
我不能100%确定,但可以肯定的是,当您调用 VideoView.setVideoURI() 时,VideoView 会创建并设置一个 MediaPlayer 对象。然后,它会在下一次调用时将 MediaController 附加到它。
您可能只需为 OnCompletionListener 设置回调(MediaPlayer 文档中的更多信息),然后为播放列表中的新文件调用 VideoView.setVideoURI()。