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
添加回答
舉報