我正在创建一个播放音频文件(WAV)的应用程序。
回放工作完美,我做了一个小功能,通过skip()
的{{1}}方法进行X(秒)的向前“跳跃”,这也很有效。
我的问题是实现向后“飞跃”X(秒)。我再次使用带有负数的audioInputStream
方法,它有效。但是音频文件没有读到文件的末尾我最后丢失了X(秒),我的播放停止了,我的引用skip()
返回-1,好像我的播放已经完成但实际上它已经完成了不
答案 0 :(得分: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);
}
}
}