【问题标题】:JavaFX Media - pause(); method makes MediaPlayer fast-forward?JavaFX 媒体 - 暂停();方法使 MediaPlayer 快进?
【发布时间】:2016-12-13 16:00:27
【问题描述】:

MediaPlayerpause() 方法使 Media 有点“寻找”。 真的很烦人,但我没发现问题出在哪里。

    private void playPauseClicked() 
    {     
        Status currentStatus = player.getStatus();
        if(currentStatus == Status.PLAYING)
        {
            Duration d1 = player.getCurrentTime(); //To measure the difference
            player.pause();
            Duration d2 = player.getCurrentTime();
            VIDEO_PAUSED = true;
        }
        else if(currentStatus == Status.PAUSED || currentStatus == Status.STOPPED)
        {
            player.play();
            VIDEO_PAUSED = false;
        }
    }

结果不清楚,点d1和d2相差200-400ms左右。

当然,我在暂停媒体后尝试将我的播放器寻回 d1,但没有成功,恢复媒体后的结果相同。

提前感谢您的任何建议:)

【问题讨论】:

    标签: java javafx media pause


    【解决方案1】:

    这是因为pause 方法不会立即停止播放(当pause 被调用时,媒体仍然在播放并恰好在statusProperty 更改的那一刻停止):

    暂停播放器。 一旦播放器实际暂停,状态将 设置为 MediaPlayer.Status.PAUSED。

    因此测量值并不真正相关,因为当您在暂停之前获得当前时间Duration d1 = player.getCurrentTime(); 时,播放实际上并没有暂停,并且当您在调用pauseDuration d2 = player.getCurrentTime(); 之后获得当前时间时不正确,因为pause 已异步执行,因此无法保证d2 处视频停止播放:

    MediaPlayer 的操作本质上是异步的。

    当播放停止时,您可以做的是观察MediaPlayer的状态变化,例如使用setOnPaused.

    示例:

    private void playPauseClicked() {
        Status currentStatus = player.getStatus();
    
        if(currentStatus == Status.PLAYING)
            player.pause();
        else if(currentStatus == Status.PAUSED || currentStatus == Status.STOPPED) {
            System.out.println("Player will start at: " + player.getCurrentTime());
            player.play();
        }
    }
    
    player.setOnPaused(() -> System.out.println("Paused at: " + player.getCurrentTime()));
    

    示例输出:

    Paused at: 1071.0203000000001 ms
    Player will start at: 1071.0203000000001 ms
    Paused at: 2716.7345 ms
    Player will start at: 2716.7345 ms
    

    注意: 但是如果你只是想停下来玩,则不需要设置MediaPlayer的时间,但如果你愿意,你可以使用seek的方法.

    【讨论】:

    • 哇,太棒了!我看了很多视频并一直在阅读以了解如何做到这一点......非常感谢!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多