硬件软件系统方案应用范例智能车大赛技术支持学习园地关于我们恩智浦官网

V4L2篇(1)V4L2的基本介绍和测试命令

云实验室-V4L2基本介绍和v4l2-ctl测试命令

本文档涉及案例包括:

•        Linux V4L2多媒体架构的基本介绍

•        使用v4l2-ctl命令查看V4L2设备

V4L2基本介绍

V4L2(Video4Linux)是一个支持视频设备的、类似于Linux的操作系统下的应用程序编程接口(API)。V4L2是Linux中处理视频设备的一个重要部分,包括摄像头、电视卡等。

V4L2的主要功能是:

  1. 能够为视频设备提供统一的操作接口。
  2. 能够在不同的硬件之间提供良好的兼容性。
  3. 提供了对视频设备的低级和高级控制。
  4. 提供了对视频设备的捕获功能。

i.MX系列MPU除显示设备使用DRM统一管理外,其他的多媒体设备,如的MIPI-CSI相机,视频编解码器,GPU图像处理器等多使用V4L2框架继续驱动实现。

V4L2设备在驱动加载完成后,会在/dev目录下生成videoX设备,用户可以在应用层使用open/close函数打开和关闭,同时V4L2设备的主要功能也是通过该设备节点和ioctl函数来实现的。它主要相关的ioctl命令罗列如下:

l  VIDIOC_QUERYCAP    查询设备功能

l  VIDIOC_S_FMT    设置设备的图像格式

l  VIDIOC_G_FMT    获取设备当前的图像格式

l  VIDIOC_S_PARM    设置设备的流类型相关参数

l  VIDIOC_G_PARM    获取设备的流类型相关参数

l  VIDIOC_S_CTRL    设置设备指定的control

l  VIDIOC_S_SELECTION    设置视频选择参数

l  VIDIOC_QUERYBUF    获取缓存信息

l  VIDIOC_REQBUFS    申请缓存

l  VIDIOC_QBUF    将缓存放入队列中

l  VIDIOC_DQBUF    将缓存从队列中取出

l  VIDIOC_STREAMON    开始视频流式采集

l  VIDIOC_STREAMOFF    停止视频流式采集

V4L2-ctl工具

1.基本介绍

v4l2-ctl是一个基于V4L2 API的命令行工具,专门用于管理和控制Linux系统中的视频设备。它主要包含以下几部分功能:

1)设备信息查看:用户可直接通过命令获取相机的分辨率、支持格式、帧率等相关信息

2)设备管理:罗列出当前系统中的所有V4L2设备比执行一些基本管理操作

3)权限管理:检查提示设备访问权限

执行步骤:

V4l2-ctl命令集合

命令集合可以直接通过运行该程序,或是"v4l2-ctl --help"/"v4l2-ctl -h"获得:

https://api.aiotcloud.nxp.com.cn/static/2025-3-13/HHJTHjkk7S图片1.png

其中常见的的参数指定命令包括:

1)-d, --device <dev>

命令中<dev>为/dev路径下video后跟的标号,如不特别添加该命令的话,默认打开/dev/video0设备。该命令会指定当前v4l2-ctl要检测的设备。

例:v4l2-ctl -d 2

解释:会指定当前打开的设备为/dev/video2

常见的查询功能命令包括:

1)v4l2-ctl --list-devices

列出当前的所有设备

https://api.aiotcloud.nxp.com.cn/static/2025-3-13/cisWbrdwdT图片2.png

2)v4l2-ctl --list-formats-ext -d 0

列出指定设备支持的格式及其分辨率

https://api.aiotcloud.nxp.com.cn/static/2025-3-13/2atDjP44mF图片3.png

3)获取指定设备的所有信息

https://api.aiotcloud.nxp.com.cn/static/2025-3-13/aKQyYZdJYK图片4.png

常见的测试命令包括

1)v4l2-ctl --stream-mmap -d 0

该命令可以使得在指定设备上进行流式输出测试

https://api.aiotcloud.nxp.com.cn/static/2025-3-13/Nipw3zG4MW图片5.png