Java中有一个AudioSystem类,它提供了从PCM流写入音频文件的方法。
下面是一个简单的例子,展示了如何使用AudioSystem类将PCM数据写入WAV文件:
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
public class PCMtoWAV {
public static void main(String[] args) throws LineUnavailableException, IOException {
// 音频格式
AudioFormat format = new AudioFormat(44100, 16, 1, true, true);
// 数据行信息
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
// 获取源数据行
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
// 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。
line.open(format);
// 开始
line.start();
// 写入音频数据
byte[] pcmData = ...; // 这里是你的PCM数据
line.write(pcmData, 0, pcmData.length);
// 结束
line.drain();
line.stop();
line.close();
// 将PCM数据写入WAV文件
AudioInputStream audioInputStream = new AudioInputStream(line);
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, new File("output.wav"));
audioInputStream.close();
}
}
在这个例子中,我们首先创建了一个AudioFormat对象,其中包含了我们希望音频文件的采样率、采样位数和声道数等信息。然后我们使用这个AudioFormat对象