我已经搜索过这个问题,但所有人都在使用套接字。 我只是使用一个固体文件,所以一切都应该已经在Stream ... 这是我的代码:
bottom:0
IOUtils.toByteArray(din2)卡住某些文件,并且适用于其他文件,所以我检查了里面的内容,并且这个函数在调试模式下卡住了:
AudioInputStream in = null;
MpegAudioFileReader mp = new MpegAudioFileReader();
in = mp.getAudioInputStream(new File(this.directory + currentBeatmaps.get(0).getAudioFileName()));
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(),
16,
baseFormat.getChannels(),
baseFormat.getChannels() * 2,
baseFormat.getSampleRate(),
false);
final AudioInputStream din2 = AudioSystem.getAudioInputStream(decodedFormat, in);
long length = din2.getFrameLength();
byte[] bytes = IOUtils.toByteArray(din2);
in.close();
InputStream is1 = new ByteArrayInputStream(bytes);
AudioInputStream din = new AudioInputStream(
is1,
decodedFormat,
length
);
在第一次迭代时执行input.read(buffer)时它会死掉。 我再说一遍,这适用于某些文件而不适用于其他文件,所以我不知道如何处理这个...... 如果有人至少可以找到一个解决方案,检测它何时会这样做,这样我就可以打印一个很棒的错误(这部分对我的软件并不重要)