如何从AudioInputStream连续重播音频?

时间:2014-06-05 15:12:11

标签: java audio streaming

我有一个来自网络源的AudioInputStream。它不断传输来自Arduino的音频。我怎样才能不断重播?我目前的方法是将其读取到Stream,但是在给定的10000帧长度之后这将停止。

AudioInputStream ais = new AudioInputStream(client.getInputStream(), new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED, 4000, 8, 1, 1, 4000, false), 10000);

DataLine.Info nfo = new DataLine.Info(Clip.class, ais.getFormat());
Clip clip = (Clip)AudioSystem.getLine(nfo);

clip.open(ais);
clip.start();

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

好的,我没认识SourceDataLine。使用SourceDataLine,您只需将数据从流中直接写入AudioLine,即可通过网络传输音频。

InputStream ins = client.getInputStream();

DataLine.Info nfo = new DataLine.Info(SourceDataLine.class, new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED, 5000, 8, 1, 1, 5000, false));
SourceDataLine line = (SourceDataLine)AudioSystem.getLine(nfo);

byte[] buffer = new byte[512];

line.open();
line.start();

while(true) {
   int read = ins.read(buffer);
   line.write(buffer, 0, read);
}