2

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

4

2 回答 2

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);
    } 
}
于 2012-09-18T17:59:06.387 回答
1

这是一个从硬盘播放 AudioPlaylist 的示例程序。

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

请注意,要更改正在播放的媒体,您无需更新 MediaPlayer 中的媒体(没有办法这样做,因为媒体和 MediaPlayer 之间存在 1:1 对应关系),而是更新 MediaView 中的 MediaPlayer。

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

于 2012-09-18T19:32:12.463 回答