English 中文(简体)
如何用Java合并两个WAV文件?
原标题:
  • 时间:2009-03-17 11:37:53
  •  标签:

最简单的方法是在Java 1.6中连接两个WAV文件?(频率相等,没有任何花哨的方法。)

这可能非常简单,但我今天在这个主题上的Google技巧似乎很弱。

最佳回答

这里是骨架代码:

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();
        }
    }
}
问题回答

WAV头文件不应该太难解析,如果我正确读取此头文件说明,您可以只从第二个WAV中删除前44个字节,然后简单地将字节追加到第一个WAV后,之后,您当然应该更改第一个WAV的一些头字段,以使它们包含正确的新长度。

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

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

如果两个文件的波形格式不同,你就必须找到一个方式将它们转化为相同的格式。

那可能涉及到MP3转码或其他类型的转码(如果其中一个已使用MP3编解码器编码)。





相关问题
热门标签