概述
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 节点,具体取决于驱动和设备实现。