我正在使用帶有SPI的JAAD通過JavaSound播放m4a文件,我已經正常工作。但是,我希望以這種方式支持多種格式 - 但每當我嘗試播放另一種格式時,JAAD似乎都試圖處理它,然後失敗(顯然是因爲它只處理AAC)。JAAD阻止其他提供者工作
我假設這是JAAD中的一個錯誤,因爲所有其他SPI庫都可以相互良好地發揮作用。有沒有一種很好的方法來解決它,直到它被修復,或者有另一個AAC庫與我可以使用的Javasound一起工作?
我正在使用帶有SPI的JAAD通過JavaSound播放m4a文件,我已經正常工作。但是,我希望以這種方式支持多種格式 - 但每當我嘗試播放另一種格式時,JAAD似乎都試圖處理它,然後失敗(顯然是因爲它只處理AAC)。JAAD阻止其他提供者工作
我假設這是JAAD中的一個錯誤,因爲所有其他SPI庫都可以相互良好地發揮作用。有沒有一種很好的方法來解決它,直到它被修復,或者有另一個AAC庫與我可以使用的Javasound一起工作?
有使用JAAD由邁克爾·貝里創造了一個解決方法:這是URL
因爲我花了一段時間才能找到berry150的代碼,這裏是解決方案: 首先,你必須爲了使JLayer,MP3SPI和Tritonous Share在JAAD之前加載,請在類路徑中排列這些jar。然後對得到的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()將首先因爲它的瓶子是第一次加載調用。如果音頻是.m4a,則會創建ACCAudioFileReader()的新實例,並調用JAAD庫的getAudioInputStream()。
*「所有其他SPI庫」*您是否暗示JAAD(從未聽說過)爲AAC提供SPI?如果是這樣,找到該jar並將其添加到(其他)項目的運行時類路徑。 –
@AndrewThompson很抱歉,JAAD爲AAC提供了SPI。問題在於它不能與其他項目一起工作,問題在於它與其他SPI(例如mp3SPI,JFlac等)協同工作 - 它實質上「佔據」所有格式,嘗試播放它們,並且只是失敗它不能(而不只是試圖播放AAC音頻)。我可以通過檢查文件擴展名來解決它(ISH),或者嘗試修補JAAD - 我只是想知道是否有其他人有更好的想法。 – berry120