为什么只有一个 USB 摄像头显示两个 Video4Linux 设备?

为什么只有一个 USB 摄像头显示两个 Video4Linux 设备?

我买了一个新的 USB 网络摄像头,将其插上。

ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 Nov 21 10:57 /dev/video0
crw-rw----+ 1 root video 81, 1 Nov 21 10:57 /dev/video1

为什么只有一个 USB 摄像头显示两个 Video4Linux 设备?

答案1

很快
您的应用程序应该使用/dev/video0,用于通常的东西,因为它/dev/video1为您提供了元数据图像,供算法使用,以提高图像质量。

更深入一点

查看该Device caps部分,因为这两个设备是不同的:

$ v4l2-ctl -D -d /dev/video0
...
Device Caps   : 0x04200001
    Video Capture
    Streaming
    Extended Pix Format

$ v4l2-ctl -D -d /dev/video1
...

Device Caps   : 0x04A00000
    Streaming
    Extended Pix Format

设备容量记录如下:

  * @device_caps:  capabilities accessed via this particular device (node)

这些的不同之处在于:

 #define V4L2_CAP_VIDEO_CAPTURE     0x00000001 # bit 1
 #define V4L2_CAP_META_CAPTURE      0x00800000 # bit 23

应用程序需要检查这一点,以便知道它将接收哪种类型的缓冲区,因为这应该由流式 ioctl 使用:VIDIOC_REQBUFS、VIDIOC_QBUF、VIDIOC_DQBUF

阅读更多关于此讨论的内容https://bugzilla.kernel.org/show_bug.cgi?id=199575

相关内容