我想播放存在于硬盘中的两(或更多)视频,如何更新Media对象,以便Media Player自动转到下一个视频。
答案 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进行管理。