尽管在 Sun JDK 上运行良好,但在 Linux 中使用 JavaZoom 的库在 OpenJDK 上播放音频文件时遇到问题。这个“不支持主增益”异常有什么解决方法吗?
莫森
我注意到了同样的事情。我只是在尝试更改增益之前检查 Sun Java。糟透了,但从好的方面来说,OpenJDK 的音频性能比 Sun 的要好得多。
编辑:因为其他人会通过网络搜索找到这个答案,所以我要补充一点。在某些情况下,OpenJDK 的 PulseAudioMixer 似乎不遵守 JSAPI。例如,它坚持在刷新()之前停止()一行。然而,JSAPI 明确表示在停止之前刷新是合法的。或者在您提到的情况下,脉冲音频实现在您调用 isControlSupported 时声称支持增益,但无论如何都会引发异常。这是 JavaZoom 代码在 OpenJDK 中无法运行的两个原因。还有其他的。在某些情况下,不应责怪 PulseAudioMixer,它只是在未定义的情况下采用不同的路线(例如,如果您在未打开的行上调用 write() 会发生什么?!)。我正在使我编写的一些代码更健壮,以便它可以在 OpenJDK 上运行。
有一个针对 libbasicplayer-java 的补丁(适用于 3.0-4):
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=567856
然而,OpenJDK 在获得支持方面仍然存在缺陷:
在那个页面上:https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/491784/最后有一个补丁,它现在对我有用。该补丁仅由 try & catch 组成。抱歉,我再也找不到 javazoom 的作者在网上放源的地方了。如果您需要它们,请与我联系。