我正在编写一个播放一系列Clip (clip.start())的程序,平均每秒播放一个。
这意味着一个剪辑被启动,一秒钟后它被停止,另一个剪辑被启动,以此类推,大约10个剪辑。
结果并不是“流动的”,有些片段甚至没有开始或者没有被听到。
我的问题是: Clip类适合这种事情吗?或者,剪辑不应该处理频繁的停止和启动?
如果Clip不合适,有没有其他的类或库可以推荐用于此目的?或者一些关于如何使用剪辑的指南,这样我所描述的就可以流畅地工作了?(可能是关于线程之类的)。
发布于 2014-04-22 01:08:20
我对Java中的音频没有太多的经验,但我在剪辑方面的经验很差。我发现由于某种原因,重新启动一个剪辑需要半秒的时间,这是不可接受的(我发现了一些明显与这个问题相关的旧bug,但在我研究它的时候,它可能是一个新bug)。一个SourceDataLine有一个缓冲区来保存你的整个声音,对我来说效果更好。
然而,我建议使用TinySound,它是一个简单的抽象。
下面是他们页面上的例子:
//initialize TinySound
TinySound.init();
//load a sound and music
//note: you can also load with Files, URLs and InputStreams
Music song = TinySound.loadMusic("song.wav");
Sound coin = TinySound.loadSound("coin.wav");
//start playing the music on loop
song.play(true);
//play the sound a few times in a loop
for (int i = 0; i < 20; i++) {
coin.play();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
//be sure to shutdown TinySound when done
TinySound.shutdown();https://stackoverflow.com/questions/23201771
复制相似问题