在JavaFX中播放连续视频

时间:2012-09-18 17:34:45

标签: media-player javafx-2

我想播放存在于硬盘中的两(或更多)视频,如何更新Media对象,以便Media Player自动转到下一个视频。

2 个答案:

答案 0 :(得分: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 :(得分:1)

这是硬盘中的sample program which plays an AudioPlaylist

该程序的工作原理是为每个要播放的文件创建一个包含新MediaPlayer和新媒体的列表。程序中有一个MediaView,对于每个MediaPlayer,onEndOfMedia,MediaView的MediaPlayer设置为列表中的下一个。它与jju的递归答案几乎相同。

注意,要更改播放媒体,您不要更新MediaPlayer中的媒体(由于Media和MediaPlayer之间存在1:1的对应关系,因此无法执行此操作),而是更新MediaPlayer中的MediaPlayer。 MediaView。

视频的概念与音频几乎相同,因为JavaFX中的音频和视频都表示为MediaPlayer播放的媒体,并通过MediaView进行管理。