我有List<MediaPlayer>
正在填充
private List<MediaPlayer> players() {
for (String file : path.list((dir1, name) -> {
if (name.endsWith(SUPPORTED_VIDEO_FILE_EXTENSIONS)){
return true;
}
return false;
})) {
players.add(createPlayer(Paths.get(path + "/" + file).toUri().toString()));
System.out.println(Paths.get(path + "/" + file).toUri().toString());
}
return players;
}
在我的情况下,List<MediaPlayer>
的大小为3。比我在这里使用的大
if (currentNumOfVideo == -1) {
currentNumOfVideo = 0;
}
mv = new MediaView();
MediaPlayer currentPlayer = players.get(currentNumOfVideo);
mv.setMediaPlayer(currentPlayer);
currentPlayer.play();
players.get(currentNumOfVideo).setOnEndOfMedia(() -> {
players.get(currentNumOfVideo).stop();
if (currentNumOfVideo < players.size()) {
currentNumOfVideo += 1;
mv.setMediaPlayer(players.get(currentNumOfVideo));
players.get(currentNumOfVideo).play();
} else {
currentNumOfVideo = 0;
mv.setMediaPlayer(players.get(currentNumOfVideo));
players.get(currentNumOfVideo).play();
}
});
第一个视频播放结束后,第二个视频开始播放。在第二个视频之后,MediaPlayer停止并且没有播放第三个视频。
我了解,因为我的setOnEndOfMedia
仅在第一个MediaPlayer上。当第二个视频开始播放时,它没有setOnEndOfMedia
。如何在setOnEndOfMedia
中的每个视频上显示List<MediaPlayer>
。
MediaPlayer
实例。而是获取Media
对象的列表或至少指向媒体的URI。然后创建一个方法,当当前视频结束时负责播放下一个视频。该方法将处置旧的MediaPlayer
,创建下一个MediaPlayer
,并将其配置为在完成后调用相同的方法。例如: