Carga y Reproducción de clips de audio

Java proporciona varios mecanismos para reproducir sonidos en un applet. La dos formas mas simples son con el metodo play de applet y metodo play de la clase AudioClip. Las dos más simples son los applet ‘s desempeñar método y el método de jugar el AudioClip. Capacidades de audio adicionales están disponibles en el Java Media Framework y Java Sound API. Si desea reproducir un sonido una vez en un programa, el applet método play, carga el sonido y se reproduce una vez.

public void play( URL location, String soundFileName );

public void play( URL soundURL );

La primera versión carga el clip de audio almacenados en el archivo soundFileName de la ubicación y reproducirá el sonido. El primer argumento es normalmente una llamada al applet de getDocumentBase o método getCodeBase. El método getDocumentBase devuelve la ubicación del archivo HTML que carga el applet. (Si el applet se encuentra en un paquete, el método devuelve la ubicación del paquete o el archivo JAR que contiene el paquete.) El método getCodeBase indica la ubicación del applet. Archivo de clase. La segunda versión del método de play toma una URL que contiene la ubicación y el nombre de archivo del clip de audio. La declaracion:

play( getDocumentBase(), "hi.au" );

La reproduccion de clips de audio soporta varios formatos de archivos de audio, incluyendo:
• Sun formato de archivo de audio ( .au )
• Windows Wave file format (. Au extensión)
• Windows Wave formato de archivo ( .wav )
• Macintosh AIFF file format (. Wav )
• Macintosh formato de archivo AIFF ( .aif o.aiff )
• Musical Instrument Digital Interface (. Aif o. aiff)
• Instrumento musical de interfaz digital ( MIDI ) (MIDI)

JMF y Java API tambien pueden reproducir formatos adicionales

Ejemplo

El ejemplo demuestra la carga y reproduccion de un AudioClip (paquete java.applet). Esta técnica es más flexible que el método play del applet. Un applet puede usar un AudioClip para almacenar audio para una reproduccion reiterada a lo largo de la ejecución del programa.

import java.applet.AudioClip;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.FlowLayout;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;

public class LoadAudioAndPlay extends JApplet
{
   private AudioClip sound1, sound2, currentSound;
   private JButton playJButton, loopJButton, stopJButton;
   private JComboBox soundJComboBox;

   public void init()
   {
      setLayout( new FlowLayout() );

      String choices[] = { "Welcome", "Hi" };
      soundJComboBox = new JComboBox( choices ); // create JComboBox

      soundJComboBox.addItemListener(

         new ItemListener() // anonymous inner class
         {
            public void itemStateChanged( ItemEvent e )
            {
               currentSound.stop();
               currentSound = soundJComboBox.getSelectedIndex() == 0 ?
                  sound1 : sound2;
            }
         }
      ); 

      add( soundJComboBox ); 

      ButtonHandler handler = new ButtonHandler();

      playJButton = new JButton( "Play" );
      playJButton.addActionListener( handler );
      add( playJButton );

      loopJButton = new JButton( "Loop" );
      loopJButton.addActionListener( handler );
      add( loopJButton );

      stopJButton = new JButton( "Stop" );
      stopJButton.addActionListener( handler );
      add( stopJButton );

      sound1 = getAudioClip( getDocumentBase(), "welcome.wav" );
      sound2 = getAudioClip( getDocumentBase(), "hi.au" );
      currentSound = sound1;
   } 

   public void stop()
   {
      currentSound.stop();
   } 

   private class ButtonHandler implements ActionListener
   {
      public void actionPerformed( ActionEvent actionEvent )
      {
         if ( actionEvent.getSource() == playJButton )
            currentSound.play();
         else if ( actionEvent.getSource() == loopJButton )
            currentSound.loop();
         else if ( actionEvent.getSource() == stopJButton )
            currentSound.stop();
      }
   }
}

Aca dejo las fuentes para que hagan sus applets uds mismos (se incluye los archivos de audio)

Fuentes_carga_reproduccion_clips_audio

Read More

Reproducir video en Java

Java, a través de una serie de clases, proprorciona muchas facilidades a nivel de multimedia que permiten desarrollar aplicaciones multimedia muy poderosas.

Reproducir video en Java con Java Media Framework

Las cualidades de Java hizo que Sun Microsystems, Intel y Silicon Graphics trabajaran juntas para producir el API de multimedia llamado Java Media Framework (JMF). Usando JMF los programadores pueden crear aplicaciones que reproducen, editan y capturan muchis tipos flujos de diferenten extensiones.

IBM y Sun desarrollaron la ultima version de JMF (2.0) y ciertas especificaciones en la implementacion de JMF (JJMF 2.1.1e) que soporta formatos de multimedia como:

> Microsoft Audio/Video Interleave (.avi)

> Macromedia Flash 2 movies (.swf)

> Future Splash (.spl)

> MPEG Layer 3 Audio (.mp3)

> Musical Instrument Digital Interface (MIDI; .mid or .rmi extensions)

> MPEG-1 videos (.mpeg, .mpg)

> QuickTime (.mov)

> Sun Audio file format (.au extension)

> Macintosh AIFF file format (.aif or .aiff extension)

Actualmente, JMF esta disponible en su version mas reciente (2.1.1e) puede ser descargada en:

http://java.sun.com/products/java-media/jmf/2.1.1/download.html

Creando un reproductor de video

JMF ofrece una serio de mecanismos de reproduccion. Simplemente se debe usar las implementacions de los objetos de reproduccion declarados en el paquete package javax.media. En este paquete estan las clases que forma el JMF. Para reproducir un media clip lo primero que se debe hacer es declarar un obketo URL y darle referencia al clip. Entonces esa URL pasa como argumento al metodo estatico createRealizedPlayer de la clase Manager para optener el reproductor adecuado para este clip. En el codigo de abajo se declara un JPanel para demostrar el funcionamiento de algunos metodos.

Veamos un ejemplo completo donde se reproduce videos desde java. Se crea la clase MediaPanel que va a contener todos lo metodos de reproduccion necesarios. Luego en la clase MediaTest se instancia el JPanel y se lanza la aplicacion, aca tambien es donde se crea la URL de archivo multimedia para ser cargado.

package cliente;

/**
 *
 * @author manix
 */
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.io.IOException;
    import java.net.URL;
    import javax.media.CannotRealizeException;
    import javax.media.Manager;
    import javax.media.NoPlayerException;
    import javax.media.Player;
    import javax.swing.JPanel;

    public class MediaPanel extends JPanel
    {
       public MediaPanel( URL mediaURL )
       {
          setLayout( new BorderLayout() ); // use a BorderLayout

          // Uso de componentes sencillos
         Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );

          try
          {
             // crear un reproductor para la URl especifica
             Player mediaPlayer = Manager.createRealizedPlayer( mediaURL );

             // componentes de interfaz para el mostrar el video y controles
             Component video = mediaPlayer.getVisualComponent();
             Component controls = mediaPlayer.getControlPanelComponent();

             if ( video != null )
                // agragar el video al componente
                add( video, BorderLayout.CENTER );

             if ( controls != null )
                // agregar controles
                add( controls, BorderLayout.SOUTH );

             mediaPlayer.start(); //  reproducir el clip
          }
          catch ( NoPlayerException noPlayerException )
          {
             System.err.println( "No se encontro archivos de multimedia" );
          }
          catch ( CannotRealizeException cannotRealizeException ){
             System.err.println( "No se puede reconocer el reproductor" );
          }
          catch ( IOException iOException ){
             System.err.println( "Error al leer la fuente" );
          }
       }
    }


package cliente;

/**
 *
 * @author manix
 */
     import java.net.MalformedURLException;
     import java.net.URL;
     import javax.swing.JFileChooser;
     import javax.swing.JFrame;

     public class MediaTest
    {
       // lanzar aplicacion
       public static void main( String args[] )
       {
          JFileChooser fileChooser = new JFileChooser();

          int result = fileChooser.showOpenDialog( null );

          if ( result == JFileChooser.APPROVE_OPTION )
          {
             URL mediaURL = null;

             try
             {
                // tomar la URL
                mediaURL = fileChooser.getSelectedFile().toURL();
             }
             catch ( MalformedURLException malformedURLException )
            {
                System.err.println( "No se pudo crear la URL" );
             }

             if ( mediaURL != null )
             {
                JFrame mediaTest = new JFrame( "Media" );
                mediaTest.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

                MediaPanel mediaPanel = new MediaPanel( mediaURL );
                mediaTest.add( mediaPanel );

                mediaTest.setSize( 300, 300 );
                mediaTest.setVisible( true );
             }
          }
       }
    }

Si estas interesados en las fuentes aca las dejo:

MediaTest.java MediaPanel.java

Read More