Linux V4L2框架的视频采集
一、流程
V4L2摄像头采集程序步骤
- 打开摄像头设备
- 查询摄像头硬件信息
- 显示摄像头支持的采集格式
- 设置采集格式
- 申请内核空间
- 映射
- 开始采集
二、模块
2.1 打开摄像头
int OpenCameraDevice(char* filename,int mode)
{int Camera_fd = open(filename, mode);if (Camera_fd < 0){perror("Failed to open camera device");printf("\n");return -1;//表示函数失败}else{return Camera_fd;}return 0;
}
2.2 查询硬件设备的能力
2.2.1 struct v4l2_capability结构体
struct v4l2_capability {
__u8 driver[16]; //驱动名 通常为:uvcvideo
__u8 card[32]; //设备名 生产厂商写
__u8 bus_info[32]; //在Bus系统中存放位置 ,通常为:usb-hiusb-ehci-2.4
__u32 version; //driver 版本
__u32 capabilities;
//设备支持的操作模式,能力集 通常为:V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING
__u32 device_caps;
__u32 reserved[3];// 保留字段
};
capabilities 代表设备支持的操作模式,常见的值有 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING 表示是一个视频捕捉设备并且具有数据流控制模式;
能力集中包含:
V4L2_CAP_VIDEO_CAPTURE 0x00000001 The device supports the Video Capture interface.
V4L2_CAP_VIDEO_OUTPUT 0x00000002 The device supports the Video Output interface.
V4L2_CAP_VIDEO_OVERLAY 0x00000004 The device supports the Video Overlay interface.
int QueryCameraHardwareInfo(int fd)
{struct v4l2_capability cap;memset(&cap, 0, sizeof(cap));int ret = 0;ret = ioctl(fd, VIDIOC_QUERYCAP, &cap);if (ret < 0){printf("VIDIOC_QUERYCAP failed(%d)\n", ret);return -1;}else{printf("Capability Informations:\n");/*cout<<"driver:"<<cap.driver<<endl;cout<<"card:"<<cap.card<<endl;cout<<"bus_info:"<<cap.bus_info<<endl;cout<<"version:"<<cap.version<<endl;cout<<"capabilities:"<<cap.capabilities<<endl;cout<<"device_caps:"<<cap.device_caps<<endl;cout<<"reserved:"<<cap.reserved<<endl;*/}printf("--------------------\n"); //可作为分割线。return ret;
}
2.3 打印摄像头支持的格式
2.3.1 struct v4l2_fmtdesc结构体
struct v4l2_fmtdesc
{
u32 index; // 要查询的格式序号,应用程序设置
enum v4l2_buf_type type; // 缓冲类型 应用程序设置 帧类型,应用程序设置
u32 flags; // 是否为压缩格式
u8 description[32]; // 格式名称
u32 pixelformat; // 格式
u32 reserved[4]; // 保留
};
参数enum v4l2_buf_type type:
enum v4l2_buf_type {V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,V4L2_BUF_TYPE_VBI_CAPTURE = 4,V4L2_BUF_TYPE_VBI_OUTPUT = 5,V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,V4L2_BUF_TYPE_SDR_CAPTURE = 11,V4L2_BUF_TYPE_SDR_OUTPUT = 12,V4L2_BUF_TYPE_META_CAPTURE = 13,/* Deprecated, do not use */V4L2_BUF_TYPE_PRIVATE = 0x80,
};
参数u32 flags:
参数description:
参数pixelformat:
2.4 设置采集的格式
Linux V4L2框架的视频采集相关推荐
- Linux v4l2框架分析
背景 说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 V4L2(Video for Linu ...
- linux 远程挂载摄像头_如何实现嵌入式Linux下USB摄像头视频采集
展开全部 在linux下所e5a48de588b662616964757a686964616f31333337613134有设备都是文件.所以对摄像头的操作其实就是对文件的操作.USB摄像头的设备文件 ...
- v4l2驱动框架_【干货分享】Xilinx Linux V4L2视频管道(Video Pipeline)驱动程序分析...
作者:付汉杰,hankf@xilinx.com, 文章转载自:赛灵思中文社区论坛 概述 Xilinx提供了完整的V4L2的驱动程序,Xilinx V4L2 driver.处于最顶层的驱动程序是V4L2 ...
- Linux基于v4l2的视频采集(可用)
Video4linux2(简称V4L2),是Linux中关于视频设备的内核驱动. V4L2较V4L有较大的改动,并已成为2.6的标准接口,函盖video\dvb\FM...,多数驱动都在向V4l2迁移 ...
- 嵌入式linux环境视频采集知识(V4L2)
Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...
- 嵌入式LINUX环境下视频采集知识
Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...
- linux视频采集软件,嵌入式LINUX环境下视频采集
Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...
- linux的v4l2运行源码,linux v4l2摄像头应用层编程介绍
一.前言 最近项目需要做一个工业条形读码器,在底层应该会适配linux v4l2框架,就自己研究了一下在应用层怎么使用v4l2进行编程,查阅了相关资料,主要是网上的博客资料,有: https://ww ...
- windows下directShow音视频采集
目录 前言 一.DirectShow简介 二.DirectShow视频采集主要流程介绍 1.DirectShow视频采集主要API介绍 三.视频采集软件设计框图 四.音频采集软件设计框图 <wi ...
最新文章
- 基于KNN的相关内容推荐
- wordpress url index.php,WordPress对URL的路由解析过程详解
- 修改PPC下的移动运营商名称为中文
- java菜单管理的实现方式_智能停车场管理系统的收费实现方式有哪些?
- mui php上传图片,mui ajax图片上传
- java小例子mysql_Java 访问MySQL的小例子
- IT测试时准确数据的技巧(IT总结之三去除旧数据)
- python中绝对角度是什么意思_Python中的角度转换功能
- 更细日期2015年8月18日- Citrix vGPU解决方案注意事项
- MP3、MP4、MP5、PSP
- 运维工程师从月薪 5K 到 50K,中间都经历了什么?
- Android项目编译异常之AAPT: error
- mysql查询学生表年龄语句_表是student表-从学生表tstudent-学生表student
- angular 使用ngx-quill
- 【转载】遥感影响数据集整理
- 俞敏洪在北京大学2008年开学典礼上的演讲辞
- 模拟海_学前教育系未来之星 课堂模拟大赛
- csh/python/tcl常用功能
- Xcode10 报错 target xxx(project 'xxx')has copy command from ‘xxx/xxx’ to ''xxx/xxx.app/COPYING'解决方案
- 使用破解补丁激活过期的pycharm