Tips: Como reproducir sonidos en java

Para poder reproducir sonidos en java, por ejemplo al presionar un boton, tendremos que agregar el siguiente método en alún lugar de nuestra clase:

  1.     public void ReproducirSonido(String nombreSonido){
  2.        try {
  3.         AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(nombreSonido).getAbsoluteFile());
  4.         Clip clip = AudioSystem.getClip();
  5.         clip.open(audioInputStream);
  6.         clip.start();
  7.          System.out.println("Error al reproducir el sonido.");
  8.        }
  9.      }

Luego dejamos que nuestro IDE arregle las importaciones necesarias

  1. import java.awt.FlowLayout;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import javax.sound.sampled.AudioInputStream;
  7. import javax.sound.sampled.AudioSystem;
  8. import javax.sound.sampled.Clip;
  9. import javax.sound.sampled.LineUnavailableException;
  10. import javax.sound.sampled.UnsupportedAudioFileException;

Y ya simplmente ejecutamos el método pasando como parámetro un String con la dirección de directorio del archivo (solo lo he probado con archivos "wav").

Como antes es preferible contar con nuestro archivo dentro "TuEquipo / MisDocumentos/ NetBeansProjects/ TuProyecto/ Tupaquete" que va a ser el String del parametro para que se pueda encontrar y ejecutar el archivo.

Y Por ejemplo al crear una ventana con un boton que reproduzca algun sonido en particular(en la web hay cientos de paginas que brindan sonidos libres de derechos de autor para que puedan ser utilizados por cualquier usuario), en mi caso es un sonido de un disparo... el código es el siguiente:

  1. import java.awt.FlowLayout;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import javax.sound.sampled.AudioInputStream;
  7. import javax.sound.sampled.AudioSystem;
  8. import javax.sound.sampled.Clip;
  9. import javax.sound.sampled.LineUnavailableException;
  10. import javax.sound.sampled.UnsupportedAudioFileException;
  11. import javax.swing.JButton;
  12. import javax.swing.JFrame;
  13.  
  14. public class Sonido extends JFrame implements ActionListener{
  15.     JButton boton1 = new JButton("Pulsame");
  16.     public Sonido(){
  17.         super("Pulse el boton");
  18.         setSize(400,80);
  19.         setLocationRelativeTo(null);
  20.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21.         setLayout(new FlowLayout());
  22.         add(boton1);
  23.         boton1.addActionListener(this);
  24.         setVisible(true);
  25.     }
  26.     public static void main(String[] Dar10){
  27.         new Sonido();
  28.     }
  29.     public void ReproducirSonido(String nombreSonido){
  30.        try {
  31.         AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(nombreSonido).getAbsoluteFile());
  32.         Clip clip = AudioSystem.getClip();
  33.         clip.open(audioInputStream);
  34.         clip.start();
  35.          System.out.println("Error al reproducir el sonido.");
  36.        }
  37.      }
  38.     @Override
  39.     public void actionPerformed(ActionEvent e) {
  40.         if(e.getSource() == boton1){
  41.             ReproducirSonido("src/tiro.wav");
  42.         }
  43.     }
  44. }

El resultado visual es (no se llega a apreciar el momento de hacer click y escuchar el sonido, pero es asi)

Puedes escuchar y/o descargar el sonido que elegi puedes hacerlo en el siguiente en el enlace

7 comentarios:

  1. Si el archivo es .mp3 no funciona, pero al convertirlo a wav funciona correctamente.

    ResponderEliminar
  2. Gracias por el aporte, me mucho sirvió para un proyecto. Saludos.

    ResponderEliminar
  3. me sale error al reproducir sonido y el audio que tengo esta en formato .wav

    ResponderEliminar
  4. ya logre hacerlo, con JAVAFX tengo la version 11 de jdk, netbeans 12.0

    fue necesario descargar la librería y configurarla... revisen este video https://www.youtube.com/watch?v=IdTc_ZIGlMg&t=191s

    ResponderEliminar
  5. Funciona al 100%. Gracias por compartir sus conocimientos.👍🏻

    ResponderEliminar
  6. super recontrarecomendadísimo gracias

    ResponderEliminar
  7. Si ponen un audio .mp3 no podra reproducirlo tendran que poner uno .wav porque es un formato mejor que el .mp3

    ResponderEliminar