当前位置: 首页 > news >正文

v4l2用户侧使用流程

前言

v4l2的用户侧使用方法的简单demo,参考:media/v4l/v4l2grab.c
实际上,v4l2的用户侧有libv4l开源库。用户可以使用此开源库快速搭建其用户侧代码。

流程

int main()
{// openfd = v4l2_open("/dev/video0", O_RDWR | O_NONBLOCK, 0);// set formatCLEAR(fmt);fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;fmt.fmt.pix.width       = 640;fmt.fmt.pix.height      = 480;fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;fmt.fmt.pix.field       = V4L2_FIELD_INTERLACED;xioctl(fd, VIDIOC_S_FMT, &fmt);// request buffer// 申请的buffer留在内核CLEAR(req);req.count = 2;req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;req.memory = V4L2_MEMORY_MMAP;xioctl(fd, VIDIOC_REQBUFS, &req);buffers = calloc(req.count, sizeof(*buffers));// query buffer// 根据index获取buffer信息(length和offset),然后mmap获取虚拟地址并保存for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {CLEAR(buf);buf.type        = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory      = V4L2_MEMORY_MMAP;buf.index       = n_buffers;xioctl(fd, VIDIOC_QUERYBUF, &buf);buffers[n_buffers].length = buf.length;buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,PROT_READ | PROT_WRITE, MAP_SHARED,fd, buf.m.offset);}// queue buffer// buffer保存在内核,只需要告知index即可完成queuefor (i = 0; i < n_buffers; ++i) {CLEAR(buf);buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;buf.index = i;xioctl(fd, VIDIOC_QBUF, &buf);}// stream ontype = V4L2_BUF_TYPE_VIDEO_CAPTURE;xioctl(fd, VIDIOC_STREAMON, &type);// dequeue buffer + queue bufferfor (i = 0; i < 20; i++) {// 使用select或poll或epoll监控fd是否可读,如果可读则往下走CLEAR(buf);buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;xioctl(fd, VIDIOC_DQBUF, &buf);// 处理buffer,比如写到文件中xioctl(fd, VIDIOC_QBUF, &buf);}// stream offtype = V4L2_BUF_TYPE_VIDEO_CAPTURE;xioctl(fd, VIDIOC_STREAMOFF, &type);// munmapfor (i = 0; i < n_buffers; ++i)v4l2_munmap(buffers[i].start, buffers[i].length);// closev4l2_close(fd);
}
http://www.gsyq.cn/news/48815.html

相关文章:

  • 题解:P3791 普通数学题
  • 芒格变富的逻辑
  • Numerical results of ar-HTMDFP in AMS 2025
  • 再加个数学专题
  • OpenCVSharp:ArUco 标记检测与透视变换
  • 2024年春招-美团-技术岗-第一批笔试
  • 2025.11.13
  • 一句话奶牛
  • 2025氮化硼陶瓷/高温绝缘体/坩埚/套管/基板/高温构件/中子吸收材料优质厂家推荐榜:福维科五星领跑,多场景制品赋能工业升级
  • 2025健康营养饮品推荐榜:惠植健活力菌仓领衔,5 家品牌凭技术与品质,重塑火麻仁肽爆爆纤维/火麻仁肽/固体饮料与燕麦/西梅/果蔬营养素饮品新生态
  • 详细介绍:Wireshark:HTTP、MQTT、WebSocket 抓包详细教程
  • ai agent 智能体 prompt ragflow langflow n8n dify
  • C++之变量与基本类型(三) - Invinc
  • 深入解析:手写MyBatis第111弹:Spring Boot自定义注解@MybatisMapperScan注解深度解析:从注解定义到接口代理的完整实现
  • 点赞!开幕式背后的云力量!
  • 11.13 比赛总结
  • win7 如何运行cherry studio
  • 《密码系统设计》第十一周预习
  • 松原西林瓶灌装加塞机推荐,适配冻干机半加塞功能
  • 251113
  • H模型流程
  • 2025年国内商标注册机构综合实力排行榜:专业服务商深度解析
  • 湛江西林瓶灌装旋盖机,选配IQ/OQ/PQ验证款
  • 2025年安徽商标注册公司Top5排行榜:专业机构深度解析
  • 锦州出口欧美西林瓶灌装压塞机 FDA认证
  • 凉山中药混悬剂西林瓶灌装机选型,防沉淀封口成本可控
  • 神经网络滤波器用途
  • 丽江西林瓶灌装线选充氮还是真空型?
  • 2025年北京继承官司律师机构实力排行榜新鲜发布,继承律师事务所/北京继承律师哪个好/北京丰台继承律师/北京继承纠纷法律事务所选哪家
  • 2025年市场十大名牌管材生产厂家怎么选择,十大名牌管材源头厂家推荐排行榜单精选优质品牌解析