pause()
的{{1}}方法会使MediaPlayer
"寻找"一点点。
它真的很烦人,但我没有找到问题所在。
Media
结果不明确,它与点d1和d2之间的差异大约为200-400ms。
当然,在暂停媒体后,我试图让我的播放器回到d1,没有工作,恢复媒体后效果相同。
提前感谢任何建议:)
答案 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}}方法。