2010-04-25 66 views
0

我是和机器人初学者,所以去我容易;-)Android是否支持视频文件的播放列表?

我想播放我从服务器上下载的视频文件序列。 挑战在于我想从一个文件到另一个文件的平滑过渡。

我的想法是每个准备好两个MediaPlayer实例,然后轮流播放。我不清楚他们是否可以共享同一个SurfaceView? 或者,我应该使用不同的意见,并在他们之间交换? 或者,这个想法是一个坏主意吗?

当我尝试运行配置MediaPlayer实例与不可见的视图时,它似乎崩溃我的模拟器。

+0

嗨DanJ :)请告诉我们你是如何解决你的问题? – AB1209 2013-01-04 13:42:51

+0

我无法找到平滑过渡的方法 – DanJ 2013-01-13 09:40:46

回答

0

我跟着API Demo on Video View,这里是它如何树立VideoView:

mVideoView.setVideoURI(Uri.parse(Uri.encode(URLString))); 
mVideoView.setMediaController(new MediaController(this)); 
mVideoView.requestFocus(); 

我不是100%肯定,但可以肯定的是,VideoView创建并设置了一个MediaPlayer对象时你可以调用VideoView.setVideoURI()。然后在下一次调用时将MediaController附加到它。

您可能只需为OnCompletionListener(more info here in MediaPlayer doc)设置一个回调,并为播放列表中的新文件调用VideoView.setVideoURI()。

+1

是的,可以在新网址中处理onComplete传递。 但是这会导致电影和我想避免的黑屏之间的延迟。 – DanJ 2010-04-27 08:19:24

3

你可以做一个播放列表作为数组列表

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)); 
相关问题