¿que necesitamos?
- Necesitamos el API multimedia de java llamado Java Media Framework, descargate la ultima version de su pagina, instalalo y reinicia la pc.
- Netbeans claro, sera nuestra herramienta para desarrollar la aplicacion de prueba.
- Un archivo de video con extension MPG, segun lei, la api de java JMF es capaz de reproducir varios tipos de formatos, en mi caso solo reprodujo MPG y MP3, las causas no lo se aun.
Codigo fuente
Clase videopanel.java
package videojava;
import java.awt.Component;
import java.awt.Dimension;
import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
/**
* @web http://jc-mouse.blogspot.com/
* @author mouse
*/
public class videopanel extends javax.swing.JPanel {
private Player mediaPlayer;
private Component controls;
public videopanel(URL mediaURL, Dimension d){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try
{
// crea un reproductor especificando la direccion del archivo
mediaPlayer = Manager.createRealizedPlayer( mediaURL );
// optiene los componentes del video
Component video2 = mediaPlayer.getVisualComponent();
video2.setSize(d.width, d.height);
video2.setVisible(true);
//optiene los componentes de control del reproductor
controls = mediaPlayer.getControlPanelComponent();
controls.setSize(d.width, 24);
if ( video2 != null )
add( video2 ); //agrega el componente del reproductor al panel
mediaPlayer.start(); // comienza la reproduccion
} // fin try
catch ( NoPlayerException noPlayerException )
{
System.err.println( "No se encontro medio disponible, osea no se reproduce archivo" );
} // fin catch
catch ( CannotRealizeException cannotRealizeException )
{
System.err.println( "no se pudo realizar el reproductor" );
} // fin catch
catch ( IOException iOException )
{
System.err.println( "Error de lectura del archivo" );
} // fin catch
}
public Component controles (){
return controls;
}
public Component controles(Dimension d){
controls.setSize(d);
return controls;
}
}
La interfaz
La interfaz del reproductor es sencilla, consta de un jpanel pantalla, lugar donde insertaremos el video, un jpanel control donde se localizara los controles del reproductor, jButton abrir y jTextfiel txturl
Las partes mas importantes del codigo son:
Este codigo debe añadirse en el objeto jButton "abrir" con el evento ActionPerformed, lo que hace es llamar a una ventana de dialogo para buscar el archivo y luego inicializar los objetos reproductor y controles
URL mediaURL = null;
videopanel mediaPanel;
private void abrirActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
if ( result == JFileChooser.APPROVE_OPTION ){
try {
//se asigna a mediaURL el archivo de video seleccionado
mediaURL = fileChooser.getSelectedFile().toURL();
txturl.setText("" + mediaURL);
//se obtiene el tamaño del panel de video
Dimension dp = new Dimension(pantalla.getWidth(), pantalla.getHeight());
//se crea el reproductor pasando como parametros
// el archivo y dimensiones
mediaPanel = new videopanel( mediaURL ,dp );
pantalla.add(mediaPanel);
pantalla.setVisible(true);
//se obtiene dimensiones del contenedor de los controles
// y se pasa como parametro para crear los controles de reproduccion
Dimension d = new Dimension(control.getWidth(),control.getHeight());
control.add(mediaPanel.controles(d));
control.setVisible(true);
}
catch (IOException ex) {
Logger.getLogger(reproductor.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
43 comentarios:
Gracias...lo pruebo y comento!!
Salu2!
Funciona de maravilla como aplicación...lastimosamente no sirve como applet...me tire un buen tiempo convirtiendolo...y al final el JFileChooser no se carga en el navegador por ende nunca reproduce.
pero creo que creando un metodo como el getURL y pasandole la dirección directamente sin tener que abrir el dialogo para escoger el archivo debe funcionar en el navegador.
Salu2!
Que tal buen día: Me pareció un excelente aporte, realice mi aplicación con las instrucciones indicadas, al momento de ejecutar la aplicación y cargar el archivo me marca un error, no entiendo porque ya que lo hice tal y como dicen las indicaciones, por lo tanto descargue el proyecto y ohhhh sorpresa sale el mismo error en el mismo lugar, les pido de su apoyo el error me sale en la línea de código de la clase videopanel la línea 27: video2.setSize(d.width, d.height);
Atte: SUSY
Sergio no hice la prueba en un applet pero yo creo que si puede funcionar como dices, haber si tengo tiempo lo intento
Susy dime cual es el error que te sale y con gusto te ayudo
Hola mouse:
El error que me genera es:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Gracias por la ayuda
Atte:
SUSY
gracias por toda la ayuda que tienes
Att.
Didi
excelente tutorial muchas gracias, ahora quisiera saber cómo hago para poder agregar varios videos al playlist y otra pregunta en la documentación del JMF he leido que soporta el formato .avi pero he tratado de reproducir videos con este formato y me sale error... qué puede estar pasando....
A mi me escupe el mismo error que a susi, eso si, lo estoy ejecutando en eclipse. gracias por adelñantado, si consigo hacerlo funcionar te lo paso dentro de un applet.
Gracias por el aporte, tengo una pregunta: solo funciona para mpg? he probado con otros formatos y no puedo reproducir el video. Gracias nuevamente.
el API dice que si se puede, habria que experimentar
Ke tal use estos pasos para armar un karaoke ... el problema que tengo es que el media player solo me permite ejecutarlo 10 veces ... en la 11 al parecer lo reproduce pero no se ve en el panel "pantalla" ... algo para poder reparar esto y pueda reproducir indefinidamente ?
como van mi inconveniente es el siguiente cuando compilo en netbeans el video con los controles salen bien pero en el momento de crear el .jar la ventana sale vacía y no he dado con el problema, por favor alguien tiene alguna idea?
gracias
hola ta muy bueno el tuto pero tengoun problema sale error en javax.import.media.Manager; y en import javax.media.player; bueno si me puedes echar la mano por que sale eso xf
REQUIEM: no entiendo eso de que solo te permite ejecutarlo 10 veces, yo me hice un reproductor de mp3 y lo uso casi todo el dia y ningun problema de limites
anonimo1: si lo compilas como esta en el ejemplo, no hay problemas, fijate en los repaint()
anonimo2: ese error se debe a que no encuentra las APIS, fijate que los hayas instalado correctamente
Le daré una revisada a tu código me gusta buscarle fallos a todo jeje no te ofendas si encuentro algunos y los corrija te dejo mi web http://jonathan-palomino.blogspot.com/ ahi tengo temas orientados a java
hola mouse ...
me podrías ayudar en instalar el jmf en fedora 14 ....
e podido en ubuntu y en windows pero en fedora no puedo....
A MI NO ME SALE ERROR!!! PORQUE YO SI SE DOND ESTA EL ERROR.!!! PERO LO MALO ESTA EN KE NO VISUALIZO NADA...!!!! SOLO ESCUCHO LO KE DICEN NOMAS...!!! PON EL METODO PARA VISUALIZARLO ..T_T
hola amigo tengo un problema medio raro. Utilicé tu código para cargar un vídeo.
Mi aplicación tiene un panel donde reproduce este vídeo y en otro panel muestra unos números de la bdd, pues bien cuando agregan un nuevo número a la bdd este cambia y cambia en el panel, el problema se da en el vídeo parece como que se descuadra, como que se va a la mitad y se hace más pequeño, porque es este problema???
Espero tu valiosa ayuda.
dejo un video para ser mas explicito.
http://www.youtube.com/watch?v=rIxdnEsIRE8&feature=player_embedded
ivlecamo84 aqui tienes la respuesta a tu error:
http://jc-mouse.blogspot.com/2010/03/respuesta-redimensionar-el-video-en-jmf.html
espero te sirve, sino avisas
hola!! sq tengo un problema con esto:
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
como lo puedo corregir?
gracias
Pues parece que no se manejar java
intente con el codigo ya no salen errores pero no me reconoce la camara pues ejecuta y no hace nada me podrias ayudar
Richard: cual es el error que te sale ?
mmmmmmmmm medio raro tu problema, talvez sea algo externo a java, prueba con otro sistema operativo,. otra camara , talvez ese sea el error
Excelente aporte..funcionó
totalmente y esta bastante claro..
mil gracias
buenas
como se puede hacer el auto loop
gracias
BIEN FUNCIONA , EN EL APPLET BASTA CON FIRMARLO Y A DISFRUTAR: =)
hola que al amigo..cheque tu aplicacion de video..e intente realizarlo...pero me arroja este error:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at videopanel.Videopanel.(Videopanel.java:37)
at videopanel.reproductor.abrirActionPerformed(reproductor.java:140..etc...
podrias decirme como solucionarlo...de antemano gracias...
gracias x compartir tus conocimientos :D
que tal?.....al realizar el proeycto del reproductor de video...arroja el siguiente error:
Unable to handle format: MPEG, 352x288, FrameRate=25.0, Length=152064
a que se debe?..como corregirlo?..basicamente...la imagen es la que no ve...pero si tiene sonido...espero puedas ayudarme..de antemano gracias..
si la imagen no se ve pero si el sonido, prueba con videos diferentes, el error te dice que no puede leer el formato de video que quieres reproducir
Como hago para que al abrir otro video lo reproduzca (no solo el audio) sino que si habia algo reproduciendose lo detenga y reproduzca el nuevo video que se selecciono, gracias
necesito que el video sea uno de internet. que la url sea de un video de internet como de youtube o algo asi. se puede hacer??
Agradeceria que subas el tuto del reproductor Mp3
Tengo un problema, cuando me genero un loop de videos llega al 9 o 10 y la pantalla se queda en negro y el componente de reproducción avanza, pero no muestra ninguna imagen ni sonido.
No estoy usando el JChose, sino que le mando las ubicaciones de los videos.
cualquier ayuda les agradecería mucho.
antes de reproducir un archivo, debes verificar que no exista otro video en reproudccion, si existiera, antes debes detenerlo y reproducir el siguiente
Estimado JC mouse, muchas gracias por tu aporte, tu siempre nos ayudas...
Quiero consultarte una cosa...
Talvez el disco duro o la mainboard influyen en la libreria Java Media Framework te comento mi problema:
Tengo un maquina Gygabyte Atom 1.6, Disco de segate 500gb, ram de 2gb y so Win 7 de 4bits.
Instalo la librería JMF en el pc y se instala correctamente, pero al ejecutar me da un erro de Exception, que no existe la libreria, etc... este error me da en la gygabyte porque en otra compu funciona la aplicación correctamente... solo en esta maquina me da este error, cambie de sistema operativo a win 7 32 bits, win xp y nada, este error es raro (No te pongo el error porque estoy formateando nuevamente la máquina), entonces investigando y probando en otras maquinas llegué a la conclusión que es la maindboar o el disco... En fin, tu crees que esto puede ser posible?
Este es el error que me da, a pesar que está correctamente instalado el JMF:
C:\Users\Jhona>java -jar "C:\SEAP_DISPLAY\BCE-SEAPDisplay.jar"
Conexi¾n a BDD (localhost) jdbc:mysql://localhost/seap ... Ok
Conexi¾n BDD con DISPLAY ABIERTA
Contados Timer: 1
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/med
ia/NoPlayerException
at display.display.reproducirvideo(display.java:844)
at display.display.(display.java:48)
at display.display$19.run(display.java:1521)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.media.NoPlayerException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 17 more
Exception in thread "Timer-0" java.lang.NullPointerException
at display.display$18.run(display.java:1189)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Buenas!! :D
Al compilar el código que esta para descargar me salen los siguientes errores y de verdad no se como corregirlo!
Si alguien me puede ayudar se los agradecería muchísimo.
Gracias
Unable to handle format: MPEG, 320x240, FrameRate=25.0, Length=115200
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at videojava.videopanel.(videopanel.java:27)
at videojava.reproductor.abrirActionPerformed(reproductor.java:140)
at videojava.reproductor.access$100(reproductor.java:12)
at videojava.reproductor$2.actionPerformed(reproductor.java:59)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6290)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6055)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4653)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:607)
at java.awt.EventQueue$1.run(EventQueue.java:605)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:621)
at java.awt.EventQueue$2.run(EventQueue.java:619)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
ya intentaste con otros formatos de videos
Amigo Mouse, Tengo un error no encuentra la clase Manager, en si el paquete Javax.media y he intentado conseguirlo pero no lo encuentro en ningun jdk utilizo neat beans 7.3
¿tienes el JMF instalado?
me funciona de maravilla pero kiero reproducir otros formatos de video se podra?? si es haci me gustaria q me diga el codigo para poder hacer esto....
Hola JC-MOUSE he intentado realizar la aplicación e incluso descargue la que tu realizaste y aún no logro que me funcione, descargué e instalé el JMF 2.1.1e y ya agregué los .jar de ese framework y ya he intentado con formatos mpg, avi y mov y ninguno me ha funcionado y en el error me sale lo siguiente:
Unable to handle format: MPEG, 640x360, FrameRate=25.0, Length=345600
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at videojava.videopanel.(videopanel.java:27)
espero puedas ayudarme, gracias
men quisiera saber como reproducir vídeos pero sin necesidad de buscarlos manual mente osea que envés de abrir esas sub ventanas solo fuera colocando la ubicacion del video por ejemplo algo asi " C:\Users\HP\Desktop\video.mpg" men porfa contesteme es que lo nesecito urgente
Publicar un comentario