Java:播放WAV声音

时间:2009-02-04 17:30:26

标签: java audio

我正在尝试构建一个需要播放各种鼓声部件(低音鼓,小鼓等)的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.*已被弃用。是否有类似的解决方案?

3 个答案:

答案 0 :(得分:1)

您是否看过Java Media Framework (JMF)

  

Java Media Framework API(JMF)   启用音频,视频和其他功能   要添加的基于时间的媒体   基于Java构建的应用程序和applet   技术。这个可选包,   它可以捕获,回放,流,   并转码多种媒体格式,   扩展了Java 2平台,标准版   多媒体版(J2SE)   开发人员提供强大的功能   工具包开发可扩展,   跨平台技术。

答案 1 :(得分:1)

也许你应该把声音放在缓存中:如果你每次播放它们都是从磁盘加载它们,那确实很慢。现在,您可能遇到内存问题,但这取决于您的声音(大小,数量......)。

答案 2 :(得分:1)

你可以尝试的一件事就是制作一些额外的线程。

如果您可以同时播放两个声音,那么只需制作一个具有相同声音的5个实例的缓冲区并播放可用的声音。