使用多个提供程序的Java SPI失败(Java Sound)

时间:2012-12-17 02:50:22

标签: java javasound

我有一个需要播放mp3和aac文件的java项目。我创建了一个MediaPlayer类,它使用通用代码通过Java Sound API播放声音文件。我的CLASSPATH中有两个音频解码库,它们被注册为Java Sound SPI。 (MP3SPI和JAAD)。

问题是MP3SPI似乎优先于JAAD。这意味着当我播放AAC文件时,MP3SPI会抛出异常并且(显然)不播放我的歌曲。当我从CLASSPATH中删除MP3SPI时,会调用正确的SPI(JAAD),并且我的AAC文件可以正常播放。

由于这个问题可能更具代表性,我希望有人有一些解决这个问题的经验。

如何为MP3和MP3提供支持AAC解码/播放?

1 个答案:

答案 0 :(得分:0)

听起来像MP3SPI是行为不端而且没有遵守规范,即在错误的情况下抛出错误的例外情况,或者没有。

您基本上只有两个选项:

  1. 破解MP3SPI并修复它(看看它的AudioFileReader实现,并验证它们的行为方式与javadoc中指定的方式相同。)
  2. 使用其他mp3服务提供商(例如this oneone of these)。
  3. 祝你好运。