我的网络摄像头运行良好,直到我运行了一段简单的 Python 代码来拍照。我使用 root 权限运行了它sudo python myapp.py
。程序崩溃了。然后我运行了sudo killall -9 python
。
从那时起,我失去了我的网络摄像头。如果我运行我的程序,我会得到这个错误:VIDEOIO ERROR: V4L: can't find camera device
。Cheese 也找不到设备。
我谷歌了一下我的问题,发现有些页面说我应该重新启用 uvcvideo 模块。我已经这样做了,sudo modprobe -r uvcvideo && sudo modprobe uvcvideo
但问题并没有解决。
这是我的一些命令的结果:
$ lsmod | grep uvc
uvcvideo 86016 0
videobuf2_vmalloc 16384 1 uvcvideo
videobuf2_v4l2 24576 1 uvcvideo
videobuf2_core 40960 2 videobuf2_v4l2,uvcvideo
videodev 184320 3
videobuf2_core,videobuf2_v4l2,uvcvideo
media 40960 2 videodev,uvcvideo
$ sudo v4l2-ctl --list-devices
Failed to open /dev/video0: No such file or directory
我还应该注意到,如果我重新启动计算机,则不会得到任何结果,lsmod | grep uvc
直到再次运行sudo modprobe uvcvideo
为止。
我该如何解决这个问题?
答案1
就我的情况而言,我发现有一个名为的文件uvcvideo-blacklist.conf
。/etc/modprobe.d
它将阻止uvcvideo
模块在启动时自动加载。注释掉此文件中唯一的行“blacklist uvcvideo”将使 uvcvideo 在启动时自动加载。
答案2
确保您没有运行带有 USB 设备的虚拟机。如果是那样的话,您会看到 /dev/bus/usb 设备,但没有 /dev/video 设备。