Java:播放WAV声音

3

我正在尝试构建一个Java鼓机,需要播放各种鼓部件(低音鼓、军鼓等)的WAV声音样本。因为我需要按紧密的顺序播放这些声音,所以需要高性能。目前我正在使用:

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();
        }          
    }
}

如此建议:如何在Java中播放声音?

虽然比MP3 + Javazoom jLayer快,但在高速度和执行CPU密集型任务(如调整应用程序窗口大小)时仍会听起来不流畅。

有没有提高性能的技巧?

顺便说一下,我也读到了sun.audio.*已被弃用。是否有类似的解决方案?

3个回答

1

你有没有看过Java媒体框架(JMF)

Java媒体框架API(JMF)使音频、视频和其他基于时间的媒体能够被添加到基于Java技术构建的应用程序和小程序中。这个可选包可以捕获、播放、流式传输和转码多种媒体格式,通过提供强大的工具包来开发可扩展、跨平台的技术,为多媒体开发人员扩展了Java 2平台标准版(J2SE)。


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

1

你可以尝试的一件事情是创建几个额外的线程。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接