我正在使用带有SPI的JAAD通过JavaSound播放m4a文件,我的工作正常。
但是,我想以这种方式支持多种格式 - 但每当我尝试播放另一种格式时,JAAD似乎试图处理它然后失败(显然因为它只处理AAC。)< / p>
我认为这是JAAD中的一个错误,因为所有其他SPI库彼此都可以正常运行。有没有一种很好的方法来解决它,直到它被修复,或者是否有另一个可以使用Javasound的AAC库?
答案 0 :(得分:3)
使用由Michael Berry创建的jaad有一个解决方法:这是url
答案 1 :(得分:2)
因为我花了一段时间才找到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()。