要仅检测网络摄像头,您应该将参数传递给getDeviceList(Format)
方法(而不是 null):
Vector<Object> devices = CaptureDeviceManager.getDeviceList(new Format("RGB"));
Iterator<Object> di = devices.iterator();
while (di.hasNext()) {
CaptureDeviceInfo info = (CaptureDeviceInfo) di.next();
System.out.println(info);
}
这应该打印您所有的网络摄像头 - 内置和连接到 USB 的。我已经测试了这段代码,它对我有用。
如果这没有帮助(因为 JMF 已经过时并且某些部分代码可能已经过时),您可以尝试使用我的Webcam Capture项目的一部分。它在大多数平台上都能正常工作 - Windows x86 和 x64、Linux x86 和 x64、Mac OS 等。如果你决定尝试它,你将不得不写这样的东西来列出你所有的网络摄像头设备:
List<Webcam> webcams = Webcam.getDevices();
请注意,它也可以在 JMF 之上工作 - 要将默认内置驱动程序替换为 JMF 驱动程序,您必须将JMF 驱动程序JAR 添加到类路径中并在列出网络摄像头之前调用它:
Webcam.setDriver(new JmfDriver());
希望这有帮助。