JAAD阻止其他提供商工作

时间:2012-05-19 14:26:48

标签: java audio javasound aac

我正在使用带有SPI的JAAD通过JavaSound播放m4a文件,我的工作正常。

但是,我想以这种方式支持多种格式 - 但每当我尝试播放另一种格式时,JAAD似乎试图处理它然后失败(显然因为它只处理AAC。)< / p>

我认为这是JAAD中的一个错误,因为所有其他SPI库彼此都可以正常运行。有没有一种很好的方法来解决它,直到它被修复,或者是否有另一个可以使用Javasound的AAC库?

2 个答案:

答案 0 :(得分:3)

答案 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()。