我正在使用带有 SPI 的 JAAD 通过 JavaSound 播放 m4a 文件,我工作得很好。
但是,我想以这种方式支持多种格式 - 但每当我尝试播放另一种格式时,JAAD 似乎会尝试处理它然后失败(显然因为它只处理 AAC。)
我假设这是 JAAD 中的一个错误,因为所有其他 SPI 库都可以相互配合。有没有一种很好的方法可以解决它,直到它被修复,或者是否有另一个可以与 Javasound 一起使用的 AAC 库,我可以使用它?
有一个使用由 Michael Berry 创建的 jaad 的解决方法:这是 url
因为我花了一段时间才找到 berry150 的代码,所以这里是解决方案:首先,您必须在类路径中订购 jar,以便在 JAAD 之前加载 JLayer、MP3SPI 和 Tritonous Share。然后要获取 AudioInputStream,请使用以下代码:
if (getAudioFormat().equals(".mp3")) {
audioStream = AudioSystem.getAudioInputStream(file); // Obtains an audio input stream of the song
}
else if (getAudioFormat().equals(".m4a")){
audioStream = new AACAudioFileReader().getAudioInputStream(file);
}
所以发生的情况是,如果音频是 mp3,来自 Javasound 的 getAudioStreamMethod() 将首先被调用,因为它的 JAR 是首先加载的。如果音频是 .m4a,则创建 ACCAudioFileReader() 的新实例并调用 JAAD 库的 getAudioInputStream()。