云实验室-V4L2基本介绍和v4l2-ctl测试命令
本文档涉及案例包括:
• Linux V4L2多媒体架构的基本介绍
• 使用v4l2-ctl命令查看V4L2设备
V4L2基本介绍
V4L2(Video4Linux)是一个支持视频设备的、类似于Linux的操作系统下的应用程序编程接口(API)。V4L2是Linux中处理视频设备的一个重要部分,包括摄像头、电视卡等。
V4L2的主要功能是:
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"获得:
其中常见的的参数指定命令包括:
1)-d, --device <dev>
命令中<dev>为/dev路径下video后跟的标号,如不特别添加该命令的话,默认打开/dev/video0设备。该命令会指定当前v4l2-ctl要检测的设备。
例:v4l2-ctl -d 2
解释:会指定当前打开的设备为/dev/video2
常见的查询功能命令包括:
1)v4l2-ctl --list-devices
列出当前的所有设备
2)v4l2-ctl --list-formats-ext -d 0
列出指定设备支持的格式及其分辨率
3)获取指定设备的所有信息
常见的测试命令包括
1)v4l2-ctl --stream-mmap -d 0
该命令可以使得在指定设备上进行流式输出测试