首页 > 解决方案 > 连接两个具有不同 AudioFormat 的 wav 文件

问题描述

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

方法代码:

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();
        }
    }

标签: javajavasound

解决方案


这两种格式中的一种必须首先转换为另一种。Oracle 提供了以下专门针对该主题的教程,并附有示例:使用文件和格式转换器


推荐阅读