我有一台 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