每个相机都添加了第二个元数据设备,用于输出时间戳信息或详细的每帧元数据
您可以使用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 7
这里给出的答案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
Run Code Online (Sandbox Code Playgroud)
确实表明每个条目都有不同的功能,在我的罗技 USB 相机的情况下,只有 1 个具有视频捕获功能。所以这很可能是 Skype 中的一个错误,它出现在内核可能自己修复了一个错误之后,它不仅显示了具有“视频捕获”功能的条目。