mi pare di capire che tu stia usando JMF, ti consiglio di spulciare il manuale perchè è un po difficile da usare soprattutto se non si sa dove mettere le mani...
La prima cosa che ti consiglio è di usare un processor al posto di un player perchè è più configurabile.
Poi con questo codice vedi tutti i dispositivi di cattura disponibili
e questo esempio ti mostra come creare il processor per acquisire il video dal dispositio di acquisizionecodice:import java.io.*; import java.util.Vector; import javax.media.*; import javax.media.format.*; public class Devicew { public static void main(String [] args) { Vector devices = CaptureDeviceManager.getDeviceList(null); System.out.println("Number of capture devices: " + devices.size()); for (int n = 0; n < devices.size(); n++) { CaptureDeviceInfo info = (CaptureDeviceInfo) devices.elementAt(n); System.out.println("we found something" + n); System.out.println(info.toString()); } } }
codice:import javax.media.*; import javax.media.util.*; import javax.media.format.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import javax.media.control.*; class testing extends JFrame implements ControllerListener,ActionListener { //Variables for gui public JButton play=new JButton("Play"); public JButton stop=new JButton("Stop"); public JPanel p1=new JPanel(); public JPanel p2=new JPanel(); Container c; //Variables for videocapturing boolean stateTransitionOK = true; Object waitSync = new Object(); Processor p; ///Variables required to store the movie DataSink sink; MediaLocator dest = new MediaLocator("save_video.wav"); ///methods public testing() { super("Video Capture Demo"); setupvideocapture(); setupgui(); } public void setupgui() { c.add(play); c.add(stop); addWindowListener(new WindowHandler()); stop.addActionListener(this); play.addActionListener(this); setSize(350,350); setVisible(true); show(); } public void actionPerformed(ActionEvent ae) { String str; str=ae.getActionCommand(); if(str=="Play") { try { //Before starting capturing store the movie to the HDD p.start(); sink = Manager.createDataSink(p.getDataOutput(), dest); sink.open(); sink.start(); } catch(Exception e) { } } else if(str=="Stop") { try { // sink.stop(); p.stop(); } catch(Exception e) { } } } public void setupvideocapture() { c=getContentPane(); c.setLayout(new FlowLayout()); try { p = Manager.createProcessor(new MediaLocator("vfw://0")); p.addControllerListener(this); p.configure(); waitForState(p.Configured); p.setContentDescriptor(null); p.prefetch(); waitForState(p.Prefetched); c.add(p.getVisualComponent()); ///Intializing the saving procedure } catch(Exception e) { System.out.println(e); } } public void controllerUpdate(ControllerEvent evt) { if (evt instanceof ConfigureCompleteEvent || evt instanceof RealizeCompleteEvent || evt instanceof PrefetchCompleteEvent) { synchronized (waitSync) { stateTransitionOK = true; waitSync.notifyAll(); } } else if (evt instanceof ResourceUnavailableEvent) { synchronized (waitSync) { System.out.println("ResourceUnavailable"); stateTransitionOK = false; waitSync.notifyAll(); } } else if (evt instanceof EndOfMediaEvent) { p.close(); System.exit(0); } } boolean waitForState(int state) { synchronized (waitSync) { try { while (p.getState() != state && stateTransitionOK) waitSync.wait(); } catch (Exception e) {} } return stateTransitionOK; } //Entry point public static void main(String args[]) { testing t=new testing(); } } class WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }

Rispondi quotando