如何在java中转换wav文件

时间:2012-09-25 16:12:22

标签: java audioformat

如何在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文件

3 个答案:

答案 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)

答案 2 :(得分:1)

您始终可以使用FFMPEG http://ffmpeg.org/进行转换。您的Java程序可以调用FFMPEG进行转换。
 FFMPEG适用于所有操作系统。