Spm ang. JMF
Jeg har "lånt" denne klasse. Når jeg kører den får jeg en NullPointerException fordi min string værdi til denne metodeCaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
Åbenbart ikke er korrekt.
Det jeg er interesseret i er den er korrekt i forhold til mit Logitech Sphere web-kamera?
package WebKamera;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.format.*;
import javax.media.util.*;
/**
*
* @author Danni
*/
public class FrameGrab {
/** Creates a new instance of FrameGrab */
public FrameGrab() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//opretter et device til at "capture" med
try{
CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
player.start();
// Wait a few seconds for camera to initialise (otherwise img==null)
Thread.sleep(2500);
// Grab a frame from the capture device
FrameGrabbingControl frameGrabber = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
// Convert frame to an buffered image so it can be processed and saved
Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
g.drawImage(img, null, null);
// Overlay curent time on image
g.setColor(Color.RED);
g.setFont(new Font("Verdana", Font.BOLD, 16));
g.drawString((new Date()).toString(), 10, 25);
// Save image to disk as PNG
ImageIO.write(buffImg, "png", new File("c:\\webcam.png"));
// Stop using webcam
player.close();
player.deallocate();
System.exit(0);
}
catch(IOException e){e.printStackTrace();}
catch(InterruptedException e){e.printStackTrace();}
catch(NoPlayerException e){e.printStackTrace();}
catch(CannotRealizeException e){e.printStackTrace();}
}
}
