You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX MediaPlayer暂停后setRate设置的速率失效,如何维持指定播放速率?

解决JavaFX MediaPlayer暂停后无法保持播放速率的问题

针对你遇到的问题:设置播放速率为2后暂停,再次调用play()时,getRate()返回值仍为2,但实际播放速率回到1的情况,可以通过以下两种方法解决:

方法一:播放前重新设置当前速率

在每次调用play()恢复播放前,主动重新设置一次当前的速率值,强制播放器使用设定的速率:

// 暂停后恢复播放的逻辑
player.setRate(player.getRate()); // 重新应用当前存储的速率值
player.play();

你也可以封装成工具方法,方便复用:

private void resumePlayback(MediaPlayer player) {
    double currentRate = player.getRate();
    player.setRate(currentRate);
    player.play();
}

方法二:监听播放状态自动恢复速率

通过监听MediaPlayer的statusProperty,当播放器从暂停状态切换到播放状态时,自动重新设置速率:

player.statusProperty().addListener((observable, oldStatus, newStatus) -> {
    if (oldStatus == MediaPlayer.Status.PAUSED && newStatus == MediaPlayer.Status.PLAYING) {
        player.setRate(player.getRate());
    }
});

这样每次从暂停恢复播放时,都会自动触发速率重置,无需手动调用额外逻辑。

说明

这个现象可能是JavaFX 24-ea版本的一个临时行为或bug,通过强制重新设置速率,可以覆盖播放器默认的恢复逻辑,确保以设定的速率继续播放。

内容的提问来源于stack exchange,提问作者Evgeny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:15:03