我在我的程序(播放/停止,显示进度)上实现了 jLayer 的简单用法,效果很好。
但是,我遇到了 getPosition() 的问题,它在我的 Windows XP 机器上以 ms 为单位返回值(如文档所述),但在我的 Ubuntu 机器上以 SECONDS 为单位。
有谁知道为什么会有这样的差异?
看看源代码吧!我想你说的是 Player 类。
它的 getPosition() 直接调用 AudioDevice.getPosition(),而 JavaAudioDevice 实现返回 SourceDataLine.getMicroSecondPostion() / 1000。后一个类是 JRE 的一部分,所以我假设特定的 JRE 版本有问题或操作系统有问题不提供更高的分辨率。也可能是导致此问题的硬件平台的特定音频驱动程序。
除了更新 JRE 和操作系统之外,您无能为力。如果这没有帮助,您只能提交错误报告。
编辑:对于错误报告,我指的是 VM 的供应商,因为 JLayer 的家伙对 JRE 返回的虚假值无能为力。