Invader Zim
Invader Zim

Reputation: 838

Playing .wav continuously in java: Invalid Format Exception

I want to play a .wav file continuously in Java. I found some code, but I can't make it work.

String fileName = "res/sound/buz.wav";
File file = new File(fileName);
AudioInputStream ais;
try {
    Clip clip = AudioSystem.getClip();
    ais = AudioSystem.getAudioInputStream(file);
    clip.open(ais);
    clip.loop(Clip.LOOP_CONTINUOUSLY);

} catch (UnsupportedAudioFileException | IOException
        | LineUnavailableException e) {
    e.printStackTrace();
}

I get an Invalid Format Exception on clip.open(ais):

Exception in thread "main" java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453)
    at launcher.Launcher.main(Launcher.java:59)

I checked and file is created correctly and exists. So, what is the problem with my code?

If it matters, I'm working on Linux, but this should work on both Linux and Windows...

Upvotes: 0

Views: 398

Answers (1)

Invader Zim
Invader Zim

Reputation: 838

So I found a solution

    try{
        File file = new File (fileName);
        AudioClip clip = Applet.newAudioClip(file.toURL());
        clip.loop();
        clip.stop();
    }
    catch(Exception e){
        e.printStackTrace();
    }

I can play a .wav file in a loop and stop it. That's what I wanted. And the code is very short.

Upvotes: 1

Related Questions