连接两个不同音频格式的 wav 文件

问题描述

我有一个方法可以连接两个 .wav 声音文件。如果我有两个具有相同 AudioFormat 的文件,它工作正常。但是如果我使用两种不同格式的文件,其中一个文件听起来会很糟糕。所以,我需要用这些格式连接两个 .wav 文件

  • PCM_SIGNED 24000.0 Hz,16 位,单声道,2 字节/帧,小端;

  • PCM_SIGNED 44100.0 Hz,16 位,立体声,4 字节/帧,小端;

方法代码

private static void concatenateTwoWaves(String fileName1,String fileName2) {
        String wavFile1 = fileName1 + ".wav";
        String wavFile2 = fileName2 + ".wav";

        try {
            AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
            AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));

            AudioInputStream appendedFiles =
                    new AudioInputStream(
                            new SequenceInputStream(clip1,clip2),clip1.getFormat(),clip1.getFrameLength() + clip2.getFrameLength());

            AudioSystem.write(appendedFiles,AudioFileFormat.Type.WAVE,new File("output.wav"));
        } catch (Exception e) {
            e.printstacktrace();
        }
    }

解决方法

必须先将两种格式之一转换为另一种格式。 Oracle 提供了以下专门针对此主题的教程,包括示例:Using Files and Format Converters