6

我正在使用 JMF 操作我的网络摄像头。我的 USB 网络摄像头与 JMF 完美配合,但是我在 JMStudio 中使用它,当我从我的 java 代码进行此调用时

deviceListVector = CaptureDeviceManager.getDeviceList( null );

检测到我的“音频捕获设备”,但是未检测到我位于 vfw://0 的 USB 网络摄像头。澄清一下,音频捕获设备和 USB cam 是完全独立的设备。如何从 JMF 正确检测 USB 网络摄像头及其格式?

提前致谢

4

2 回答 2

1

您也可以尝试LTI-CivilXuggler

于 2009-12-11T22:37:05.147 回答
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 驱动程序JAR 添加到类路径中并在列出网络摄像头之前调用它:

Webcam.setDriver(new JmfDriver());

希望这有帮助。

于 2012-11-14T20:44:05.887 回答