我的覆盆子上的java网络摄像头捕获库有问题。这是我的代码:
@RequestMapping(value = "/admin/usersAndRoles", method = RequestMethod.GET, produces = "application/json")
@PreAuthorize("hasRole('WRITE_PRIVILEGE')")
public @ResponseBody String usersAndRoles(HttpServletRequest request) throws IOException
在Windows上,我有以下输出:
System.out.println("start");
List<Webcam> list = Webcam.getWebcams();
System.out.println("checking " + list.size() + " Webcams");
for(Webcam webcam : list) {
//do sth
}
在我的覆盆子上我才得到
start
[main] INFO com.github.sarxos.webcam.Webcam - WebcamDefaultDriver capture
driver will be used
checking 0 Webcams
我试图找出库中有问题的代码,我发现它退出:
start
[main] INFO com.github.sarxos.webcam.Webcam - WebcamDefaultDriver capture
driver will be used
WebcamDiscoveryService.getWebcams()中的
参数为9223372036854775807和 MILLISECONDS
为什么它不起作用(“该项目是可移植的(WinXP,Win7,Win8,Linux,Mac,Raspberry Pi),并且不需要在PC上安装任何其他软件。”)。
可能还有其他任何库吗?
答案 0 :(得分:1)
仅记录我在Github上的Webcam Capture API项目中创建的ticket中提供的解决方案,以防任何人遇到相同问题并首先尝试stackoverflow。
问题在于默认驱动程序在Raspberry Pi上并不总是运行良好(只有一个BridJ版本支持Raspberry Pi但它尚未发布到Maven Central)。要解决此问题,可以使用不同的驱动程序替换依赖于BridJ的默认驱动程序,例如webcam-capture-driver-v4l4j在Raspberry Pi上最稳定,或者将BridJ 0.6.3-SNAPSHOT添加到类路径而不是0.6.2。
对于webcam-capture-driver-v4l4j,您必须在类路径中包含的JAR是:
对于网络摄像头捕获0.3.10:
或网络摄像头捕获0.3.11:
添加这些内容后,可以从类路径中删除BridJ JAR,因为不再需要。
代码:
static {
Webcam.setDriver(new V4l4jDriver()); // this is important
}
public static void main(String[] args) {
JFrame frame = new JFrame("V4L4J Webcam Capture Driver Demo");
frame.add(new WebcamPanel(Webcam.getDefault()));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
有关详细信息,请重新定位对问题已解决的ticket感兴趣的所有人。