如何在Java中转换wav文件

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 位的 wav 文件转换为 16 位。


1
好的,所以您想要从8位转换为16位? - Caffeinated
3个回答

2

这里有一个方法,使用内置的Java方法,将8位μ律编码的二进制文件转换为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();
    }
}

这是完整的源代码:将RTP序列负载转换为.wav文件: https://dev59.com/HWbWa4cB1Zd3GeqPW3Rf#17732264 - XP1


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接