/dev/video0 WSL 上支持摄像头吗?

/dev/video0 WSL 上支持摄像头吗?

有没有办法将摄像头传递到 Windows Subsystem for Linux?此功能将使我现在所做的一切都变得容易得多。我知道有一个关于 USB 支持的功能请求,但目前有解决方法吗?我可以在主机上设置摄像头流并在 Ubuntu 终端上访问“联网”流吗?

编辑:澄清

答案1

可惜,目前 WSL 不支持摄像头设备。如果您希望在未来版本中看到此功能,请在以下位置查找并点赞或提出问题:WSL UserVoice 页面

答案2

虽然我还没有尝试过,但最近的一些发展应该可以让你间接地实现这一点。

首先,来自微软的这个开发博客详细介绍了新的 WSL2 内核对 USB/IP 的支持,以及启用它所需的步骤。从高层次来看:

  • 根据 devblog,需要 Windows 11(尽管请参见下文了解在 Windows 10 上执行此操作的可能性)。
  • 使用 更新至 5.10.60.1 内核版本wsl --update
  • 安装最新版本的usbip-win
  • 安装 USB/IP 的用户空间工具以及 USB 设备的硬件数据库。
  • 将工具添加到sudoerssecure_path
  • 作为 Windows 管理员,使用usbipd
  • 通过以下方式检查设备是否已连接到 WSL:lsusb

还要注意的是,一些在 WSL 中运行 Home Assistant 的人在 Windows 11 之前就已经成功使用 USB/IP。请参阅这个答案以供我撰写,以及详细介绍此内容的 Home Assistant 帖子的链接。

答案3

这是我使用的一个解决方法:

我通过 HTTP 将 USB 和内置摄像头视频作为 MJPEG 数据传输,并在 WSL 中接收它。这适用于 WSL1 和 2。

我写了一个三步指南: https://gist.github.com/soerenkoh/a964caf0ca958c4e3a9cdac125615c2f

答案4

到目前为止,WSL 和 WSL2 仍然不支持此功能以及需要访问连接到 Windows 的 USB 设备的所有其他应用程序或开发用例。这是因为管理 WSL 的 Hyper-V 中缺少 USB 直通功能。

关注此github 问题了解可能的更新。

不过有一个解决方法,你可以参考这个文章它将逐步介绍如何实现这一点。基本思路是在 Windows 和 WSL 上设置一个流服务器。然后首先将原始视频输入流式传输到 WSL,在 WSL 中进行处理工作,最后将 WSL 的输出流式传输回 Windows。

在 USB 直通功能得到本机支持之前,这些额外的跳数是必要的。:)

相关内容