gpt4 book ai didi

java - CaptureDeviceManager.getDeviceList() 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:35 27 4
gpt4 key购买 nike

我在 ubuntu 11.10 上使用 java 编写代码

笔记本电脑网络摄像头运行正常并找到它 /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 代替?

最佳答案

在调用CaptureDeviceManager.getDeviceList()之前,必须先将可用的设备加载到内存中。

您可以在安装 JMF 后通过运行 JMFRegistry 手动执行此操作。

enter image description here

或者借助扩展库 FMJ(Java 中的自由媒体)以编程方式执行此操作。这是代码:

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);
}
}
}

关于java - CaptureDeviceManager.getDeviceList() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com