我在java
ubuntu 11.10
进行了编码
笔记本电脑网络摄像头正常运行并找到它/dev/v4l/
。
Skype应用程序可以使用网络摄像头并运行。
我安装了JMF,但我无法添加环境变量。
Vector deviceList = CaptureDeviceManager.getDeviceList(new RGBFormat());
System.out.println(deviceList.toString());
if(!deviceList.isEmpty()){
System.out.println("1");
device = (CaptureDeviceInfo) deviceList.firstElement();
}
device = (CaptureDeviceInfo) deviceList.firstElement();
ml = device.getLocator();
我想在java中捕获一个图像。
我应该怎样解决问题或使用而不是使用JMF?
答案 0 :(得分:0)
在调用CaptureDeviceManager.getDeviceList()之前,必须先将可用设备加载到内存中。
安装JMF后,可以通过运行JMFRegistry手动进行操作。
或在扩展库FMJ(Java中的Free Media)的帮助下以编程方式进行操作。这是代码:
import java.lang.reflect.Field;
import java.util.Vector;
import javax.media.*;
import javax.media.format.RGBFormat;
import net.sf.fmj.media.cdp.GlobalCaptureDevicePlugger;
public class FMJSandbox {
static {
System.setProperty("java.library.path", "D:/fmj-sf/native/win32-x86/");
try {
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
sysPathsField.setAccessible(true);
sysPathsField.set(null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
GlobalCaptureDevicePlugger.addCaptureDevices();
Vector deviceInfo = CaptureDeviceManager.getDeviceList(new RGBFormat());
System.out.println(deviceInfo.size());
for (Object obj : deviceInfo ) {
System.out.println(obj);
}
}
}