有四个 /dev/video 条目但只有一个摄像头

有四个 /dev/video 条目但只有一个摄像头

我有一台 Dell XPS 9370,据说只有一个摄像头。但ls /dev/video*结果是/dev/video0 /dev/video1 /dev/video2 /dev/video3,所以有四个不同的摄像头设备。
这四个摄像头会浮现在应用程序中,例如 Skype,它列出了四个摄像头,但只有第一个 ( /dev/video0) 有效。

有人知道其他条目来自哪里吗?或者如何将它们隐藏在更高层级中?

答案1

这里给出的答案https://unix.stackexchange.com/questions/512759/multiple-dev-video-for-one-physical-device 是一个很好的例子。我在 Skype 上遇到了同样的问题,当我将内核从 4.4.x 升级到 5.1.x 时,这个问题就开始了,因此 uvcvideo 模块在某个地方产生了不同的输出。然而,有人指出

v4l2-ctl --device=/dev/video* --all

确实显示每个条目具有不同的功能,而对于我的 Logitech USB 摄像头,只有 1 个具有视频捕获功能。因此,这很可能是 Skype 中的一个错误,在内核可能自己修复了一个错误之后才出现,它不仅显示具有“视频捕获”功能的条目。

答案2

每个摄像机都有第二个元数据设备添加输出时间戳信息或者每帧详细的元数据

您可以使用v4l2-ctl获取有关设备的更多信息,并可以用来v4l2-ctl --list-formats --device /dev/videoX确定它是否包含视频流。

仅列出具有视频数据的设备使用:

for dev in `find /dev -iname 'video*' -printf "%f\n"`
do
  v4l2-ctl --list-formats --device /dev/$dev | \
    grep -qE '\[[0-9]\]' && \
    echo $dev `cat /sys/class/video4linux/$dev/name`
done

这可以与fzf选择相机并启动程序:

for dev in `find /dev -iname 'video*' -printf "%f\n"`;do; v4l2-ctl --list-formats --device /dev/$dev | grep -qE '\[[0-9]\]' && echo $dev `cat /sys/class/video4linux/$dev/name`;done | fzf | awk '{ printf("/dev/%s", $1) }' | xargs guvcview --device

答案3

要找出每个设备是什么,您可以运行此命令(并将 video0 中的数字更改为 video1,等等):

cat /sys/class/video4linux/video0/name

谷歌搜索Dell XPS 9370,结果显示这款机型除了普通的网络摄像头外,还配备了红外摄像头,红外摄像头可用于人脸识别身份验证。 https://wiki.archlinux.org/index.php/Dell_XPS_13_(9370)

如果您想要禁用红外摄像头等功能,则需要更多有关系统的信息,例如 dmesg。

答案4

单个摄像头的 /dev/video0 和 /dev/video1 之间的区别在于,一个用于“视频捕获”,另一个用于“元数据捕获”。

您可以在下面的‘设备容量’信息中进行检查:

以下命令显示 /dev/video0 的信息:

$ v4l2-ctl --info --device /dev/video0
Driver Info (not using libv4l2):
Driver name   : uvcvideo
Card type     : 720p HD Camera: 720p HD Camera
Bus info      : usb-0000:00:14.0-6
Driver version: 5.3.18
Capabilities  : 0x84A00001
    Video Capture
    Metadata Capture
    Streaming
    Extended Pix Format
    Device Capabilities
Device Caps   : 0x04200001
    Video Capture
    Streaming
    Extended Pix Format

对于 /dev/video1:

$ v4l2-ctl --info --device /dev/video1
Driver Info (not using libv4l2):
Driver name   : uvcvideo
Card type     : 720p HD Camera: 720p HD Camera
Bus info      : usb-0000:00:14.0-6
Driver version: 5.3.18
Capabilities  : 0x84A00001
    Video Capture
    Metadata Capture
    Streaming
    Extended Pix Format
    Device Capabilities
Device Caps   : 0x04A00000
    Metadata Capture
    Streaming
    Extended Pix Format

相关内容