58

我需要使用 Java 访问网络摄像头。这就是我想做的

  1. 访问网络摄像头

  2. 现在用户可以看到网络摄像头工作,因为他的脸在屏幕上可见(听说有一些库不显示网络摄像头的视频输出)

  3. 当用户单击保存按钮时,拍摄快照并保存

很长一段时间以来,我已经尝试了多种方法来做到这一点。

  1. JMF - 现在它已经死了
  2. FMJ - 现在它也死了
  3. VLCJ - 太多了,因为我没有创建音乐/视频播放器,它希望安装 VLC
  4. Xuggler - 太多和辛苦的工作
  5. JMyron - 没用
  6. JavaFX - 我认为它可以做到,但似乎不能

如果图书馆只做上面提到的事情,我什至很满意,因为这对我来说已经足够了。但我希望它也很简单。如果它不使用 DLL,那就太好了,因为它不是独立于平台的。真的很感激它是否可以检测相机,而无需像 VLCJ 中那样手动传递相机名称和其他信息(因为可能有数千个相机品牌,所以我无法在其中创建一千个元素的列表)。而且,我正在创建一个桌面应用程序,而不是 Web 应用程序。

如果你知道这样的图书馆,请告诉我。其他库(可能不适合我的所有要求,但适合基本要求)也欢迎。请帮忙

4

2 回答 2

81

我认为您正在寻找的项目是:https ://github.com/sarxos/webcam-capture (我是作者)

有一个与您描述的完全一样的示例 - 运行后,会出现一个窗口,在您按下“开始”按钮后,您可以从网络摄像头设备查看实时图像并在单击“快照”后将其保存到文件中(源代码可用,请注意角落的FPS计数器可以禁用):

快照

该项目是可移植的(WinXP、Win7、Win8、Linux、Mac、Raspberry Pi),不需要在 PC 上安装任何额外的软件。

API 非常好用且易于学习。示例如何捕获单个图像并将其保存为 PNG 文件:

Webcam webcam = Webcam.getDefault();
webcam.open();
ImageIO.write(webcam.getImage(), "PNG", new File("test.png"));
于 2013-11-15T20:48:26.913 回答