0
我正在使用Java将一些音频录制到ByteArrayOutputStream中,但是当我尝试播放该字节数组时,我得到一个LineUnavailableException。这是我的代码,播放音频:Java - 播放录制的音频 - LineUnavailableException
public void playTone(ByteArrayOutputStream
try {
AudioFormat format = new AudioFormat(44100, 8, 2, true, true);
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
byte audio[] = note.toByteArray();
InputStream input = new ByteArrayInputStream(audio);
TargetDataLine line1 = (TargetDataLine) AudioSystem.getLine(info);
...
} catch (LineUnavailableException e1) {
e1.printStackTrace();
}
}
这是个例外,我得到:
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 8 bit, stereo, 2 bytes/frame, not supported.
现在我已经在this问题读到的AudioFormat的参数可能是错误的,但在那质疑用户使用24(比特)作为第二参数,其中仅支持8和16。
有谁知道我在做什么错?
编辑:
从下面我的回答改变后,因为我没有一个文件,而是一个ByteArrayOutputStream:
AudioFormat format = new AudioFormat(44100, 16, 2, true, true);
byte audio[] = note.toByteArray();
InputStream input = new ByteArrayInputStream(audio);
audioStream = new AudioInputStream(input, format, audio.length/format.getFrameSize());
// instead of
// audioStream = AudioSystem.getAudioInputStream(soundFile);
谢谢,我确实得改了一下,因为我没有一个文件,但我可以改变它的工作现在。我将编辑我的第一篇文章,其中包含我在代码中实际更改的内容,如果其他人也需要它。 – JeroenD