转自:http://zyg0227.blog.51cto.com/1043164/271954

1.  linux 内核有video for linux简称V4L。V4L是Linux影像系统与嵌入式影像的基础,是Linux kernel里支持影像设备的一组APIs,配合适当的视频采集卡与视频采集卡驱动程序,V4L可以实现影像采集、AM/FM无线广播、影像CODEC、频道切换等功能。目前,V4L主要应用在影像串流系统与嵌入式影像系统里,其应用范围相当广泛,例如:远程教学、远程医疗、视频会议、视频监控、可视电话等。V4L为2层式架构,最上层为V4L驱动程序,最下层则是影像设备驱动程序。
2. 接上USB摄像头,硬件设备在linux下都是作为文件访问,所以只需在/dev/下查找,一般情况下为video0。当摄像机通过USB接口连接到视频采集终端后,在程序中调用V4L APIs对设备文件video0的读操作即可实现摄像头视频数据采集。其主要过程如下:
1) 打开设备文件:

[cpp] view plaincopy
  1. int v4l_open(char *dev, v4l_device *vd){};//打开影像源的设备文件;

2) 初始化picture:
[cpp] view plaincopy
  1. int v4l_get_picture(v4l_device *vd){};// 获取输入的影像信息;
3) 初始化channel

[cpp] view plaincopy
  1. int v4l_get_channels(v4l_device *vd){};// 获取每个channel的信息;

4) 对channel设置norm:

[cpp] view plaincopy
  1. int v4l_set_norm(v4l_device *vd, int norm){};// 对所有的channel设置norm;

5) 设备地址映射

[cpp] view plaincopy
  1. v4l_mmap_init(v4l_device *vd){};// 返回存放图像数据的地址;

6) 初始化mmap缓冲区:

[cpp] view plaincopy
  1. int v4l_grab_init(v4l_device *vd, int width, int height){};

7) 视频捕获同步

[cpp] view plaincopy
  1. int v4l_grab_sync(v4l_device *vd){};

8) 视频捕获:

[cpp] view plaincopy
  1. int device_grab_frame(){}。

针对USB摄像头设备文件/dev/video0的视频采集程序流程,首先调用V4L_open()函数打开视频设备,设备文件开启成功后使用V4L_get_capability()读取设备信息,然后选择相应的视频采集方式进行视频采集并对采集的图像进行处理,最后调用V4L_close()函数关闭视频设备文件。其中的视频采集方式有两种,一种是read()直接读取方式,另外一种是mmap()内存映射方式。mmap()方式下进程之间通过映射同一个文件实现内存共享,各进程可以像访问普通内存一样对文件进行访问。此外,mmap()方式加速了I/O访问,提高了效率,故常选用内存映射方式获取视频。
Video for Linux支持的数据结构及其用途:
video_capability:设备的基本信息(设备名称、支持的分辨率等);
video_picture:采集的图像的各种属性;
video_channel:各个信号源的属性;
 video_windows:包含采集区域的信息;
video_mbuf:利用mmap映射的帧的信息;
video_mmap:用于mmap方式。  
通过以上操作,即可将摄像机视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后通过网络发布到Internet。

转载于:https://www.cnblogs.com/xihong2014/p/6502832.html

嵌入式视频采集编程思路(Video 4 Linux)-转相关推荐

  1. 基于Linux视频驱动接口V4L2视频采集编程

    视频采集基本步骤流程如下: 打开视频设备,设置视频设备属性及采集方式.视频数据处理,关闭视频设备,如下图所示: 一.打开视频设备 打开视频设备非常简单,在V4L2中,视频设备被看做一个文件.使用ope ...

  2. linux视频采集软件,嵌入式LINUX环境下视频采集

    Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...

  3. 嵌入式视频监控毕业设计过程中保存的标签。。。嵌入式系统视频信号接收、显示 与存储程序设计与实现

    下载地址:http://www.queshao.com/docs/306145/ 毕业设计 基于嵌入式Linux与S3C2410平台的视频采集 - Linux - 技术中心 - 嵌入式在线 | www ...

  4. 嵌入式linux环境视频采集知识(V4L2)

    Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...

  5. 嵌入式LINUX环境下视频采集知识

    Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...

  6. 基于嵌入式linux和s32410平台的视频采集

    随着多媒体技术.网络技术的迅猛发展和后PC机时代的到来,利用嵌入式系统实现远程视频监控.可视电话和视频会议等应用已成为可能.为了实现这些应用,实时获得视频数据是一个重要环节.针对这一点,本文在基于嵌入 ...

  7. linux下基于qt和v4l2驱动的usb摄像头视频采集与显示,用v4l2和framebuffer实现usb摄像头视频采集并显示...

    Windows程序是基于消息的,不管其封装形式如何,最后都要包含如下代码MSG msg;while(GetMesssage(msg)){TranslateMessage(msg);DispatchMe ...

  8. 国外linux内核视频播放器,基于Video for Linux内核的USB摄像头视频信号采集实现

    摘要:Video for Linux是Linux中关于视频设备的内核驱动,本文介绍了在Video for Linux内 >> 基于ARM9和USB摄像头的网络视频采集系统设计 基于嵌入式V ...

  9. 关于Linux平台视频采集程序的修改

    在真正开始编写程序前,我作了大量工作,包括了解Linux支持的摄像头类型.Linux摄像头驱动程序.摄像头采集模型,等等,--当然,还包括去买个摄像头.网上流行的是gspca驱动以及一些老式摄像头的程 ...

  10. V4L2采集yuv视频花屏:Linux视频采集与编码(一)

    V4L2采集yuv视频花屏:Linux视频采集与编码(一) 标签: linuxvideobufferiostructnull 2012-05-01 20:35 16179人阅读 评论(42) 收藏 举 ...

最新文章

  1. idea在Mybatis的xml里面写sql时,表名、字段、报红问题的解决方法
  2. Puppet集中配置管理系统[安装与配置]
  3. Magicodes.WeiChat——媒体资源选择组件之media-choice(开源)
  4. 第一章 OSI参考模型
  5. 怎么卸载旧版本java_卸载旧的java-jdk安装新版本jdk
  6. AutoML Challenge 历史回顾
  7. 解决VS2010链接错误:LINK fatal error LNK1123: 转换到 COFF
  8. 运维必知的23个经验教训,值得收藏!
  9. java双击添加文本框_java图形界面 怎么文本框要用鼠标点一下才出来
  10. 基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现
  11. Java调用python的程序
  12. 图形学必备!斯坦福图形学几何处理算法课程1——Surface Reconstruction
  13. spring 中发邮件的设置
  14. DUXCMS 2.x学习问题(一)
  15. 验证方法学覆盖率(一):代码覆盖率
  16. [Qt] 单击任务栏图标实现最小化
  17. Infortrend CS分布式NAS集群强项之---成本篇
  18. 《公司的力量》第一集 公司!公司!
  19. 企业该分多少钱给员工?看柏明顿阿米巴奖金分配方案
  20. 致奋斗在路上的朋友们

热门文章

  1. Linux系统编程—— fork() 函数详解
  2. 引用springboot starter 的springboot项目无法引用 springboot starter依赖的项目中的类
  3. yolo系列外文翻译_测评:英文文献、论文的翻译软件对比
  4. Java I/O系统之转换流
  5. 【渝粤教育】国家开放大学2018年秋季 0321-21T学前心理学 参考试题
  6. [渝粤教育] 中国地质大学 测量学 复习题 (2)
  7. [渝粤教育] 中国地质大学 材料力学 复习题
  8. Tensorflow实例,拟合二维数据
  9. 【Newtonsoft.Json.dll】操作简单JSON数据
  10. Python数据分析中Groupby用法之通过字典或Series进行分组