我正在使用JMF操作我的网络摄像头。我的网络摄像头与JMF完美配合, 我在JMStudio中使用它,但是当我从我的java代码
进行调用时deviceListVector = CaptureDeviceManager.getDeviceList( null );
然而,检测到我的“音频捕获设备”,我的usb网络摄像头在
vfw://未检测到0。为了澄清,音频捕获设备和
USB cam是完全独立的设备。
如何从JMF正确检测usb网络摄像头及其格式?
提前致谢
答案 0 :(得分:1)
答案 1 :(得分:0)
要检测仅网络摄像头,您应该将参数传递给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 driver JAR添加到类路径中并调用此方法在列出网络摄像头之前:
Webcam.setDriver(new JmfDriver());
希望得到这个帮助。