Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

15/1/10

Reproductor de videos en java: Los controles - 3ra parte

JAN29

TERCERA PARTE
CONTROLES DE REPRODUCCION DE LA API DE JAVA MEDIA FRAMEWORK


En esta tercera parte del video tutorial "Reproductor de videos en java" se introducen los controles de reproduccion PLAY, STOP, MUTE, asi como el control de volumen, todo esto haciendo uso de las herramientas graficas de netbeans.





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();
    }  
}



  1. La Interfaz
  2. Introduccion a la API JMF

9 comentarios:

ERICK dijo...

y como es un media player que reprodusca audio y video en un solo programa con lista

teromugen dijo...

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?

Mouse dijo...

el que busca encuentra :)

http://jc-mouse.blogspot.com/2010/03/respuesta-redimensionar-el-video-en-jmf.html

Anónimo dijo...

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?

Mouse dijo...

en linux ni idea hermano, se me frego la maquina donde tenia linux y hasta ahora no lo arreglo :)

Anónimo dijo...

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)

Anónimo dijo...

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.

mouse dijo...

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

:)

Anónimo dijo...

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.

Post recomendado