概述

V4L2(Video for Linux 2)是 Linux 内核中视频设备驱动的标准接口规范,广泛用于摄像头、电视调谐器、视频采集卡等设备。

使用 V4L2 通常需要:

  • 编译内核时开启相应的视频设备和驱动支持。
  • 在设备树中描述硬件连接及相关参数。
  • 在根文件系统中提供用户空间工具和应用程序。

常见设备节点

摄像头设备经常会同时暴露多个节点,例如:

HikCamera: UVC Camera (usb-0000:02:03.0-1):
        /dev/video0
        /dev/video1
        /dev/media0

/dev/videoN

这是 V4L2 视频设备节点,应用程序通过它协商格式、申请缓冲区并采集视频帧。

  • video0 通常是主视频流,例如输出 MJPEG 或 YUYV 的实时预览画面。
  • video1 可能是元数据通道、静态抓拍通道,或同一物理摄像头提供的另一条视频流(例如不同分辨率)。
  • 节点编号和实际功能由驱动决定,不能仅凭编号判断;应查询节点支持的格式和能力。

/dev/mediaN

这是 Media Controller 设备节点,用于管理复杂摄像头管线,而非直接传输视频数据。

当设备由传感器、ISP、缩放器等多个模块组成时,用户空间可通过 media-ctl 查看、配置模块及其连接关系(pipeline)。配置完成后,通常仍通过对应的 /dev/videoN 节点采集数据。

某些 UVC 摄像头也会暴露 Media Controller 节点,具体取决于驱动和设备实现。