【问题标题】:JavaFX MediaPlayer loopJavaFX MediaPlayer 循环
【发布时间】:2017-04-03 17:15:49
【问题描述】:

我正在开发一个简单的游戏,我想要一个视频背景。我首先使用 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,但这不起作用。

如果有人知道创建视频背景的不同方法,欢迎一切。

编辑: 到目前为止没有运气,我正在考虑使用:

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

但即使这样也行不通..

【问题讨论】:

  • 您是否尝试在设置循环计数之后而不是之前播放媒体?
  • 我遇到了同样的问题,奇怪的是它甚至没有报告错误或其他东西,我已经尝试了所有可用的设置方法...Java 8 Update 162。

标签: java loops video javafx media-player


【解决方案1】:

可能有点晚了,但你在寻求持续时间为零后忘记玩了。

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

它对我有用

【讨论】:

    【解决方案2】:

    来自MediaPlayer API:

    媒体播放从startTime 开始并继续到stopTime。这两个端点定义的间隔称为一个周期,持续时间是停止时间和开始时间的差。此循环可以设置为重复特定或无限次。

    所以你需要在骑行前设置startTimestopTime。例如(对于 5 秒的视频):

    player.setStartTime(Duration.seconds(0));
    player.setStopTime(Duration.seconds(5));
    

    【讨论】:

    • 循环有效!唯一奇怪的是:对于 5 秒的视频,它可以完美运行,但是当我的视频为 10 秒长并且我将持续时间设置为 10 时,它再次冻结。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多