在java中播放和查找音频文件

在java中播放和查找音频文件,java,audio,playback,seek,javasound,Java,Audio,Playback,Seek,Javasound,我用类来播放我的Wav文件 这很好,但是如何在某个位置(KB或秒)启动我的wav文件 这是代码的一部分。使用此值偏移量: 0

我用类来播放我的Wav文件

这很好,但是如何在某个位置(KB或秒)启动我的wav文件


这是代码的一部分。

使用此值
偏移量

0

因此,它将从偏移量的当前值开始读取,因此只写入读取的数据。现在您使用的是
offset=0的值

auline.write(abData,0,nBytesRead)
-->
auline.write(abData,offset,nBytesRead)

其中,
offset
大于0但小于
nBytesRead
参见文档

一个
剪辑
(1)可以方便地从任何需要的地方(以秒为单位)发出声音。有关示例,请参见中的
剪辑
代码

  • 特别是看。
    • 。“以微秒为单位设置媒体位置。”
    • “设置示例帧中的媒体位置。”
    • 。“设置将在循环中播放的第一个和最后一个采样帧。”

  • 是的,我试过auline.write(abData,外部缓冲区大小*(n),n字节读取);但它不起作用,我得到了错误。。。现在我正在使用Clip及其工作方式,感谢您在javax.sound.sampled.AudioInputStream.read(AudioInputStream.java:275)的java.io.FileInputStream.readBytes(本机方法)中使用线程“thread-6”java.lang.IndexOutfBoundsException中的replyException在akorbulsoundrecorder.AePlayWave.run(AePlayWave.java:90)中,您实际上是如何实现语句
    nBytesRead=audioInputStream.read(abData,0,abData.length)的auline.start();
        int nBytesRead = 0;
        byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
    
    
    
        try {
            while (nBytesRead != -1) {
                nBytesRead = audioInputStream.read(abData, 0, abData.length);
                System.out.println("s");
                if (nBytesRead >= 0)
                    auline.write(abData, 0, nBytesRead);
            }
        } catch (IOException e) {
            return;
        } finally {
            auline.drain();
            auline.close();
        }