JAAD мешает другим поставщикам работать

Я использую JAAD с SPI для воспроизведения файлов m4a через JavaSound, который у меня работает нормально.

Тем не менее, я хотел бы поддерживать ряд форматов таким образом - но всякий раз, когда я пытаюсь воспроизвести другой формат, JAAD, похоже, пытается с этим справиться, а затем терпит неудачу (очевидно, потому что он имеет дело только с AAC.)

Я предполагаю, что это ошибка в JAAD, так как все остальные библиотеки SPI хорошо работают друг с другом. Есть ли хороший способ обойти это, пока он не будет исправлен, или есть другая библиотека AAC, которая работает с Javasound, которую я могу использовать?

2 ответа

Решение

Существует обходной путь с использованием jaad, созданного Майклом Берри: это URL

https://code.google.com/p/quelea-projection/source/browse/Quelea/src/org/quelea/sound/AudioTrack.java?spec=svn0352523f49cf20d41d1a7dc098af1db38000cc6d&r=0352523f49cf20d41d1a7dc098af1db38000cc6d

Поскольку мне потребовалось некоторое время, чтобы найти код 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.

Другие вопросы по тегам