我有一个来自网络源的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();
答案 0 :(得分:0)
请尝试使用new AudioInputStream()
。
AudioSystem.getAudioInputStream()
答案 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);
}