在Java中访问网络摄像头的最佳方式

Pea*_*Gen 48 java webcam camera image

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

  1. 访问网络摄像头

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

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

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

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

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

如果你认识这样的图书馆,请好好告诉我.其他图书馆(可能不符合我的所有要求,但也符合基本要求)也欢迎.请帮忙

Bar*_*ryn 76

我认为您正在寻找的项目是: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"));
Run Code Online (Sandbox Code Playgroud)