プログラムを実行して、Web カメラでキャプチャされたビデオからフレームを取得しているときに、NullPointerException の問題に直面しています。キャプチャ デバイスの設定を変更しようとしましたが、次のようなオプションはありません
"vfw:Microsoft WDM Image Capture (Win32):0" は、jmf でデバイスを見つけることができません。.so は、マテリアルを参照するコードに直接記載されていますが、機能していません! これにはネットビーンを使用しており、ネットビーンズにも含まれるjmfのライブラリを使用しています。this.my コードの修正を手伝ってください:
package VideoSource;
/**
*
* @author sri
*/
import java.awt.Frame;
import javax.imageio.ImageIO;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.media.Buffer;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.CaptureDeviceInfo;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.media.*;
public class frames {
public static final String DEVICE ="vfw:Microsoft WDM Image Capture (Win32):0";
//protected Player player;
public static void main(String args[]) throws IOException, CannotRealizeException{
try{
CaptureDeviceInfo cdi = CaptureDeviceManager.getDevice(DEVICE);
Player player = Manager.createRealizedPlayer(cdi.getLocator());
player.start();
FrameGrabbingControl frameGrabber = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
//BufferedImage buf1 = frameGrabber.grabFrame();
// Convert frame to an buffered image so it can be processed and saved
Image img = (new BufferToImage((VideoFormat) buf.getFormat()).createImage(buf));
if(img!=null){
RenderedImage img1=(RenderedImage) img;
int i=0;
File outputfile = new File("d:/Project/frame"+(i++)+".jpg");
ImageIO.write(img1, "jpg", outputfile);
}
else
System.out.println("null from frame grabbing");
//return img;
}
catch(NoPlayerException n)
{
}
}
}
私は例外があります:
Exception in thread "main" java.lang.NullPointerException
at VideoSource.frames.main(frames.java:37)
Java Result: 1