ARCmop Java Programacion Solaris Linux

Java-linux-programacion

FMJ Alternativa a JMF, Freedom For Media in Java

Posted by Cmop en enero 23, 2010

FMJ

FMJ

Bueno después de probar la JMF en Ubuntu x64 y JVM para x64, y enterarme que JMF no corre sobre una JVM en 64 bits, a raíz de ello me puse a buscar alguna alternativa, y vaya que la encontré.

¿Qué es FMJ?, FMJ es un proyecto de código abierto con el objetivo de proporcionar una alternativa a Java Media Framework (JMF), sin dejar de ser compatible con el API-JMF. El objetivo es lograr una sencilla API/Framework, que puede utilizarse para la captura, reproducción, proceso, y transmisión a través de múltiples plataformas.

Freedom For Media in Java — Libertad para la Multimedia en Java.

Aun no he tenido oportunidad de probarlo, pero lo haré próximamente, les dejo el enlace de FMJ

6 comentarios to “FMJ Alternativa a JMF, Freedom For Media in Java”

  1. Manu said

    buenaaaa mennn gran aporte

  2. erick said

    hola mi pregunta es una ves que ya muestro mi camara en un frame como hago para que la imagen que se muestra en el frame sea mas pequena, y pueda hacer mi aplet de un tamano 200 x 100 y que todos sus componentes se acoplen a este tamano aca les dejo mi codigo:

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    package com.webcam;

    import java.awt.BorderLayout;
    import java.awt.Color;
    import javax.media.Player;
    import javax.media.CaptureDeviceInfo;
    import javax.media.MediaLocator;
    import javax.media.CaptureDeviceManager;
    import javax.media.Manager;
    import javax.media.format.VideoFormat;
    import java.awt.Component;
    import java.awt.Image;
    import java.awt.image.RenderedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.Vector;
    import javax.imageio.ImageIO;
    import javax.media.Buffer;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.util.BufferToImage;
    import javax.swing.ImageIcon;
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    /**
    *
    * @author Administrator
    */
    public class WebcamPlayer extends JApplet
    {
    private int cont=0;
    private CaptureDeviceInfo device;
    private MediaLocator ml;
    private Player player;
    private Component videoScreen;
    private JButton capture;
    private JButton upload;
    private JButton replay;
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    Image img;
    WebcamPlayer wcp;

    @SuppressWarnings(“static-access”)
    public void init()
    {
    wcp = this;
    try
    {

    JPanel p = new JPanel();
    Vector deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.RGB) );

    capture= new JButton(“Capturar”);
    capture.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    CapturaFoto();
    }
    });

    upload = new JButton(“Aceptar”);
    upload.setEnabled(false);
    upload.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    //here code for upload
    changeStateButton(false);
    Calendar calendario = new GregorianCalendar();
    int hour =calendario.get(Calendar.HOUR_OF_DAY);
    int minutes = calendario.get(Calendar.MINUTE);
    int seconds = calendario.get(Calendar.SECOND);

    String imagen =”c:/temp/photo”+hour+””+minutes+””+seconds+”.jpeg”;

    File imagenArch = new File(imagen);
    String formato = “JPEG”;
    try{
    ImageIO.write((RenderedImage) img,formato,imagenArch);
    JOptionPane.showMessageDialog(wcp, “SE GUARDO EXITOSAMENTE”);
    }catch (IOException ioe){System.out.println(“Error al guardar la imagen”);}
    img=null;
    p3.setVisible(false);
    p2.setVisible(true);
    }
    });

    replay= new JButton(“Repetir”);
    replay.setEnabled(false);
    replay.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    //code for Replay
    changeStateButton(false);
    p3.setVisible(false);
    p2.setVisible(true);
    }
    });

    device = (CaptureDeviceInfo) deviceList.firstElement();

    System.out.println(“Chosen device: “+device.getName());

    ml = device.getLocator();

    player = Manager.createRealizedPlayer(ml);

    player.start();

    videoScreen = player.getVisualComponent();

    p.add(capture,JPanel.CENTER_ALIGNMENT);
    p.add(upload,JPanel.CENTER_ALIGNMENT);
    p.add(replay,JPanel.CENTER_ALIGNMENT);

    p2.setSize(300, 300);
    p2.add(videoScreen,JPanel.CENTER_ALIGNMENT);

    this.setSize(390, 300);
    add(p, new BorderLayout().SOUTH);
    add(p2);

    }
    catch(Exception e)
    {

    }
    }

    public void CapturaFoto()
    {

    img=null;
    JLabel imgLabel;
    ImageIcon imageIcon;

    cont+=1;
    FrameGrabbingControl fgc = (FrameGrabbingControl)
    player.getControl(“javax.media.control.FrameGrabbingControl”);
    Buffer buf = fgc.grabFrame();
    // creamos la imagen awt
    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
    img = btoi.createImage(buf);

    imageIcon=new ImageIcon(img);
    imgLabel= new JLabel(imageIcon);
    p3.removeAll();
    p3.add(imgLabel);
    p2.setVisible(false);
    p3.setBackground(Color.BLACK);
    p3.setVisible(true);
    this.add(p3);

    changeStateButton(true);

    }

    private void changeStateButton(boolean b) {
    capture.setEnabled(!b);
    replay.setEnabled(b);
    upload.setEnabled(b);
    }
    }

  3. alex said

    Hola estoy probando FMJ ya que no tuve exito con JMF en ubuntu (me reconoce las camaras web pero cuando comienzo a grabar el video la pantalla se ve en negro o de colores, dependiendo del formato que escoja (yuv, RGB)) y en windows solo me reconoce la webcam integrada de mi laptop (por cierto cmop tu programa corre muy bien, gracias por ese aporte).. bueno lo cierto es que necesito hacer el reconocimiento de camara web que no sea la integrada de mi laptop,puede ser en windows o en ubuntu.. he probado con JMF y detecta las camaras pero no graba (la pantalla se ve negra) y con FMJ no he logrado reconocer ninguna webcam, Alguno de ustedes a trabajado con FMJ?, o se las a presentado el problema de la pantalla negra con el JMF?… Gracias de antemano.

    PD: utilizo windows xp y ubuntu 9.10

    • Cmop said

      Hola amigo, el programa que envié reconoce solo una cámara debido a que en el codigo esta para que utilize la primera cámara vfw:0 es por ello que siempre te coje la de la Laptop, en cierto modo lo hice pensando de esa manera, para la laptop o para quienes solo tienen una cámara, pero así como tu muchos dicen que quieren probar con 2 o 3 cámaras, en la misma PC, el problema en el codigo radica basicamente al momento de llamar al driver pues llamo a vfw:0.
      Una solucion sería, en vez de mostrar los dispositivos de video que se han encontrado en el JTextField, creemos un arreglo de JRadioButtons los cuales permitan seleccionar el driver, en el evento del click se hace la llamada al driver, pero dependiendo del JRadioButton seleccionado.
      La línea de invocacion es:

      misDispositivos.MuestraWebCam(jPWebCam,"vfw:Microsoft WDM Image Capture (Win32):0","yuv");

      Esta es la que habría que modificar, voy a ver si me doy un tiempo a modificarlo y subirlo.
      Saludos y si lo haces antes que yo me gustaría que me lo dijeras.

  4. missjewel said

    Hola tengo win x64 y el codigo de jmf me corre pero no sale la camara,luego leí que jmf no es compatible. No tienen un ejemplo en FMJ ??? Necesito desarrollar una aplicacion en x64 en win para transmitir video.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: