小编Poj*_*226的帖子

Java - 组合 2 个以上 .wav 文件时出现问题

对于我正在进行的项目,我希望能够连接多个 .wav 文件。

通过我的研究,我能够想出这段代码:

File sample1 = new File("F:\\Programming\\Resources\\Java_Sound\\trumpet1.wav");
File sample2 = new File("F:\\Programming\\Resources\\Java_Sound\\trumpet2.wav");

File fileOut = new File("F:\\Programming\\Resources\\Java_Sound\\Test.wav");

AudioInputStream audio1 = AudioSystem.getAudioInputStream(sample1);
AudioInputStream audio2 = AudioSystem.getAudioInputStream(sample2);

AudioInputStream audioBuild = new AudioInputStream(new SequenceInputStream(audio1, audio2), audio1.getFormat(), audio1.getFrameLength() + audio2.getFrameLength());

//for(int i = 0; i < 5; i++){
//    audioBuild = new AudioInputStream(new SequenceInputStream(audioBuild, audio2), audioBuild.getFormat(), audioBuild.getFrameLength() + audio2.getFrameLength());
//}

AudioSystem.write(audioBuild, AudioFileFormat.Type.WAVE, fileOut);
Run Code Online (Sandbox Code Playgroud)

它可以很好地组合两个 .wav 文件,但是当我取消注释 for 循环时,生成的 .wav 文件仅播放第一个串联的音频。音轨似乎提前结束,因为 wmp 的持续时间条仅在屏幕上移动了大约 1\5。

我假设问题出在创建的 .wav 文件中的标头。我研究了许多不同的网页,讨论如何构建标头,但它们的定义都略有不同,但都说标头应该是十六进制的。当转换流(不是音频流,标准 FileInputStream)时,我的标头是十进制的。另外,在 RIFF 部分之后、WAVE 部分之前,应该是整个文件的大小,不包括前 8 个字节。然而我的一些包含连字符。老实说我不知道​​这些是什么意思。然而,忽略它们,取消上面代码的注释后测试文件的大小仍然是一个更大的数字。 …

java audio stream wav wave

2
推荐指数
1
解决办法
3351
查看次数

标签 统计

audio ×1

java ×1

stream ×1

wav ×1

wave ×1