如何在java中转换wav文件
AudioFormat targetFormat = new AudioFormat(
sourceFormat.getEncoding(),
fTargetFrameRate,
16,
sourceFormat.getChannels(),
sourceFormat.getFrameSize(),
fTargetFrameRate,
false);
结果异常:
java.lang.IllegalArgumentException: Unsupported conversion:
ULAW 8000.0 Hz, **16 bit**, mono, 1 bytes/frame, **from** ULAW 8000.0 Hz, **8 bit**, mono, 1 bytes/frame
可以在java?
我需要从8
获取16位的wav文件答案 0 :(得分:2)
这是一种使用内置Java方法将8位uLaw编码二进制文件转换为16位WAV文件的方法。
public static void convertULawFileToWav(String filename) {
File file = new File(filename);
if (!file.exists())
return;
try {
long fileSize = file.length();
int frameSize = 160;
long numFrames = fileSize / frameSize;
AudioFormat audioFormat = new AudioFormat(Encoding.ULAW, 8000, 8, 1, frameSize, 50, true);
AudioInputStream audioInputStream = new AudioInputStream(new FileInputStream(file), audioFormat, numFrames);
AudioSystem.write(audioInputStream, Type.WAVE, new File("C:\\file.wav"));
} catch (IOException e) {
e.printStackTrace();
}
}
答案 1 :(得分:1)
看一下这个:Conversion of Audio Format它类似于你的问题,建议查看http://docs.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioSystem.html
答案 2 :(得分:1)
您始终可以使用FFMPEG http://ffmpeg.org/进行转换。您的Java程序可以调用FFMPEG进行转换。
FFMPEG适用于所有操作系统。