17

在 Java 1.6中连接两个WAV文件的最简单方法是什么?(相同的频率和所有,没有什么花哨的。)

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

4

4 回答 4

38

这是准系统代码:

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();
        }
    }
}
于 2009-03-17T22:35:40.220 回答
4

WAV 标头应该不太难解析,如果我正确阅读了此标头描述,您可以从第二个 WAV 中剥离前 44 个字节,并将这些字节附加到第一个。之后,您当然应该更改第一个 WAV 的某些标头字段,以便它们包含正确的新长度。

于 2009-03-17T11:41:38.723 回答
4

我通过此处的“代码示例和应用程序”链接找到了这个(AudioConcat) 。

于 2009-03-17T12:27:24.027 回答
1

但是,如果两个 WAV 文件在波头中的格式不完全相同,则会出现您的挑战。

如果两个文件上的波形格式不同,您将不得不找到一种方法来变形它们以使它们匹配。

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

于 2009-03-18T06:16:54.183 回答