我有一个 Logitech C920 网络摄像头连接到运行 Debian Linux 的计算机。我想使用 mplayer (/dev/video0) 访问流,它开箱即用。但是,饱和度/亮度/其他设置不正确,因此我使用 guvcview 来设置正确的配置。
如果我保持 guvcview 的预览窗口打开,我将无法再连接到流,因为设备正忙(= 被 guvcview 使用)。 mplayer 返回错误。如果我关闭 guvcview,我的设置就会消失,并且流再次变为 640x480(而不是 1280x720)。使用 openCV 连接到流时出现同样的错误:
- 没有 guvcview:已连接,但设置错误
- guvcview 正在运行:设置良好,但无法从任何其他程序连接到 /dev/video(被 guvcview 阻止)
以下是在 guvcview 中设置配置时控制台输出的一些部分。我不知道是否有帮助:
V4L2_CORE: Unable to find parent usb device.V4L2_CORE: Unable to find
parent usb device.GUVCVIEW: version 2.0.4
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Inappropriate ioctl for device
V4L2_CORE: failed to subscribe events for control 0x00980001:
Inappropriate ioctl for device
V4L2_CORE: failed to subscribe events for control 0x0098f900:
Inappropriate ioctl for device
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for
4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for
4294967295, skipping unlock
答案1
在我寻求让 C920 在 Debian Linux 中工作时,我看到了这篇文章。我想出了一个解决方案并将其发布到此处的类似问题:https://unix.stackexchange.com/a/763075/594248 本质上,它需要保存配置文件、构建脚本来加载设备的配置文件,并从 Linux 自动启动指向该脚本。对于阅读本文的任何人,您还可以使用 udev 并为 v4l2 创建规则。