3

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

4

3 回答 3

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();
    }
}
于 2013-07-18T18:38:01.287 回答
1

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

于 2012-09-25T17:11:40.380 回答
1

看看这个:音频格式的转换它类似于您建议查看http://docs.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioSystem.html的问题

于 2012-09-25T17:01:36.700 回答