首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMJ网络摄像头捕获示例

FMJ网络摄像头捕获示例
EN

Stack Overflow用户
提问于 2009-08-14 12:32:16
回答 3查看 16.2K关注 0票数 7

我已经寻找了一段时间,但我找不到一个简单的例子,如何用FMJ捕获网络摄像头流。有没有可以帮助我的教程或例子?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-23 15:47:38

我使用FMJ已经有一段时间了,我也没有找到很多示例。我要做的是探索FmjStudio类,它集成了网络摄像头功能,并且非常简单。

对于bob:

你要的是FMJ。FMJ使用civil的DataSource实现来将其与JMF一起使用。我建议你去http://fmj-sf.net/下载最新的源代码并探索FmjStudio,因为它使用civil来捕获。

对于theDude:

你是对的,你也可以使用JMF,但你为JMF使用的相同代码很可能会与FMJ一起工作(可能会有一些耦合的变化),性能会更好,特别是如果你想要与你的软件一起工作的各种不同的网络摄像头。

票数 3
EN

Stack Overflow用户

发布于 2009-08-14 13:44:09

我知道这不是您想要听到的,但是我已经使用JMF来完成这个任务,并且它工作得非常好。网上有足够的例子可以让一个简单的网络摄像头捕捉应用程序很容易地运行。如果你感兴趣,我会发布更多。

票数 1
EN

Stack Overflow用户

发布于 2019-10-24 08:06:59

下面的代码将帮助您入门。

代码语言:javascript
复制
GlobalCaptureDevicePlugger.addCaptureDevices(); 
    Vector<CaptureDeviceInfo> audioCapDevList = CaptureDeviceManager.getDeviceList(null);
    if (audioCapDevList.size() != 0) {
        for (int i = 0; i < audioCapDevList.size(); i++) {
            audioCapDevInfo = audioCapDevList.elementAt(i);
            Format[] videoFormats = audioCapDevInfo.getFormats();
            System.out.println(audioCapDevInfo);
            if (audioCapDevInfo.getName().startsWith("vfw:")) { // assume the name of the webcam starts with vfw:
                for (int j = 0; j < videoFormats.length; j++) {
                    if (videoFormats[j] instanceof VideoFormat) {
                        currentFormat = (VideoFormat) videoFormats[i];
                        break;
                    }
                }
                System.out.println(currentFormat);
                if (currentFormat == null) {
                    System.err.println("Search for VideoFormat failed");
                    System.exit(-1);
                }
                audioCapDevLoc = audioCapDevInfo.getLocator();
            }

        }
    }

请确保本机库(civil.dll和jdshow.dll)已加载到JVM中。否则,您将得到一个java.lang.UnsatisfiedLinkError。下面的代码可能会帮你完成这项工作。

代码语言:javascript
复制
    System.setProperty("java.library.path", "D:/fmj-sf/native/win32-x86/");
    Field fieldSysPath;
    try {
        fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
        fieldSysPath.setAccessible(true);
        fieldSysPath.set(null, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1277604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档