我试图每次用户按下按钮时播放.wav声音,但是会引发异常:
线程“ Thread-0”中的异常java.lang.IllegalArgumentException:无效的格式 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) 在Uber.play(Uber.java:534) 在Uber $ 5.run(Uber.java:340) 在java.lang.Thread.run(Thread.java:724)
这是代码:
//Play Audio File public void play(String file) throws LineUnavailableException, UnsupportedAudioFileException, IOException { AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(file)); Clip clip = AudioSystem.getClip(); clip.open(inputStream); clip.start(); }
我设法使其正常工作。这是我使用的代码。请记住,我只需要播放短的beep.wav声音。较长的声音文件似乎有些麻烦。让我知道它是否适合您,以及您是否可以使用此代码播放更长的声音。
public void play(String file) throws LineUnavailableException, UnsupportedAudioFileException, IOException { try { AudioInputStream inputStream = AudioSystem.getAudioInputStream(this.getClass().getResource(file)); AudioFormat format = inputStream.getFormat(); DataLine.Info info = new DataLine.Info(Clip.class, format); Clip clip = (Clip)AudioSystem.getLine(info); clip.open(inputStream); clip.start(); } catch (IOException | LineUnavailableException | UnsupportedAudioFileException e1) { e1.printStackTrace(); } }