具有负值的AudioInputStream.skip

时间:2016-01-25 16:00:07

标签: java audio playback

我正在创建一个播放音频文件(WAV)的应用程序。 回放工作完美,我做了一个小功能,通过skip()的{​​{1}}方法进行X(秒)的向前“跳跃”,这也很有效。

我的问题是实现向后“飞跃”X(秒)。我再次使用带有负数的audioInputStream方法,它有效。但是音频文件没有读到文件的末尾我最后丢失了X(秒),我的播放停止了,我的引用skip()返回-1,好像我的播放已经完成但实际上它已经完成了不

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);
        }
     }
  }