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