在 Java 中将 mp3 转换为 wav
Converting mp3 to wav in Java
我正在编写一个用于将音频文件转换为 WAV 的通用实用程序。 WAV 到 WAV 的工作正常(我也改变了一些属性),但我不能转换 MP3 文件。我的类路径中有mp3spi,所以它似乎能够读取MP3,但是写入的WAV文件似乎不起作用。
在此示例中,我没有尝试更改任何属性。只是读取 MP3 并写入 WAV 文件
我的代码看起来像这样
File inputFileObj = new File(input);
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(inputFileObj);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Input file format:");
System.out.println(AudioSystem.getAudioFileFormat(inputFileObj));
try {
AudioSystem.write(audioInputStream, outputType, new File(output));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Output file format:");
System.out.println(AudioSystem.getAudioFileFormat(new File(output)));
这是输出。如您所见,它似乎在写入输出文件,但是当我尝试检索输出文件的格式时,它无法处理。如果我尝试播放输出文件,播放器无法识别它。
Input file: c:\testfiles\sample-b-converted.mp3
Output file: c:\testfiles\foo.wav
Output type: wav
Input file format:
MP3 (.mp3) file, byte length: 13227300, data format: MPEG2L3 16000.0 Hz, unknown bits per sample, mono, unknown frame size, 27.777779 frames/second, , frame length: 122475
Bytes written: 13227344
Output file format:
Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: file is not a supported file type
at javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:1078)
at org.torchai.AudioFileConvert01.main(AudioFileConvert01.java:60)
我还需要其他什么来让它工作吗?
有人发了一条评论让我参考 mp3 to wav conversion in java。我看过这个问题,但没有完全看清答案的主要方面,因为它没有得到很好的解释。
MP3 文件显然需要经过两步转换。我不完全明白为什么,但似乎您必须首先将其转换为 PCM_SIGNED,样本大小为 16,帧大小为 2*# of channels。届时,您可以再次将其转换为您想要的最终格式。
仍然希望有更好的解释,但这至少让我解决了我的问题。
我正在编写一个用于将音频文件转换为 WAV 的通用实用程序。 WAV 到 WAV 的工作正常(我也改变了一些属性),但我不能转换 MP3 文件。我的类路径中有mp3spi,所以它似乎能够读取MP3,但是写入的WAV文件似乎不起作用。
在此示例中,我没有尝试更改任何属性。只是读取 MP3 并写入 WAV 文件
我的代码看起来像这样
File inputFileObj = new File(input);
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(inputFileObj);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Input file format:");
System.out.println(AudioSystem.getAudioFileFormat(inputFileObj));
try {
AudioSystem.write(audioInputStream, outputType, new File(output));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Output file format:");
System.out.println(AudioSystem.getAudioFileFormat(new File(output)));
这是输出。如您所见,它似乎在写入输出文件,但是当我尝试检索输出文件的格式时,它无法处理。如果我尝试播放输出文件,播放器无法识别它。
Input file: c:\testfiles\sample-b-converted.mp3
Output file: c:\testfiles\foo.wav
Output type: wav
Input file format:
MP3 (.mp3) file, byte length: 13227300, data format: MPEG2L3 16000.0 Hz, unknown bits per sample, mono, unknown frame size, 27.777779 frames/second, , frame length: 122475
Bytes written: 13227344
Output file format:
Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: file is not a supported file type
at javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:1078)
at org.torchai.AudioFileConvert01.main(AudioFileConvert01.java:60)
我还需要其他什么来让它工作吗?
有人发了一条评论让我参考 mp3 to wav conversion in java。我看过这个问题,但没有完全看清答案的主要方面,因为它没有得到很好的解释。
MP3 文件显然需要经过两步转换。我不完全明白为什么,但似乎您必须首先将其转换为 PCM_SIGNED,样本大小为 16,帧大小为 2*# of channels。届时,您可以再次将其转换为您想要的最终格式。
仍然希望有更好的解释,但这至少让我解决了我的问题。