1

我正在尝试创建一个运行客户端网络摄像头并使用按钮拍照的 Java Applet,但我只是找不到在小程序中运行网络摄像头的方法。有没有人知道实现这一目标的简单方法?

谢谢。

4

2 回答 2

2

第一个问题是Applet需要硬件许可。小程序有一个安全管理器,它从 Java 安装中读取策略文件。作为标准,没有从网络摄像头或文件系统等外部设备读取的权限。

对于您的问题,我认为,您应该将 Applet 用作 JFrame 或其他运行应用程序的加载器。

对于网络摄像头,您可以使用OpenCV,它也适用于 C++、Android 和 .NET。

希望它对你有帮助;)

于 2012-07-10T07:50:46.083 回答
0

我建议你看看这个例子。我想这正是您正在寻找的 - 如何使用网络摄像头功能创建 Applet 并将其嵌入 HTML 页面。jarsigner由于 JAR 是用工具签名的,因此访问硬件没有问题。当使用自签名证书对 JAR 进行签名时,Java 会询问用户是否要运行它。如果它是用证书颁发机构的证书签名的,它不会询问,只需运行它。

此处提供演示小程序(请耐心等待,网络摄像头需要几秒钟来初始化):http ://webcam-capture.sarxos.pl/examples/applet

您可以为此使用几个框架,例如:

  1. Webcam Capture是一个简单的 Java 库,允许您从嵌入式或 USB 网络摄像头读取图像,与从 IP / 网络摄像头相同。它还不成熟,但很小,可以在 Applet 中使用。我上面提供的示例取自它。您不必编写太多代码 - 几乎所有东西都准备好了。它适用于各种系统,例如 Windows、Linux 和 Mac OS。
  2. JavaCV是 OpenCV 的 Java 包装器,但我不推荐它,缺乏文档和 ~100MB OpenCV 安装包对于 Java Applet 来说太多了。您可能只需要真正需要的本机二进制文件,但仍然很难区分哪些是真正需要的。它定义了巨大的 API,在我看来这很难学习。
  3. LTI-CIVIL是一个小型框架,允许您从嵌入式或 USB 连接的网络摄像头读取图像。它非常易于使用,但不再维护(2007 年最后一次更新)。
  4. JMF是用于 Java 的 Oracle 媒体库。它使您可以访问网络摄像头和录制设备,但是它已经过时(2004 年的最后一次更新)并且不再被维护。它可能与 Applet 一起使用,但每个想要使用此 Applet 的人都必须在他/她的 PC 上安装 JMF。安装包很少 - 每个支持的系统(Windows、Linux、Solaris、Mac OS)一个。
  5. VLCj是 VLC 播放器原生二进制文件的 Java 包装器。它可以访问网络摄像头,但无法检测到它(至少在 Windows 上),因此您必须始终知道网络摄像头定位器地址(通常为 0)才能从 Java Applet 使用它。
  6. OpenIMAJ是一个非常强大的用于媒体分析的 Java 库。它非常快速且可移植,但不幸的是需要许多第 3 方依赖项,因此您的 Applet 必须全部下载它们(如果没有更多,则至少 20MB)。

因此,如果您决定使用选项 1。您应该很容易重新设计我提供的示例以满足您的需求。在这个例子中使用了 Maven,但是通过使用 Ant 甚至手动创建 JAR 也可以达到同样的效果。

于 2012-11-18T22:28:20.870 回答