JavaFX Media - pause();方法使MediaPlayer快进?

时间:2016-08-08 00:03:44

标签: java javafx media pause

pause()的{​​{1}}方法会使MediaPlayer"寻找"一点点。 它真的很烦人,但我没有找到问题所在。

Media

结果不明确,它与点d1和d2之间的差异大约为200-400ms。

当然,在暂停媒体后,我试图让我的播放器回到d1,没有工作,恢复媒体后效果相同。

提前感谢任何建议:)

1 个答案:

答案 0 :(得分:0)

这是因为pause方法不能立即停止播放(当pause被调用时,媒体仍会在statusProperty更改时正好播放和停止):

  

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

因此,测量结果并不真实,因为当您在暂停前获得当前时间Duration d1 = player.getCurrentTime();时,播放实际上并未暂停,并且当您在pause调用后获得当前时间时由于Duration d2 = player.getCurrentTime();不正确,因为pause已异步执行,因此在d2视频停止播放时没有任何警示:

  

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

如果在播放停止时获得正确的时间,您可以采取的措施是观察MediaPlayer使用例如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())); 状态的变化。 setOnPaused

示例:

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

注意:但是,如果您只是想停下来玩,则不需要设置{{1}}的时间,但如果您愿意,可以使用{{ 3}}方法。