有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

音频连接来自Java的两个WAV文件?

在Java 1.6中,连接两个WAV文件的最简单方法是什么?(频率相同,没有什么特别之处。)

(这可能很简单,但我的Google-fu在这个问题上今天似乎很薄弱。)


共 (4) 个答案

  1. # 1 楼答案

    但是,如果两个WAV文件在wave头文件中的格式不完全相同,就会出现问题

    如果两个文件上的波形格式不一样,你必须找到一种方法来转换它们,使它们匹配

    这可能涉及MP3转码或其他类型的转码(如果其中一种是用MP3编解码器编码的)

  2. # 2 楼答案

    以下是基本代码:

    import java.io.File;
    import java.io.IOException;
    import java.io.SequenceInputStream;
    import javax.sound.sampled.AudioFileFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    
    public class WavAppender {
        public static void main(String[] args) {
            String wavFile1 = "D:\\wav1.wav";
            String wavFile2 = "D:\\wav2.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("D:\\wavAppended.wav"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  3. # 3 楼答案

    我通过here上的“代码示例和应用程序”链接找到了this(AudioConcat)

  4. # 4 楼答案

    WAV头应该不太难解析,如果我正确读取了this header description,您可以从第二个WAV中去掉前44个字节,然后简单地将字节附加到第一个WAV中。之后,您当然应该更改第一个WAV的一些标题字段,以便它们包含正确的新长度