如何在Java中捕获摄像头视频?

4

我想开发一个Java应用程序,从网络摄像头捕获视频并将其存储到特定位置。有人能提供可工作的代码吗?

为了开发应用程序,哪种类型(USB、IP等)的网络摄像头最好?

请帮忙指导如何继续进行。

3个回答

17
我建议使用webcam-capture项目(我是作者)。这里有一个从网络摄像头录制视频的示例 - 您可以在这里找到它:这里。该项目可以处理嵌入式相机设备以及连接到USB或IP相机的设备。它适用于大多数操作系统(Windows XP、Vista、7、8、Linux、Mac OS、Raspbian等),您无需安装任何其他软件即可运行它。选择权在您手中。
我不建议使用JMF,因为它已经完全过时了,而且您必须先在计算机上安装它,所以如果您考虑使您的应用程序具有可移植性,您也必须考虑到这一点。

不错的工作... - PDS
恭喜,这应该是正确的答案。 - reinaldoluckman
你有相应的教程吗? - Patrice Poliquin
Patrice,存储库中有数十个示例可供使用。此外,https://github.com/sarxos/webcam-capture/blob/master/webcam-capture/src/etc/resources/webcam-capture-handbook.doc 上提供了一份文档。 - Bartosz Firyn

2
我发现最好的方法是使用JMyron库和USB网络摄像头。不过,由于它使用本地代码,你需要调整一下dll文件... 如果你搜索一下,应该会有一个可用的示例(我不知道确切的位置),但我知道你需要将dll文件放在路径中。下载Processing库并找到dll文件和jar文件即可。
import JMyron.JMyron;

//initializer
int width=100;//insert your numbers here
int height=100;
JMyron jmyron = new JMyron();
jmyron.start(width,height);
//in a loop
jmyron.update();
int[] image = jmyron.image();

图像将是一个长度为width*height的int[]数组。它按行存储像素,因此前width个像素将是第一行,接下来的width个像素将是第二行,以此类推。

@i.psi它说输出在代码下方的底部。 - Lily Chung

-1

2
很遗憾,链接已失效。 - codenamezero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接