У меня есть 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>
.