La clase paneldevideo.java modificada:
import java.awt.Component;
import java.awt.Dimension;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
//la clase se extiende de un Jpanel para heredar sus atributos
public class paneldevideo extends javax.swing.JPanel{
private Player mediaPlayer;
private Component video;
//como datos de entrada tenemos
//URL la url del archivo a reproducir
//Las dimensiones del contenedor que tendra el reproductor
public paneldevideo(URL url, Dimension d){
try {
// se forzara el uso de componentes de render ligero
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
mediaPlayer = Manager.createRealizedPlayer(url);
//ahora se declara un Component adecuado para el uso en una GUI
video = mediaPlayer.getVisualComponent();
// añadimos al componente las dimensiones del contenedor
video.setSize(d);
add(video);
//control de excepciones
} catch (IOException ex) {
Logger.getLogger(paneldevideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoPlayerException ex) {
Logger.getLogger(paneldevideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (CannotRealizeException ex) {
Logger.getLogger(paneldevideo.class.getName()).log(Level.SEVERE, null, ex);
}
}
//volumen
public float getvolumen(){
return mediaPlayer.getGainControl().getLevel();
}
//coloca un valor float correspondiente al volumen
public void setvolumen(float volumen){
mediaPlayer.getGainControl().setLevel(volumen);
}
//control de MUTE
public void MUTE(){
if(mediaPlayer.getGainControl().getMute())
{
mediaPlayer.getGainControl().setMute(false);
}
else
{
mediaPlayer.getGainControl().setMute(true);
}
}
//controlde PLAY y STOP
public void STOP(){
mediaPlayer.stop();
video.hide();
}
public void PLAY(){
mediaPlayer.start();
video.show();
}
}
10 comentarios:
y como es un media player que reprodusca audio y video en un solo programa con lista
Sabes que cuando cambio el tamaño durante la reproduccion el video se pierde (el sonido se escucha pero la imagen no se ve), ¿como podria arreglar eso?
el que busca encuentra :)
http://jc-mouse.blogspot.com/2010/03/respuesta-redimensionar-el-video-en-jmf.html
Hola,
Primero de todo felicitarte por el blog. Estos posts sobre JMF me están ayudando muchísimo.
El problema que tengo es que si ejecuto el reproductor en linux no funciona el control del volumen ni el mute. ¿Alguien sabe como se puede solucionar esto?
en linux ni idea hermano, se me frego la maquina donde tenia linux y hasta ahora no lo arreglo :)
Hola brother te felicito por el blog q es too un exito..queria hacerte una consulta loq pasa sq m descargue dela pagina de sun el jmf pero en la q esta en zip y ahi tiene 4 archivos jar, las cuales las pongo en mi proyecto de reproductor de video pero al compilar me salen errores:S..
Unable to handle format: MPEG, 320x240, FrameRate=25.0, Length=115200
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at reproductorjava.paneldevideo.(paneldevideo.java:35)
at reproductorjava.reproductor.jButton2ActionPerformed(reproductor.java:246)
at reproductorjava.reproductor.access$400(reproductor.java:10)
at reproductorjava.reproductor$6.actionPerformed(reproductor.java:135)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6503)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6268)
at java.awt.Container.processEvent(Container.java:2213)
at java.awt.Component.dispatchEventImpl(Component.java:4859)
at java.awt.Container.dispatchEventImpl(Container.java:2271)
at java.awt.Component.dispatchEvent(Component.java:4685)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4816)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4476)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4406)
at java.awt.Container.dispatchEventImpl(Container.java:2257)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4685)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
funciona muy bien. Tengo un caso especial, ya que necesito reproducir el mismo video que dura 15 segundos cada 2 minutos, y veo que la memoria que consume cada vez q lo reproduce se incrementa de forma descomunal, inicia con 50MB y cuando llega a más de 800MB el programa colapsa, y adicional al video, la aplicacion hace consultas a BD access. Como puedo solucionar esto al compilarlo en un .jar???
Agradezco la colaboración.
Si es solo un video debes cargarlo en memoria una vez y utilization las veces que quieres, e ll consumo de memoria tambien se debe al formato del video.
Para alternar la reproduccion usa hilos y timer
:)
Hombre tengo un problema, no me reproduce ningún formato... :( me aparece este error
Unable to handle format: MPEG, 320x240, FrameRate=25.0, Length=115200
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
ME podrías colaborar por favorr??? :) Te lo agradezco jc Mouse.
Tengo este mismo error
Unable to handle format: MP42, 266x400, FrameRate=30.0, Length=319200 0 extra bytes
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at prueba.panelvideo.(panelvideo.java:38)
at prueba.video.jButton2ActionPerformed(video.java:200)
at prueba.video.access$000(video.java:18)
at prueba.video$2.actionPerformed(video.java:104)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Podrías ayudarme por favor !!! :( mi correo es johaferr182@gmail.com
Publicar un comentario