我见过许多有关永久取消配置网络摄像头或任何网络摄像头以永久禁用它们的问题的答案。目前的情况并非如此。
是否可以使用 v4l2-ctl 命令或其他方式暂时禁用 v4l2 托管网络摄像头或将其关闭,使其不再映射到 /dev/video* 文件句柄和/或不再开机,而不是物理插入它出去?
我要求在软件开发场景中使用多个连接的 USB 摄像头,在这种情况下,能够在连接的摄像头组之间灵活切换是有帮助和高度启用的,所以像使用黑胶带之类的答案不会'与这里无关——我真正的意思是如何禁用(然后启用)连接的网络摄像头,而无需物理拔掉它们。如果 USB 网络摄像头设备或任何设备有这样的功能......
在使用 USB/UVC 相机的标准 v4l2 驱动程序框架的系统上。
答案1
根据 USB 端口的不同,您也许可以禁用(关闭)端口,这会导致相机断开连接。
您可以尝试使用uhubctl
端口断电和通电。这应该会导致设备重置并且内核应该重新检测它。
例如,在我的机器上,这将关闭/打开 USB 端口 1-2.2
# /usr/sbin/uhubctl -l 1-2 -p 2 -a off
Current status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
Port 2: 0101 power connect []
Sent power off request
New status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
Port 2: 0000 off
# uhubctl -l 1-2 -p 2 -a on
Current status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
Port 2: 0000 off
Sent power on request
New status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
Port 2: 0101 power connect []
并非所有 USB 端口都可以通过这种方式控制。
计算出 -l 和 -p 的正确值可能需要一些尝试和错误;查看dmesg
输出会有所帮助。