小编典典

AudioInputStream不起作用

java

我试图每次用户按下按钮时播放.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();
}

阅读 456

收藏
2020-10-16

共1个答案

小编典典

我设法使其正常工作。这是我使用的代码。请记住,我只需要播放短的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();
        }
    }
2020-10-16