Ajuda para JMF(java media framework)!

Boa tarde, comunidade java.
Necessito da seguinte ajuda.
Estou criando uma aplicação stand-alone onde tenho a necessidade de capturar uma foto através de uma webcam.
Em minhas pesquisas, descobri que a API utilizada para este fim é a JMF.
Então galera, preciso de ajuda para entender como contruir um Jframe ou JDialog, que irá exibir a imagem de minha webcam e permitir que eu grave o arquivo em disco.
Acredito que esta não seja uma operação muito fácil, por isso necessito da contribuição de quem puder me ajudar…
Agradeço.

ATT,

Filipe Nonato

Os do próprio site não servem?
http://java.sun.com/javase/technologies/desktop/media/jmf/reference/codesamples/index.html

Não consegui fazê-los funcionarem…aff
preciso de ajuda

[quote=java.filipe]Não consegui fazê-los funcionarem…aff
preciso de ajuda[/quote]

Você já instalou a JMF ?

Uma vez tudo instalado, se vc quiser eu tenho um código que mostra a imagem da WebCam em um JPanel, só não tenho a parte de capturar e gravar a imagem em sí.

Sds

André
:?

Instalei já …velho…
Me mande este código…por favor!!!Tem como!!!
Depois daí eu vejo como funciona este framework…
Estou no aguardo…
Qualquer coisa pode me mandar no email…
herc17_nonato@hotmail.com

abraços

[quote=java.filipe]Instalei já …velho…
Me mande este código…por favor!!!Tem como!!!
Depois daí eu vejo como funciona este framework…
Estou no aguardo…
Qualquer coisa pode me mandar no email…
herc17_nonato@hotmail.com
abraços[/quote]

Segue o código:

[code]package captura;

/**
*

  • @author André
    */

import java.awt.;
import javax.media.
;
import javax.media.format.AudioFormat;
import javax.media.format.VideoFormat;
import javax.swing.;
import java.awt.event.
;

public class Main {

public static Player player = null;
public static CaptureDeviceInfo di = null;
public static MediaLocator ml = null;

//-------- Inicio
public static void main(String[] args) {

//CaptureDeviceInfo deviceInfo =
//CaptureDeviceManager.getDevice(“vfw:Microsoft WDM Image Capture (Win32):0”);

//------------
// Busca de informações dos dispositivos de captura registrados

java.util.Vector deviceListVector = CaptureDeviceManager.getDeviceList(null);
if (deviceListVector == null)
{
System.out.println("… error: media device list vector is null, program aborted");
System.exit(0);
}
if (deviceListVector.size() == 0)
{
System.out.println("… error: media device list vector size is 0, program aborted");
System.exit(0);
}

for (int x = 0; x < deviceListVector.size(); x++)
{
    // display device name
    CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) deviceListVector.elementAt(x);
    String deviceInfoText = deviceInfo.getName();
    System.out.println("device " + x + ": " + deviceInfoText);

    // display device formats
    Format deviceFormat[] = deviceInfo.getFormats();

for (int y = 0; y < deviceFormat.length; y++)
    {
            // serach for default video device
            if (deviceFormat[y] instanceof VideoFormat)
            {
                    System.out.println(">>> capture video device = " + deviceFormat[y].toString());
            }
            if (deviceFormat[y] instanceof AudioFormat)
            {
                    System.out.println(">>> capture audio device = " + deviceFormat[y].toString());
            }
   }
}
 	System.out.println("fim da listagem ");

// --------

// Inicialização dos componentes para viusalização

JFrame frame1 = new JFrame(“Primeiro teste de captura”); // JFrame de Teste
JButton botao_stop = new JButton(“Sair”);

//container onde serão adicionados todos componentes
Container container1 = frame1.getContentPane();
JPanel panel1 = new JPanel();

container1.add(botao_stop,BorderLayout.EAST);
botao_stop.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
player.close();
player.deallocate();
System.exit(0);
}
});

String str1 = “vfw:Microsoft WDM Image Capture (Win32):0”;

di = CaptureDeviceManager.getDevice(str1);
ml = di.getLocator();

try    
{   
  player = Manager.createRealizedPlayer(ml);
  System.out.println("Valor de time base: "+player.getTimeBase().getTime());
  player.start();

  Component comp, compcontrol;
  if ((comp = player.getVisualComponent()) != null)   
  {
    compcontrol = player.getControlPanelComponent();
    panel1.add(comp,BorderLayout.SOUTH);
    container1.add(compcontrol,BorderLayout.SOUTH);

  }   
}    
catch (Exception e)    
{   
  e.printStackTrace();   
}   

container1.add(panel1, BorderLayout.NORTH);

frame1.pack();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// fecha a aplicação
frame1.setVisible(true);

}

}

[/code]

Verifique no JMF Registry na Aba “Capture Device” se nos itens listados à esquerda aparece algo como “vfw”.

Se sim, clique em cima dele e verifique na listagem da direita se existe a linha "NAME=vfw:Microsoft WDM Image Capture (Win32):0"
Se vc encontrar, mas se a descrição não bater com a que está acima, você deverá substituir a linha do programa por esta que está listada.
Nela o JMF Registry mostra como a sua webcam é referenciada pela JMF.

Avisa se deu certo!

Sds 8)

André Menegussi