How can I play sound in Java? How can I play sound in Java? java java

How can I play sound in Java?


I wrote the following code that works fine. But I think it only works with .wav format.

public static synchronized void playSound(final String url) {  new Thread(new Runnable() {  // The wrapper thread is unnecessary, unless it blocks on the  // Clip finishing; see comments.    public void run() {      try {        Clip clip = AudioSystem.getClip();        AudioInputStream inputStream = AudioSystem.getAudioInputStream(          Main.class.getResourceAsStream("/path/to/sounds/" + url));        clip.open(inputStream);        clip.start();       } catch (Exception e) {        System.err.println(e.getMessage());      }    }  }).start();}


A bad example:

import  sun.audio.*;    //import the sun.audio packageimport  java.io.*;//** add this into your application code as appropriate// Open an input stream  to the audio file.InputStream in = new FileInputStream(Filename);// Create an AudioStream object from the input stream.AudioStream as = new AudioStream(in);         // Use the static class member "player" from class AudioPlayer to play// clip.AudioPlayer.player.start(as);            // Similarly, to stop the audio.AudioPlayer.player.stop(as); 


I didn't want to have so many lines of code just to play a simple damn sound. This can work if you have the JavaFX package (already included in my jdk 8).

private static void playSound(String sound){    // cl is the ClassLoader for the current class, ie. CurrentClass.class.getClassLoader();    URL file = cl.getResource(sound);    final Media media = new Media(file.toString());    final MediaPlayer mediaPlayer = new MediaPlayer(media);    mediaPlayer.play();}

Notice : You need to initialize JavaFX. A quick way to do that, is to call the constructor of JFXPanel() once in your app :

static{    JFXPanel fxPanel = new JFXPanel();}