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