如何在Java游戏中实现音频?

如何在Java游戏中实现音频?,java,audio,javasound,Java,Audio,Javasound,我想在我的java游戏中添加音频,但我不知道如何将其付诸实践。据我所知,Java只播放wav文件,但这个文件太大了。 我读过一些关于JLayer的书,但实际上我需要android中的soundpool之类的东西来处理游戏中的所有效果。你知道怎么做吗?我必须构建一个这样做的类?这是我不久前在游戏中使用的一些代码: 公共类MP3{ 公共无效播放(最终输入流输入){ 新线程(){ @凌驾 公开募捐{ 试一试{ 新玩家(在).play()中; }捕获(例外e){ System.err.println(e

我想在我的java游戏中添加音频,但我不知道如何将其付诸实践。据我所知,Java只播放wav文件,但这个文件太大了。
我读过一些关于JLayer的书,但实际上我需要android中的soundpool之类的东西来处理游戏中的所有效果。你知道怎么做吗?我必须构建一个这样做的类?

这是我不久前在游戏中使用的一些代码:

公共类MP3{
公共无效播放(最终输入流输入){
新线程(){
@凌驾
公开募捐{
试一试{
新玩家(在).play()中;
}捕获(例外e){
System.err.println(e.getMessage());
}
}
}.start();
}
} 
私有HashMap soundMap=新HashMap();
公共图书馆{
字符串[]文件名={
“剩余5秒。mp3”,
“剩余10秒。mp3”,
“按按钮时声音很大。mp3”
};
用于(字符串s:文件名){
soundMap.put(s.substring(0,s.indexOf('.')),getClass().getResource(“sounds/”+s));
}
}
公共无效播放声音(字符串名称){
试一试{
新的MP3().play(新的BufferedInputStream(soundMap.get(name.openStream()));
}catch(IOException ex){}
}

这是我不久前在游戏中使用的一些代码:

公共类MP3{
公共无效播放(最终输入流输入){
新线程(){
@凌驾
公开募捐{
试一试{
新玩家(在).play()中;
}捕获(例外e){
System.err.println(e.getMessage());
}
}
}.start();
}
} 
私有HashMap soundMap=新HashMap();
公共图书馆{
字符串[]文件名={
“剩余5秒。mp3”,
“剩余10秒。mp3”,
“按按钮时声音很大。mp3”
};
用于(字符串s:文件名){
soundMap.put(s.substring(0,s.indexOf('.')),getClass().getResource(“sounds/”+s));
}
}
公共无效播放声音(字符串名称){
试一试{
新的MP3().play(新的BufferedInputStream(soundMap.get(name.openStream()));
}catch(IOException ex){}
}

我推荐TinySound。它支持ogg/vorbis文件(一种类似于mp3的免费压缩格式,但不需要mp3那样的许可)

此处提供了指向此库的github源的链接


也可以使用Java作为合成器(我已经涉猎过这一点),但我仍在努力制作一些“实用”的东西用于游戏。

我推荐TinySound。它支持ogg/vorbis文件(一种类似于mp3的免费压缩格式,但不需要mp3那样的许可)

此处提供了指向此库的github源的链接

也可以使用Java作为合成器(我已经涉猎过这一点),但我仍在努力制作一些“实用”的东西用于游戏。

我可以推荐。它小而简单,“我读过,Java只播放wav文件”,这是完全错误的。它们支持各种格式。Java声音还可以支持其他格式,如MP3 by SPI。有关详细信息,请参阅。我可以推荐。它小而简单,“我读过,Java只播放wav文件”,这是完全错误的。它们支持各种格式。Java声音还可以支持其他格式,如MP3 by SPI。有关详细信息,请参阅。
public class MP3 {
  public void play(final InputStream in) {
     new Thread() {
        @Override
        public void run() {
           try {
              new Player(in).play();
           } catch (Exception e) {
              System.err.println(e.getMessage());
           }
        }
     }.start();
   }
 } 

private HashMap<String, URL> soundMap = new HashMap<String, URL>();

public void loadSounds() {
      String[] filenames = {
         "5_seconds_remaining.mp3",
         "10_seconds_remaining.mp3",
         "button_press_loud.mp3"
      };
      for (String s : filenames) {
         soundMap.put(s.substring(0, s.indexOf('.')), getClass().getResource("sounds/" + s));
      }
   }

public void playSound(String name) {
     try {
         new MP3().play(new BufferedInputStream(soundMap.get(name).openStream()));
     } catch (IOException ex) {}
}