Mam następujący fragment kodu:Java ogg do konwersji wav
File file = new File(sourceFile);
AudioInputStream in = AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(),
16, baseFormat.getChannels(), baseFormat.getChannels() * 2,
baseFormat.getSampleRate(), false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);
AudioSystem.write(din, AudioFileFormat.Type.WAVE, new File(targetFile));
Napisałem ten kod do transfrom MP3 i OGG do WAV. Formaty te nie są obsługiwane przez Java domyślnie jak rozumiem, więc musiałem dodać różne słoików do mojego ścieżki klasy, jak opisano tutaj:
http://www.javazoom.net/mp3spi/documents.html
http://www.javazoom.net/vorbisspi/documents.html
Kod działa dobrze, gdy jestem konwersji Pliki MP3. Ale gdy próbuję przekonwertować pliki OGG pojawia się następujący błąd:
java.lang.IllegalArgumentException: Unsupported conversion: PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian from VORBISENC 44100.0 Hz, unknown bits per sample, stereo, 1 bytes/frame, 16000.0 frames/second
Teraz to jest tylko wtedy, gdy rzucony coraz dekodowany InputStream sobie, co oznacza, że plik ogg był analizowany sukcesem.
AudioSystem.getTargetEncodings(sourceFormat)
Powyższy kod nie zwróci żadnych wartości podczas przetwarzania plików MP3 lub OGG. Jedyna różnica polega na tym, że MP3 działa dobrze.
Dodałem wszystkie słoiki, do których odnosi się poprzedni odnośnik potrzebny do konwertowania ogg, z wyjątkiem najnowszej wersji pliku jogg-0.0.7.jar, ponieważ nie mogłem go znaleźć.
Próbowałem różnych rozwiązań, takich jak JAVE, ale potrzebuję go uruchomić na MAC, a także JAVE nie uruchomi się na MAC bez jakiejś specjalnej implementacji.
Czy ktoś ma jakieś sugestie, co może powodować problem? Czy może istnieć jakieś obejście do przekonwertowania pliku OGG do formatu WAV?
EDIT:
Ow wow zdałem sobie sprawę, na czym polega problem ... Po przeczytaniu everthing w podręczniku, dowiedziałem się, że stosując dwa różne rodzaje SPI (jak w tym przypadku MP3 i OGG) może powodować problemy. Usunąłem zależność MP3 spi maven i błąd zniknął. Myślałem, że wynik wav jest w zasadzie pusty. Wszelkie sugestie na ten temat? Będę szczęśliwy, jeśli uda mi się przekonwertować OGG do formatu WAV, mogę przekształcić MP3 w inny sposób.
Moje uzależnienie pom wygląda następująco:
<dependency>
<groupId>com.googlecode.soundlibs</groupId>
<artifactId>vorbisspi</artifactId>
<version>1.0.3-1</version>
</dependency>
Te pliki do pobrania Chyba wszystkie słoiki Muszę zrobić pracę transformacji OGG. (Wygląda na to, że nie).
Czy tego chcesz? https://poi1.googlecode.com/files/jogg-0.0.7.jar – longhua
Znalazłem ten słoik po prostu nie mogłem znaleźć zależności dla niego, więc nie chciałem go używać. Próbowałem go dodać do ścieżki classpath z folderu lib, ale nie bueno. Sry, że tracę dużo czasu z tym problemem, zapomniałem o tym wspomnieć. –
Dodaj tritonus_jorbis-0.3.6.jar (http://tritonus.org/tritonus_share-0.3.6.jar) może poprawnie konwertować OGG na WAV. Nie pewny dlaczego. – longhua