我从相机中遇到一些意外的行为。将VIDIOC_ENUM_FMT
用于V4L2_BUF_TYPE_VIDEO_CAPTURE
,我收到两种受支持的格式:MJPG和YUYV。但是,当我尝试(实际上WebRTC DeviceInfoLinux::FillCapabilities()
为我尝试)以VIDIOC_TRY_FMT
列出支持的格式时,它很高兴地报告了更多信息:
supported MJPG 640x480x30
supported MJPG 1280x720x15
supported I420 640x480x30
supported I420 1280x720x15
supported YUY2 160x120x30
supported YUY2 320x240x30
supported YUY2 640x480x30
supported YUY2 1280x720x15
supported UYVY 640x480x30
supported UYVY 1280x720x15
视频驱动程序是否模拟了其中某些格式?
更深入地研究VIDIOC_TRY_FMT
产生的答案表明了一个有趣的事实,它被DeviceInfoLinux完全忽略了:答案pixformat
并不总是等于查询pixformat
(而且,答案的宽度和高度都是不等于查询的宽度和高度)。实际上,只有MJPG和YUYV作为结果出现,所以恕我直言,这是WebRTC的错误,无法显示受支持的这些格式:它们是check that the sizes are equal,而不是pixformat
。