我正在尝试构建一个需要播放各种鼓声部件(低音鼓,小鼓等)的WAV声音样本的java鼓机。因为我需要以紧凑的顺序播放声音,所以我需要高性能。目前我正在使用:
import sun.audio.*;
import java.io.*;
public class MusicPlayer {
private String filename;
public MusicPlayer(String filename) {
this.filename = filename;
}
public void play() {
try {
InputStream in = new FileInputStream(filename);
AudioStream as = new AudioStream(in);
AudioPlayer.player.start(as);
} catch (IOException e) {
e.printStackTrace();
}
}
}
如此处所示:How can I play sound in Java?
虽然它确实比MP3 + Javazoom jLayer工作得更快,但它在高节奏时仍然听起来不稳定,当我做cpu密集的事情,比如调整应用程序窗口的大小。
有关改善表现的任何提示吗?
顺便说一句。我还读到sun.audio.*
已被弃用。是否有类似的解决方案?
答案 0 :(得分:1)
您是否看过Java Media Framework (JMF):
Java Media Framework API(JMF) 启用音频,视频和其他功能 要添加的基于时间的媒体 基于Java构建的应用程序和applet 技术。这个可选包, 它可以捕获,回放,流, 并转码多种媒体格式, 扩展了Java 2平台,标准版 多媒体版(J2SE) 开发人员提供强大的功能 工具包开发可扩展, 跨平台技术。
答案 1 :(得分:1)
也许你应该把声音放在缓存中:如果你每次播放它们都是从磁盘加载它们,那确实很慢。现在,您可能遇到内存问题,但这取决于您的声音(大小,数量......)。
答案 2 :(得分:1)
你可以尝试的一件事就是制作一些额外的线程。
如果您可以同时播放两个声音,那么只需制作一个具有相同声音的5个实例的缓冲区并播放可用的声音。