java - sarxos 的图书馆网络摄像头捕获不适用于覆盆子

标签 java linux raspberry-pi

我在 raspberry 上的 java 网络摄像头捕获库有问题。这是我的代码:

    System.out.println("start");
    List<Webcam> list = Webcam.getWebcams();

    System.out.println("checking " + list.size() + " Webcams");
    for(Webcam webcam : list) {
        //do sth
    }

在 Windows 上我有以下输出:

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

我试图找出库中有问题的代码,我发现它退出于:

executor.awaitTermination(timeout, tunit);

在 WebcamDiscoveryService.getWebcams() 中

参数是9223372036854775807和 毫秒

为什么它不起作用(“该项目是可移植的(WinXP、Win7、Win8、Linux、Mac、Raspberry Pi)并且不需要在 PC 上安装任何额外的软件。”)。

有没有其他库可以这么简单?

最佳答案

记录一下我在ticket中提供的解决方案在 Github 上的 Webcam Capture API 项目中创建,以防有人遇到同样的问题并首先尝试 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问题已解决。

关于java - sarxos 的图书馆网络摄像头捕获不适用于覆盆子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844531/

相关文章:

linux - Uniq 和计数

python - 树莓派串口通信-python写命令问题

java - 在这种情况下我可以避免重复自己吗(Java)

java - 从 Android 应用程序启动包含消息和收件人的 Telegram 应用程序

php - 在 public_html 文件夹中创建指向主目录的绝对链接

linux - 低功耗蓝牙 : Use BlueZ stack as a peripheral (with custom services and characteristics)

java - 有没有办法在这段代码中避免@SuppressWarnings?

java - 删除 Cassandra 中的查询

javascript - 如何使clearTimeout正常工作以取消(中断)setTimeout循环?

tcp - Pymodbus 无法连接 PLC Slave 和 Raspberry Pi Master