Java中的声音问题

Posted

技术标签:

【中文标题】Java中的声音问题【英文标题】:Sound trouble in Java 【发布时间】:2016-09-01 23:27:38 【问题描述】:

你好, 我在 java 中使用 Sounds 时遇到了一些麻烦。 我只是想在我最新的复古 2d 游戏中实现一些花哨的 8 位声音...... 当我在 java eclipse 中运行它时,一切都很好,声音也能正常工作....

但一旦我运行完成的应用程序(应用程序本身运行完美......),声音不会播放,并且您可以在 3d 图片中看到错误。

图 1 显示了我的“声音方法”和图 2 我如何使用它。

我该如何解决这个问题?

【问题讨论】:

可能重复;试试这些答案:java.io.IOException: mark/reset not supported,java.io.IOException: mark/reset not supported。基本上,“您提供的输入流不支持设置标记并将流重置为该标记。”尝试将 FileInputStream 包装在 BufferedInputStream 中,如this answer 所示,或使用支持“标记/重置”的其他音频文件。 以后,请不要上传你的代码截图、stacktraces 或控制台输出,而是将文本复制并粘贴到问题中,突出显示并按 代码格式按钮其他用户更容易调试和运行您的代码。谢谢。 哦,好吧......这可能解释了我得到的反对意见......谢谢你告诉我......我不知道。我设法解决了这个问题。我在答案中发布了更改后的代码。不过还是谢谢你的帮助! 很酷,不用担心,很高兴听到您想通了,感谢您发布您的答案! 【参考方案1】:

我找到了解决方案。 我稍微更改了我的音频方法的代码......并且由于某种原因它现在可以工作了。 这是它的代码。

 public void playSound(String soundFile) 
        try 

            AudioInputStream audioIn = Audiosystem.getAudioInputStream(this.getClass().getResource("/Sounds/" + soundFile));
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.start();
         catch (UnsupportedAudioFileException e) 
             e.printStackTrace();
           catch (IOException e) 
             e.printStackTrace();
           catch (LineUnavailableException e) 
             e.printStackTrace();
          
    

【讨论】:

别忘了接受你的回答,它会增加你的声望;)

以上是关于Java中的声音问题的主要内容,如果未能解决你的问题,请参考以下文章

java中的声音 - 播放声音时游戏冻结

比较Java中的两个声音(有容差)[关闭]

Java 如何为循环中的每次迭代播放声音?

Java 中的声音:可以为多个剪辑使用相同的 AudioInputStream 吗?

iPhone中的声音映射

如何在 Java 中播放除哔哔声以外的声音?