2010-04-25 64 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));