Gravação Video JMF

1 resposta
landantas

Olá Galerinha!!
Boas!

Cá estou eu mais uma vez para incomodá-los.

Estou desenvolvendo um sistema para captura de uma placa de captura video com o JMF.

A captura de imagens estou conseguindo fazer normalmente, fazer a preview, porém, o problema está na captura de video que não achei na internet o codigo. Eu achei um porém está dando erros.

Alguem aii tem um código de exemplo?

Desde já grato pela atenção.

Fiquem com DEUS:!:

1 Resposta

landantas
Galera achei um codigo akii na internet que captura o video segue o codigo:
public void Iniciar_Video(){
        device = CaptureDeviceManager.getDevice("vfw://0");
        MediaLocator medloc = new MediaLocator("vfw://0");
        DataSource DS;
        try {
            DS = Manager.createDataSource(medloc);
            DataSource DSmixado = null;
            DataSource DSarray[] = new DataSource[1];
            DSarray[0] = DS;
            DSmixado = javax.media.Manager.createMergingDataSource(DSarray);
            FileTypeDescriptor saidaTipo = new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO);
            Format formatoSaida[] = new Format[1];
            formatoSaida[0] = new VideoFormat(VideoFormat.YUV);
            ProcessorModel modeloProcessor = new ProcessorModel(DSmixado, formatoSaida, saidaTipo);
            processador = Manager.createRealizedProcessor(modeloProcessor);
            
            //Inicio da Gravacao
            DataSource source = processador.getDataOutput();
            MediaLocator destino_video = new MediaLocator("C:\\capturado.avi");
            dataSink = Manager.createDataSink(source, destino_video);
            
            dataSinkListener = new TheDataSinkListener();
            
            dataSink.addDataSinkListener(dataSinkListener);
            dataSink.open();
            
            dataSink.start();
            
            processador.start();
        } catch (IOException ex) {
            Logger.getLogger(Captura.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NoDataSourceException ex) {
            Logger.getLogger(Captura.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception e){
            System.err.println("Erro:"+e.getMessage());
        }
    }

    public void Parar_Video(){
        processador.stop();
        processador.close();
        
        dataSinkListener.waitEndOfStream(1);
        dataSink.close();
    }
porem esta dando os seguintes erros:
Erro:Cannot find a DataSink for: com.sun.media.multiplexer.BasicMux$BasicMuxDataSource@388993
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Telas.Captura.Parar_Video(Captura.java:223)
	at Telas.Captura.jPanel1MouseReleased(Captura.java:518)
	at Telas.Captura.access$500(Captura.java:22)
	at Telas.Captura$4.mouseReleased(Captura.java:297)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	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)
O segundo erro indica para esta linha de codigo:
dataSinkListener.waitEndOfStream(1);

Alguem tem a solução??

Desde já grato pela atenção.
Fiquem com DEUS:!:

Criado 1 de janeiro de 2012
Ultima resposta 2 de jan. de 2012
Respostas 1
Participantes 1