gentoo linux, java, software libre y otras hierbas
jul, 18 2008 - 5:16 pm

[codigo] Cargar y reproducir audio en Java

En esta ocasión explicaré un sencillo ejemplo de reproducción de audio en Java, tomado del libro How-to program in Java de Deitel. La clase que utilizamos para este tipo de propósitos es AudioClip, que posee tres simples métodos:

  • play(), para reproducir una vez el archivo que le tengamos asociado
  • loop(), para reproducir indefinidamente el archivo que le tengamos asociado
  • stop(), para detener el sonido que se está reproduciendo

Para iniciar un objeto AudioClip utilizamos el método getAudioClip, de la clase Applet, de la siguiente manera: getAudioClip(getDocumentBase(),”archivo.wav”).

El resultado…

El código…

// Cargar un clip de audio y reproducirlo.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CargarAudioYReproducir extends JApplet {
   private AudioClip sonido1, sonido2, sonidoActual;
   private JButton reproducirSonido, sonidoContinuo, detenerSonido;
   private JComboBox seleccionarSonido;
   // cargar la imagen cuando el subprograma empiece a ejecutarse
   public void init()
   {
      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );
      String opciones[] = { "Welcome", "Hi" };
      seleccionarSonido = new JComboBox( opciones );
      seleccionarSonido.addItemListener(
         new ItemListener() {
            // detener sonido y cambiarlo por el que seleccionó el usuario
            public void itemStateChanged( ItemEvent e )
            {
               sonidoActual.stop();
               sonidoActual =
                  seleccionarSonido.getSelectedIndex() == 0 ? sonido1 : sonido2;
            }
         } // fin de la clase interna anónima
      ); // fin de la llamada al método addItemListener
      contenedor.add( seleccionarSonido );
      // establecer botones y manejador de eventos de botón
      ButtonHandler manejador = new ButtonHandler();
      reproducirSonido = new JButton( "Reproducir" );
      reproducirSonido.addActionListener( manejador );
      contenedor.add( reproducirSonido );
      sonidoContinuo = new JButton( "Continuo" );
      sonidoContinuo.addActionListener( manejador );
      contenedor.add( sonidoContinuo );
      detenerSonido = new JButton( "Detener" );
      detenerSonido.addActionListener( manejador );
      contenedor.add( detenerSonido );
      // cargar sonidos y establecer sonidoActual
      sonido1 = getAudioClip( getDocumentBase(), "welcome.wav" );
      sonido2 = getAudioClip( getDocumentBase(), "hi.au" );
      sonidoActual = sonido1;
   } // fin del método init
   // detener el sonido cuando el usuario cambie de página Web
   public void stop()
   {
      sonidoActual.stop();
   }
   // clase interna privada para manejar eventos de botón
   private class ButtonHandler implements ActionListener {
      // procesar eventos de reproducir, sonido continuo y detener
      public void actionPerformed( ActionEvent eventoAccion )
      {
         if ( eventoAccion.getSource() == reproducirSonido )
            sonidoActual.play();
         else if ( eventoAccion.getSource() == sonidoContinuo )
            sonidoActual.loop();
         else if ( eventoAccion.getSource() == detenerSonido )
            sonidoActual.stop();
      }
   } // fin de la clase ButtonHandler
} // fin de la clase CargarAudioYReproducir

Descargar código fuente

Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.

43 Comentarios | deja el tuyo

43 Comentarios en “[codigo] Cargar y reproducir audio en Java”

  1. DIego dice:

    Y si quiero reproducir archivos mp3???

  2. Ers dice:

    Saludos!!! cuando ejecuto la pagina y el script de java; en la pagina me marca un navegador lo intente en explorer y en mozilla

    Espero su respuesta
    gracias!!!

  3. ers dice:

    Ya vi el por que de todos modos grax

    Un buen aporte

  4. Ross dice:

    HOla mi duda es sobre si con este codigo poria yo simular como la reproduccion de desibeles mas o menos para las otoemisiones acusticas

  5. byron dice:

    necesito saber informacion acerca del uso de la clase sessionaddres en java (netbeans) implementado en un programa para capturar audio

  6. ceamha dice:

    Que bien!!
    Esto era lo que estaba buscando!!
    Gracias :)

  7. mario dice:

    Es presisamente lo q estaba buscando gracias

  8. Christian dice:

    Orale
    gracias por el aporte
    me sirvio un chingo

  9. Air dice:

    Se puede implemetar para un juego??

  10. ricco dice:

    hola casidiablo
    quisiera saber
    coo puedo
    llamar a una imagen con un jfilechooser
    y mostrar lo como fondo en un panel
    gracias

    si puedes colgar algun archivo

  11. Force dice:

    Justo lo que estaba buscando pero mira.. creo q java solo puede reproducir un solo tipo de archivos ya que ahora estoy intentando y no funca con una cancion

  12. jose said dice:

    saludos y gracias por compartir la aplicacion con nosotros newbies…

  13. victor dice:

    OMG gracias viejo hace rato andaba buscando alguien como tu, sigue subiendo cosas por el estilo, te felicito

  14. Nelson Valladares dice:

    Me gusta la programacion,y quisiera aprender mas,.Yo estudio en la universidad de camaguey en Cuba.El lenguage de programacion que uso es Java.

¡Déjanos tu comentario!