我正在创建一个应用程序来播放音频文件(WAV)。
播放效果非常好,我做了一个小功能,即通过skip()
的audioInputStream
方法将X向前“跳跃”(秒),这也很完美。
我的问题是要实现向后的“跨越” X(秒)。我再次使用带有负数的skip()
方法,它有效。但是然后音频文件无法读取文件的末尾,我在末尾丢失了X(秒),我的播放停止了,并且我的引用audioInputStream.read
返回-1,就好像我的播放已完成,但实际上并未完成。
最佳答案
这是我的代码示例:
while ((((bytesRead = this.audioInputStream.read(audioDataFull, 0, audioDataFull.length)) != -1) && (!this.leaveThread))) {
line.write(audioDataFull, 0, bytesRead);
this.nb++;
while (this.audioWav.isPause()) {
if (test) {
try {
this.audioInputStream.skip((long) -(this.audioInputStream.getFormat().getSampleRate()
* (this.audioInputStream.getFormat().getSampleSizeInBits() / 8) * TraitementXML.tmpXml.getBufferRelecture()));
test = false;
} catch (final Exception e) {
this.audioInputStream.skip(-(this.nb * bytesRead));
this.nb = 0;
test = false;
}
}
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
logger.error(e.getMessage(), e);
}
}
}
关于java - 带有负值的AudioInputStream.skip,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34996880/