使用 JMF 从网络摄像头拍摄快照



我想通过java从网络摄像头拍摄快照。我按照这个问题得出了这个例子。但是有一个空指针异常来自以下行 -

Buffer buf = frameGrabber.grabFrame();
Image img = (new BufferToImage((VideoFormat) buf.getFormat())
                .createImage(buf));
        buffImg = new BufferedImage(img.getWidth(this), img.getHeight(this),
                BufferedImage.TYPE_INT_RGB);

通过调试器,我观察到缓冲区实际上并不包含数据。所以我开始创作frameGrabber。

frameGrabber = (FrameGrabbingControl) player
                .getControl("javax.media.control.FrameGrabbingControl");

此代码有问题吗?因为 JMFStudio 在我的机器中工作正常,但代码无法访问它。谢谢。

我找到了解决方案。JMF 需要时间来初始化。在示例中,我们必须切换一行。把

new Timer(3000, this).start();

在尝试捕获下方。

整个块如下所示。

        try {
            player = Manager.createRealizedPlayer(cdi.getLocator());
            player.start();
        } catch (NoPlayerException e) {
            e.printStackTrace();
        } catch (CannotRealizeException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
            new Timer(3000, this).start();
        // Grab a frame from the capture device
        frameGrabber = (FrameGrabbingControl) player
                .getControl("javax.media.control.FrameGrabbingControl");

相关内容

  • 没有找到相关文章

最新更新