gpt4 book ai didi

java - 连接两个 WAV 文件失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:04 24 4
gpt4 key购买 nike

我有这个简单的代码来连接两个 wav 文件。它非常简单,代码运行没有任何错误。但是输出文件有问题。生成的输出文件无法播放,令人惊讶的是它的大小只有 44 字节,而我的输入文件“a.wav”和“b.wav”的大小都超过 500Kb。

这是我的代码:

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 WavConcat {
public static void main(String[] args) {
String wFile1 = "./sounds/a.wav";
String wFile2 = "./sounds/b.wav";

try {
AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wFile1));
AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wFile2));

AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength());

AudioSystem.write(appendedFiles,
AudioFileFormat.Type.WAVE,new File("./sounds/ab.wav"));
} catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

尝试这种结构。这对我有用

List audioInputStreamList = new ArrayList();

String wFile1 = "./sounds/a.wav";
String wFile2 = "./sounds/b.wav";

AudioInputStream audioInputStream1 = AudioSystem.getAudioInputStream(new File(wFile1));
AudioInputStream audioInputStream2 = AudioSystem.getAudioInputStream(new File(wFile2));

audioInputStreamList.add(audioInputStream1);
audioInputStreamList.add(audioInputStream2);

AudioFormat audioFormat = audioInputStream1.getFormat(); // audioInputStream2 format also same

AudioInputStream udioInputStream = new SequenceAudioInputStream(audioFormat,audioInputStreamList);

AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE,new File("./sounds/ab.wav"));

更新

检查 SequenceAudioInputStream

关于java - 连接两个 WAV 文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com