我有以下代码片段:
我编写了这段代码来将MP3和OGG文件转换为WAV文件。据我所知,Java默认不支持这些格式,因此我需要像这里描述的那样向我的classpath中添加不同的jars: http://www.javazoom.net/mp3spi/documents.html http://www.javazoom.net/vorbisspi/documents.html 当我尝试转换OGG文件时,代码可以正常运行。但是,当我尝试转换OGG文件时,我会收到以下错误:
上述代码在处理MP3或OGG文件时都不会返回任何值,唯一的区别是MP3可以正常工作。
我添加了之前链接中引用的所有jar包,用于OGG转换,除了最新版本的jogg-0.0.7.jar,因为我找不到它。
我尝试了不同的解决方案,比如JAVE,但我需要在MAC上运行它,而且JAVE没有特殊实现就无法在MAC上运行。
有没有人有什么建议可能导致问题?是否有任何解决方法将OGG文件转换为WAV?
编辑:
哦哇,我意识到了问题所在...在阅读手册中的所有内容后,我了解到使用两种不同类型的SPI(比如在这种情况下是MP3和OGG)可能会导致问题。我删除了MP3 spi maven依赖项,错误消失了。虽然结果wav基本上是空的。对此有什么建议吗?如果我能让OGG转换为WAV工作,我会很高兴,我可以用另一种方式转换MP3。
我的pom依赖关系如下:
这会下载我需要进行OGG转换的所有jar包。(看起来好像不是这样。)
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));
我编写了这段代码来将MP3和OGG文件转换为WAV文件。据我所知,Java默认不支持这些格式,因此我需要像这里描述的那样向我的classpath中添加不同的jars: http://www.javazoom.net/mp3spi/documents.html http://www.javazoom.net/vorbisspi/documents.html 当我尝试转换OGG文件时,代码可以正常运行。但是,当我尝试转换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
现在只有在获取解码后的输入流本身时才会抛出此异常,这意味着ogg文件已经成功解析。
AudioSystem.getTargetEncodings(sourceFormat)
上述代码在处理MP3或OGG文件时都不会返回任何值,唯一的区别是MP3可以正常工作。
我添加了之前链接中引用的所有jar包,用于OGG转换,除了最新版本的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转换的所有jar包。(看起来好像不是这样。)