3 回答
TA贡献1856条经验 获得超11个赞
我希望通过 WSL2 使用网络摄像头,并在 WSL github 上发现了此问题:https://github.com/microsoft/WSL/issues/2195
不幸的是,目前看来这是不可能的......
希望会很快。
TA贡献1772条经验 获得超8个赞
自从今天这个问题被“否定”答案碰撞以来,这个答案很晚了。否定的答案也没有问题,因为我认为这种情况已经存在很长一段时间了。然而,我最近遇到了一个可能的解决方案。请注意,我自己还没有尝试过。
这确实假设相机是通过 USB 连接的,即使是内部连接。我不确定 Surface Book 是否也是这种情况,但很有可能。
由于大多数(全部?)PC Z-wave 接口都是通过 USB 加密狗实现的,因此关键障碍之一是如何利用 WSL 原生的 USB Z-wave 加密狗。我不会重复这些论坛的整个评论,而是总结一下(并调整“相机”的说明):
使用USB/IP for Windows将 Windows 下的 USB 摄像头共享为 USB/IP 设备。
uname -a
检查您的 WSL2 内核版本。Microsoft 在5.10.60.1中添加了对 USB/IP 的支持。如果您没有使用最新版本,请下载它并使用 将该内核设置为 WSL2 的内核
.wslconfig
。在某些时候,awsl --update
可能会自动将您转移到最新版本。sudo modprobe
您的相机所需的任何模块。usbip list -r $HOSTNAME.local
(希望)查看您的 Windows USB 设备列表及其关联的总线 ID。usbip attach -r $HOSTNAME.local -b <bus_id>
与公共汽车是你的相机。
完成此操作后,WSL/Linux 系统应该将您的相机视为本机 USB 设备,允许您从 Python 或任何其他语言进行访问,就像您在直接连接本机 USB 设备的本机 Linux 系统上一样。
TA贡献1799条经验 获得超8个赞
作为解决方法,您可以通过 HTTP 将摄像头视频作为 MJPEG 数据进行流式传输,并在 WSL 中接收它:
1.安装工具以在主机上流式传输网络摄像头(例如cam2web)
https://github.com/cvsandbox/cam2web
直接访问 Windows 版本:
http://www.cvsandbox.com/projects/cam2web/v1.1.0.html
2. WSL中接收流
对于 WSL/WSL1:
2.1 使用(例如)ffmpeg接收流
在 WSL 终端中输入: ffmpeg -i "http://127.0.0.1:8000/camera/mjpeg" -an output.mp4
对于 WSL2:
2.1 查找Windows主机的IP地址
不幸的是,无法使用本地主机地址,因此在 WSL2 终端中输入:
cat /etc/resolv.conf
作为名称服务器列出的 IP 地址是主机 IP 地址。
2.2 使用(例如)ffmpeg接收流
在 WSL2 终端中输入:
ffmpeg -i "http://<host ip address>:8000/camera/mjpeg"-an output.mp4
<host ip address>
与 2.1 中的主机 IP 地址进行交换。
为什么 WSL1 和 WSL2 之间存在差异?
只有 WSL1 可以直接访问主机的接口。对于 WSL2,主机就像同一网络中的另一台计算机。
测试:
WSL1/2:免费 20.04
主机:Windows家庭10.0.22000
添加回答
举报