我的目标是同时播放多个 mp3、ogg 或 wav 音乐文件,以便在视频游戏中创建自适应音乐。
我没有使用 java 声音 API 中的 Clip 类,而是设法创建了一个名为 Track 的类,多亏了 mp3spi 和 vorbisspi,它可以通过将音频数据写入 SourceDataLine 来读取 mp3、ogg 和 wav 文件。由于这篇文章,我找到了这个解决方案:
https://stackoverflow.com/a/17737483/13326269
使用线程进入流函数一切正常,因此我可以创建许多 Track 对象来同时播放多个声音。但我想void setMicrosecondPosition(long microseconds);
从 Clip 类中创建一个函数。
我尝试了很多事情,并找到了一种方法:
in = getAudioInputStream(new File(file).getAbsoluteFile());
int seconds = 410;
int bitrate = 320; //in kbit/s
in.skip(seconds*bitrate*1000/8); // divided by 8 because the skip method use bytes.
但我需要文件的比特率。那么,我怎样才能得到任何声音文件的比特率呢?或者更好的是,如何将 mp3 和 ogg 文件与javax.sound.sampled.Clip类一起使用。