JavaCV 小程序不在网络浏览器中显示视频,仅在桌面中显示
JavaCV applet does not shows video in web browser, only in desktop
我有一个通过 javaCV 与安全性连接的 Web 应用程序。当我在桌面上执行时,我的小程序运行完美。但是,当我将它集成到我的 JSF 页面中时,没有任何错误,但是 OpenCVFrameGrabber 的实例没有启动。为什么?
下面是我在网页中调用Applet的方式(所有依赖已经在jar中):
<applet code="com.br.spacnet.camera.CameraApplet" archive="CameraApplet.jar" width="1000" height="1000"/>
下面是小程序的源码(这里我使用本地摄像头连接进行测试):
try {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
jLabel1.setText(jLabel1.getText() + "; instanciou o grabber");
//grabber.setFormat("mjpeg");
grabber.start();
jLabel1.setText(jLabel1.getText() + "; iniciou o Grab");
opencv_core.IplImage frame = grabber.grab();
while (jPanel1.isVisible()) {
jLabel1.setText(jLabel1.getText() + "; entrou no laço");
jPanel1.getGraphics().drawImage(frame.getBufferedImage(), 0, 0, 320, 240, null);
jLabel1.setText(jLabel1.getText() + "; redesenhou painel");
}
grabber.stop();
jLabel1.setText(jLabel1.getText() + "; parou o grabber");
System.exit(0);
} catch (Exception ex) {
jLabel1.setText("Erro " + ex.getMessage());
}
谢谢安德鲁·汤普森!我启用了我的 Java 控制台,我可以看到 JRE 的几个安全块。因此,我将以下行添加到 java.policy,并且效果很好:
许可 java.util.PropertyPermission "org.bytedeco.javacpp.loadlibraries", "read";
许可 java.util.PropertyPermission "org.bytedeco.javacpp.platform", "read";
权限java.security.AllPermission;
权限java.lang.RuntimePermission"shutdownHooks";
我有一个通过 javaCV 与安全性连接的 Web 应用程序。当我在桌面上执行时,我的小程序运行完美。但是,当我将它集成到我的 JSF 页面中时,没有任何错误,但是 OpenCVFrameGrabber 的实例没有启动。为什么? 下面是我在网页中调用Applet的方式(所有依赖已经在jar中):
<applet code="com.br.spacnet.camera.CameraApplet" archive="CameraApplet.jar" width="1000" height="1000"/>
下面是小程序的源码(这里我使用本地摄像头连接进行测试):
try {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
jLabel1.setText(jLabel1.getText() + "; instanciou o grabber");
//grabber.setFormat("mjpeg");
grabber.start();
jLabel1.setText(jLabel1.getText() + "; iniciou o Grab");
opencv_core.IplImage frame = grabber.grab();
while (jPanel1.isVisible()) {
jLabel1.setText(jLabel1.getText() + "; entrou no laço");
jPanel1.getGraphics().drawImage(frame.getBufferedImage(), 0, 0, 320, 240, null);
jLabel1.setText(jLabel1.getText() + "; redesenhou painel");
}
grabber.stop();
jLabel1.setText(jLabel1.getText() + "; parou o grabber");
System.exit(0);
} catch (Exception ex) {
jLabel1.setText("Erro " + ex.getMessage());
}
谢谢安德鲁·汤普森!我启用了我的 Java 控制台,我可以看到 JRE 的几个安全块。因此,我将以下行添加到 java.policy,并且效果很好:
许可 java.util.PropertyPermission "org.bytedeco.javacpp.loadlibraries", "read";
许可 java.util.PropertyPermission "org.bytedeco.javacpp.platform", "read";
权限java.security.AllPermission;
权限java.lang.RuntimePermission"shutdownHooks";