坚持在java中播放wav文件。。。需要一些指导吗

坚持在java中播放wav文件。。。需要一些指导吗,java,audio,wav,Java,Audio,Wav,当按下按钮时,我试图用java播放声音。因此,我有如下几点: public void playSound(File soundFile) { try { AudioInputStream stream = AudioSystem.getAudioInputStream(soundFile); AudioFormat format = stream.getFormat(); DataLine.Info info = new DataLine.

当按下按钮时,我试图用java播放声音。因此,我有如下几点:

public void playSound(File soundFile) {
    try {
        AudioInputStream stream = AudioSystem.getAudioInputStream(soundFile);
        AudioFormat format = stream.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(stream);
        clip.start();
    }
    catch (Exception e) {e.printStackTrace();}
}
然后在buttonListener内调用actionPerformed中的方法:

playSound(new File("woow_x.wav"));
但它抛出了不支持的异常。这是否意味着不支持.wav文件?我确认wav文件工作正常,所以我不知道问题出在哪里。我正在尝试不使用sun来实现这一点。请让我知道这是如何正确完成的。多谢各位

堆栈跟踪:

    javax.sound.sampled.UnsupportedAudioFileException: could not get audio input 
    stream from input file
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at robotMaze.SystemGUI.playSound(SystemGUI.java:183)
    at robotMaze.SystemGUI$SendButtonListener.actionPerformed(SystemGUI.java:229)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$400(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

文件的编码在其标头中指定为
0x55
。我不确定什么是
0x55
,但我怀疑它是mp3。无论如何,它都不是Java支持的编码之一


出于您的目的(如果许可证允许),您可以使用音频编辑器将文件转换为支持的格式。(这些由中的静态字段枚举。)

catch(异常e){}
:不要这样做,否则您不知道问题出在哪里。至少要捕获(异常e){e.printStackTrace();}。然后在此处复制并粘贴堆栈跟踪。完成。这是说.wav文件不受支持吗?更可能是文件的某些特定方面。尝试
System.out.println(AudioSystem.getAudioFileFormat(soundFile.getFormat())
并告诉我们它说了什么。
javax.sound.sampled.UnsupportedAudioFileException:文件不是受支持的文件类型
您从哪里获得wav文件的?你知道它的编码吗?很抱歉回复晚了。你能不能帮我快速了解一下如何使用AudioFormat.Encoding?我不知道这个领域是什么(ulaw、alaw等)。谢谢你的帮助!我真的很感激。AudioFormat.Encoding基本上是javax.sound.sampled支持的格式的枚举。如果使用音频编辑器转换文件,则可以选择这些格式中的任何一种。如果你不知道什么是A-law、u-law、PCM等,你应该在谷歌上搜索一下,因为有维基百科之类的文章PCM是最简单的格式。一种非常标准的格式是16位PCM,采样率为44100Hz。