我有一个来自网络来源的AudioInputStream。它不断地从Arduino上流式传输音频。我如何才能不断地重播这个视频?我目前的方法只是将其读取到流中,但这将在给定的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();发布于 2014-06-05 23:17:57
尝试使用AudioSystem.getAudioInputStream(),而不是使用new AudioInputStream()。
http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/AudioSystem.html#getAudioInputStream%28javax.sound.sampled.AudioFormat,%20javax.sound.sampled.AudioInputStream%29
发布于 2014-06-06 00:37:26
好吧,我没有认出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);
}https://stackoverflow.com/questions/24063888
复制相似问题