我有下面的代碼片段:Java的OGG格式爲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));
我寫了這個代碼transfrom MP3和OGG文件爲WAV文件。這些格式在Java默認情況下,按照我的理解,不支持,所以我不得不不同的罐子添加到我的類路徑如下所述:
http://www.javazoom.net/mp3spi/documents.html
http://www.javazoom.net/vorbisspi/documents.html
的代碼運行正常,當我轉換MP3文件。但是,當我嘗試轉換OGG文件,我得到以下錯誤:
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
現在這只是拋出時得到的解碼的InputStream本身,這意味着OGG文件successfuly解析。
AudioSystem.getTargetEncodings(sourceFormat)
上面的代碼在處理MP3或OGG文件時不會返回任何值。唯一的區別是,MP3工作正常。
我添加了ogg轉換所需的上一個鏈接引用的所有jar,除了最新版本的jogg-0.0.7.jar,因爲我找不到它。
我嘗試了不同的解決方案,像JAVE,但我需要它在MAC上運行,並且JAVE不會在沒有特殊實現的情況下在MAC上運行。
有沒有人有任何建議可能會導致問題?可能有任何解決方法將OGG文件轉換爲WAV?
編輯:
噢哇我意識到這個問題是什麼...手動閱讀寄託都後,我才知道,使用兩種不同類型的SPI(如在這種情況下,MP3和OGG)可引起問題。我刪除了對MP3 spi maven的依賴,並且錯誤消失了。認爲結果wav基本上是空的。對此有何建議?如果我能將OGG轉換爲WAV轉換工作,我會很高興,但我可以用另一種方式轉換MP3。
我的POM依賴看起來是這樣的:
<dependency>
<groupId>com.googlecode.soundlibs</groupId>
<artifactId>vorbisspi</artifactId>
<version>1.0.3-1</version>
</dependency>
此下載我想我需要做OGG轉換工作全部罐子。 (看起來不是。)
這是你想要的嗎? https://poi1.googlecode.com/files/jogg-0.0.7.jar – longhua 2013-03-13 14:16:29
我發現那個jar我找不到它的maven依賴項,所以我不想使用它。我試圖將它從lib文件夾添加到classpath,但沒有bueno。 Sry我一直在浪費很多時間,我忘記了這個問題。 – 2013-03-13 14:26:29
添加tritonus_jorbis-0.3.6.jar(http://tritonus.org/tritonus_share-0.3.6.jar)可以正確地將OGG轉換爲WAV。不知道爲什麼。 – longhua 2013-03-13 15:10:13