V4L2 设备的基本属性和功能支持情况

  • driver:驱动程序名称
  • card:设备卡名(通常是摄像头型号)
  • bus_info:总线信息(如 USB 位置)
  • version:驱动版本号
  • capabilities:设备整体能力标志(如是否支持视频捕获、流式 I/O 等)
  • device_caps:具体设备的能力标志(与 capabilities 类似,但更精确)
  • reserved:保留字段(通常为 0)
#include <sys/ioctl.h>
#include <linux/videodev2.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *dev = "/dev/video0";
int main(void)
{
    int fd;
    struct v4l2_capability cap;
    fd = open(dev, O_RDWR);
    if (fd < 0) {
        perror("open");
        return -1;
    }
    if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) {
        perror("ioctl");
        return -1;
    }
    printf("driver: %s\n", cap.driver);
    printf("card: %s\n", cap.card);
    printf("bus_info: %s\n", cap.bus_info);
    printf("version: %d\n", cap.version);
    printf("capabilities: %x\n", cap.capabilities);
    printf("device_caps: %x\n", cap.device_caps);
    printf("reserved: %x %x %x\n", cap.reserved[0], cap.reserved[1],cap.reserved[2]);
    close(fd);
    return 0;
}

返回

driver: uvcvideo
card: HikCamera: UVC Camera
bus_info: usb-0000:02:03.0-1
version: 331719
capabilities: 84a00001
device_caps: 4200001
reserved: 0 0 0