0

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...

Invader Zim
  • 796
  • 2
  • 14
  • 39

1 Answers1

1

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.

Invader Zim
  • 796
  • 2
  • 14
  • 39