lunes, 11 de abril de 2011

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.
view source
print?
01 package cliente;
02
03 /**
04 *
05 * @author manix
06 */
07 import java.awt.BorderLayout;
08 import java.awt.Component;
09 import java.io.IOException;
10 import java.net.URL;
11 import javax.media.CannotRealizeException;
12 import javax.media.Manager;
13 import javax.media.NoPlayerException;
14 import javax.media.Player;
15 import javax.swing.JPanel;
16
17 public class MediaPanel extends JPanel
18 {
19 public MediaPanel( URL mediaURL )
20 {
21 setLayout( new BorderLayout() ); // use a BorderLayout
22
23 // Uso de componentes sencillos
24 Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
25
26 try
27 {
28 // crear un reproductor para la URl especifica
29 Player mediaPlayer = Manager.createRealizedPlayer( mediaURL );
30
31 // componentes de interfaz para el mostrar el video y controles
32 Component video = mediaPlayer.getVisualComponent();
33 Component controls = mediaPlayer.getControlPanelComponent();
34
35 if ( video != null )
36 // agragar el video al componente
37 add( video, BorderLayout.CENTER );
38
39 if ( controls != null )
40 // agregar controles
41 add( controls, BorderLayout.SOUTH );
42
43 mediaPlayer.start(); // reproducir el clip
44 }
45 catch ( NoPlayerException noPlayerException )
46 {
47 System.err.println( "No se encontro archivos de multimedia" );
48 }
49 catch ( CannotRealizeException cannotRealizeException ){
50 System.err.println( "No se puede reconocer el reproductor" );
51 }
52 catch ( IOException iOException ){
53 System.err.println( "Error al leer la fuente" );
54 }
55 }
56 }


view source
print?
01 package cliente;
02
03 /**
04 *
05 * @author manix
06 */
07 import java.net.MalformedURLException;
08 import java.net.URL;
09 import javax.swing.JFileChooser;
10 import javax.swing.JFrame;
11
12 public class MediaTest
13 {
14 // lanzar aplicacion
15 public static void main( String args[] )
16 {
17 JFileChooser fileChooser = new JFileChooser();
18
19 int result = fileChooser.showOpenDialog( null );
20
21 if ( result == JFileChooser.APPROVE_OPTION )
22 {
23 URL mediaURL = null;
24
25 try
26 {
27 // tomar la URL
28 mediaURL = fileChooser.getSelectedFile().toURL();
29 }
30 catch ( MalformedURLException malformedURLException )
31 {
32 System.err.println( "No se pudo crear la URL" );
33 }
34
35 if ( mediaURL != null )
36 {
37 JFrame mediaTest = new JFrame( "Media" );
38 mediaTest.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
39
40 MediaPanel mediaPanel = new MediaPanel( mediaURL );
41 mediaTest.add( mediaPanel );
42
43 mediaTest.setSize( 300, 300 );
44 mediaTest.setVisible( true );
45 }
46 }
47 }
48 }

Si estas interesados en las fuentes aca las dejo:

MediaTest.java MediaPanel.java

2 comentarios:

  1. use este mismo codigo y me da el siguiente error Unable to handle format: MPEG, 352x240, FrameRate=29.9, Length=126720, si alguien sabe como solucionar el problema por favor publiquelo aqui saludos de antemano

    ResponderEliminar