坚持在java中播放wav文件。。。需要一些指导吗
当按下按钮时,我试图用java播放声音。因此,我有如下几点:坚持在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.
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。