2012-09-18 70 views

回答

2

現在我不能測試它,但我認爲它應該工作:

public MediaView createMediaView(Collection<String> urls){ 
    MediaView mediaView = new MediaView(); 
    initMediaPlayer(mediaView, urls.iterator()); 
    return mediaView; 
} 

private void initMediaPlayer(
      final MediaView mediaView, 
      final Iterator<String> urls 
){ 
    if (urls.hasNext()){ 
     MediaPlayer mediaPlayer = new MediaPlayer(new Media(urls.next())); 
     mediaPlayer.setAutoPlay(true); 
     mediaPlayer.setOnEndOfMedia(new Runnable() { 
      @Override public void run() { 
       initMediaPlayer(mediaView, urls); 
      } 
     }); 
     mediaView.setMediaPlayer(mediaPlayer); 
    } 
} 
1

下面是從硬盤驅動器sample program which plays an AudioPlaylist

該程序的工作原理是爲每個要播放的文件創建一個包含新MediaPlayer和新媒體的列表。在程序中有一個MediaView,對於每個MediaPlayer,在EndOfMedia上,MediaView的MediaPlayer被設置爲列表中的下一個。這與jju的遞歸答案几乎相同。

注意,要更改正在播放的媒體,您不要更新MediaPlayer中的媒體(因爲Media和MediaPlayer之間存在1:1對應關係,所以無法這樣做),而是將Me​​diaPlayer更新爲MediaView。

視頻的概念與音頻非常相似,因爲JavaFX中的音頻和視頻都表示爲MediaPlayer播放的媒體,並通過MediaView進行管理。