程序运行都没问题,包也调用正确,但是执行到 device = CaptureDeviceManager.getDevice(str2);
就出错了
str2 的值是 str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
驱动也没写错,怎么不能在jar中运行啊,好郁闷...谁知道帮我解决一下, 谢谢了
就出错了
str2 的值是 str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
驱动也没写错,怎么不能在jar中运行啊,好郁闷...谁知道帮我解决一下, 谢谢了
把错误贴出来
最好把getDevice这个方法也贴出来
import javax.media.format.VideoFormat;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Image;
import javax.media.Player;
import javax.media.CaptureDeviceManager;
import com.sun.image.codec.jpeg.JPEGCodec;
import java.net.Socket;
import javax.media.CaptureDeviceInfo;
import javax.media.MediaLocator;
import java.io.IOException;
import javax.media.control.FrameGrabbingControl;
import javax.media.Manager;
import javax.media.util.BufferToImage;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import java.awt.image.BufferedImage;
import pigeon.encode.encode;
import pigeon.MainClass;
import java.io.File;public class VideoControl extends Thread { private Player player = null;
private CaptureDeviceInfo device = null;
private MediaLocator locator = null;
private Buffer buffer = null;
private BufferToImage b2i = null;
private Image image = null;
public JPEGImageEncoder encoder;
//String str1 = "vfw:Logitech USB Video Camera:0";
private String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
private ZipOutputStream os;
boolean stop = false;
private Socket socket;
private String ip;
public VideoControl(String ip,Socket socket) {
this.ip=ip;
this.socket=socket;
getdevice();
}
private void getdevice()
{ device = CaptureDeviceManager.getDevice(str2); //得到设备
locator = device.getLocator();
try {
player = Manager.createRealizedPlayer(locator);
player.start();
} catch (Exception e) {
}
}
}其实应该是正确的代码,在jbluider中还可以运行的,在打包成jar后,运行还是可以,就是打不开摄像头
以上代码我试了,在Eclipse下确实在加载驱动的时候报错,但是直接用BOS命令行来运行是可以的,
如果你用的是JDK6.0,那么会有几个警告,如果是JDK5.0,那么什么警告也没有