Я работаю над simpel игрой, и я хотел бы иметь видео фон. Я сначала сделал это с помощью GIF, но это работает довольно медленно. Теперь я создал видео фон с помощью медиаплеера, и он работает отлично. Видео показывают без проблем.

Единственная проблема у меня в том, что видео не хочет зацикливаться. Я попробовал каждый подход, который нашел в интернете, но ничего не помогло. Видео всегда воспроизводится 1 раз, а затем останавливается. Я использую Java JDK8. Windows 10, 64 бит.

Это мой код:

Media media = new
Media(getClass().getClassLoader().getResource("img/menu.mp4").toString());

MediaPlayer player = new MediaPlayer(media);
player.setAutoPlay(true);
player.setCycleCount(MediaPlayer.INDEFINITE);
MediaView view = new MediaView(player);

Все это в стеке.

Я попытался экспортировать MP4 в FLV, но это не работает.

Если кто-нибудь знает разные способы создания видео-фона, все приветствуется.

< Сильный > Edit: Пока что не повезло, я подумал об использовании:

player.setOnEndOfMedia(new Runnable() {
            @Override
            public void run() {
                player.seek(Duration.ZERO);
            }
        }); 

Но даже не это работает ..

2
jdlChicory 3 Апр 2017 в 20:15

2 ответа

Лучший ответ

Из MediaPlayer API:

Воспроизведение мультимедиа начинается с startTime и продолжается до stopTime. Интервал, определяемый этими двумя конечными точками, называется циклом, продолжительность которого является разницей времени останова и запуска. Этот цикл может быть установлен для повторения определенного или неопределенного количества раз.

Поэтому вам нужно установить startTime и stopTime перед выполнением циклов. Например (для 5-секундного видео):

player.setStartTime(Duration.seconds(0));
player.setStopTime(Duration.seconds(5));
-2
Steven Van Impe 3 Апр 2017 в 20:12

Возможно, уже немного поздно, но вы забыли поиграть после стремления к нулевой продолжительности.

player.setOnEndOfMedia(new Runnable() {
        @Override
        public void run() {
            player.seek(Duration.ZERO);
            player.play();
        }
    }); 

У меня сработало

2
Berke Bakar 22 Окт 2018 в 19:47