JAAD мешает другим поставщикам работать
Я использую JAAD с SPI для воспроизведения файлов m4a через JavaSound, который у меня работает нормально.
Тем не менее, я хотел бы поддерживать ряд форматов таким образом - но всякий раз, когда я пытаюсь воспроизвести другой формат, JAAD, похоже, пытается с этим справиться, а затем терпит неудачу (очевидно, потому что он имеет дело только с AAC.)
Я предполагаю, что это ошибка в JAAD, так как все остальные библиотеки SPI хорошо работают друг с другом. Есть ли хороший способ обойти это, пока он не будет исправлен, или есть другая библиотека AAC, которая работает с Javasound, которую я могу использовать?
2 ответа
Существует обходной путь с использованием jaad, созданного Майклом Берри: это URL
Поскольку мне потребовалось некоторое время, чтобы найти код berry150, вот решение: во-первых, вы должны упорядочить jar-файлы в classpath, чтобы JLayer, MP3SPI и Tritonous Share загружались до JAAD. Затем для получения 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, getAudioStreamMethod() из Javasound будет вызван первым, так как его JAR был загружен первым. Если аудио - это.m4a, создается новый экземпляр ACCAudioFileReader() и вызывается getAudioInputStream() библиотеки JAAD.