在Java中显示网络摄像头

时间:2011-07-25 20:03:59

标签: java webcam

我上周刚刚开始使用Java,所以我现在只是因为我需要学习很多东西而得到了基础知识(顺便说一句,如果有帮助我在Ubuntu 11.04上使用Eclipse)。但是我做了很多截屏,我在很多视频中显示我的网络摄像头。所以稍后我想创建一个只显示网络摄像头的简单应用程序。没别的了。

所以我现在问这个问题,这样我不仅会记住我的目标,而且当我觉得我已经准备好了,并且有信心继续努力时,我会知道该去哪里。

我不想要任何代码,但需要参考去哪里。我想只使用Java。虽然我的一位同事告诉我要调查FMJ和JMF。但是不知道这些是什么我认为它们是Java的附加组件,但是如果可能的话,我只想坚持使用Java。

此外,就像我说我还是Java的新手,我正在学习YouTube上的新闻教程(目前在http://www.youtube.com/watch?v=XqTg2buXS5o),所以如果你知道有任何其他资源来帮助像我这样的新Java程序员和其他人非常感谢。

6 个答案:

答案 0 :(得分:6)

我使用了lti-civil,这对于视频捕捉似乎非常有效。

我在Windows和Linux上使用它,我没有在Mac上测试它,但它说它也在那里工作。

它不需要预先安装,因为它是一个jar和一个dll / so,可以使用Java应用程序下载,也可以通过支持本机库的JNLP webstart运行。

没有100%纯Java库可以捕获视频,因此所有选项(包括JMF)都需要本机组件(.dll或.so)。

答案 1 :(得分:3)

JMF是一个使用Medias的Java库。

Java比编程语言大得多,不要害怕使用它的库添加功能。

查看一些示例:http://www.mutong.com/fischer/java/usbcam/http://www.java-forums.org/new-java/40115-capturing-video-webcam-jmf.html

答案 2 :(得分:3)

您可以使用Webcam Capture API项目中的即用型WebcamPanel Swing组件(我是作者)。该项目是可移植的,适用于Windows,Linux,Mac OS的32位和64位架构,以及ARM等设备。 Raspberry Pi(armel和armhf)。

下面的示例代码将在JFrame窗口内显示来自网络摄像头的图像(FPS速率可配置):

JPanel panel = new WebcamPanel(Webcam.getDefault());
JFrame window = new JFrame("Test webcam capture");
window.add(panel);
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Test webcam capture

JAR可在Maven Central中使用,但如果您不使用Maven,您还可以下载单独的ZIP,其中包含所有必需的依赖项(所有必需的第三方JAR)。

答案 3 :(得分:3)

使用Marvin Framework的实现下方。该框架为实时视频处理提供了一组plug-ins

package video.simpleVideoTest;
import javax.swing.JFrame;
import marvin.gui.MarvinImagePanel;
import marvin.image.MarvinImage;
import marvin.video.MarvinJavaCVAdapter;
import marvin.video.MarvinVideoInterface;

public class SimpleVideoTest extends JFrame implements Runnable{

    private MarvinVideoInterface    videoAdapter;
    private MarvinImage             image;
    private MarvinImagePanel        videoPanel;

    public SimpleVideoTest(){
        super("Simple Video Test");

        // Create the VideoAdapter and connect to the camera
        videoAdapter = new MarvinJavaCVAdapter();
        videoAdapter.connect(1);

        // Create VideoPanel
        videoPanel = new MarvinImagePanel();
        add(videoPanel);

        // Start the thread for requesting the video frames 
        new Thread(this).start();

        setSize(800,600);
        setVisible(true);
    }

    public static void main(String[] args) {
        SimpleVideoTest t = new SimpleVideoTest();
        t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void run() {
        while(true){
            // Request a video frame and set into the VideoPanel
            image = videoAdapter.getFrame();
            videoPanel.setImage(image);
        }
    }
}

答案 4 :(得分:0)

here

下载JMF

您可以从here

开始学习JMF框架

答案 5 :(得分:-1)

您可以使用java swings来使用它。

您可以在此博客上找到有关此内容的文章,geekscab.com 对不起,我不知道确切的网址,所以你必须搜索博客