【发布时间】:2011-12-15 21:32:43
【问题描述】:
我正在用麦克风录制声音并将其作为 .wav 文件保存到磁盘。
我不能用 Media Player 播放 wav 文件?这正常吗?
AudioFormat format = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
44100.0F, 16, 2, 4, 44100.0F, false);
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); // format is an AudioFormat object
// Obtain and open the line.
try {
targetLine = (TargetDataLine) AudioSystem.getLine(info);
targetLine.open(format);
targetLine.start();
ByteArrayOutputStream out = new ByteArrayOutputStream();
int numBytesRead;
byte[] data = new byte[targetLine.getBufferSize() / 5];
targetLine.start();
while (recording) {
numBytesRead = targetLine.read(data, 0, data.length);
out.write(data, 0, numBytesRead);
System.out.println(Arrays.toString(data));
}
File fileOut = new File("C:\\audio\\audio6.wav");
AudioInputStream ais = new AudioInputStream(targetLine);
if (AudioSystem. isFileTypeSupported(AudioFileFormat.Type.WAVE,ais)) {
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, fileOut);
System.out.println("writen");
}
targetLine.stop();
ais.close();
【问题讨论】:
-
它应该可以工作。文件中有任何数据还是只是垃圾
-
您没有使用 ByteArrayOutputStream 的内容 - 为什么不呢?
-
@Jon 我正在尝试另一种写法:// OutputStream outputStream = new FileOutputStream(fileOut); // // out.writeTo(outputStream); // outputStream.close(); // out.close();