zoukankan      html  css  js  c++  java
  • v4l2视频采集基础知识

    一、什么是v4l2

    Video4linux2(简称v4l2),是linux环境下视频驱动的一种,它提供了像访问普通文件那样访问视频设备的方法,能够对其进行读写。视频设备(摄像头)在/dev/video0下

    二、V4L2视频采集的基本流程

    1. 打开设备文件

    int fd = ::open(”/dev/video0″,O_RDWR);

       2.  取得设备的capability,查看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等功能。比如:

        VIDIOC_QUERYCAP

    V4L2_CAP_VIDEO_CAPTURE·

    V4L2_CAP_STREAMING      


      3. 设置视频的制式和帧格式(如帧的宽度高度等)

    相关结构体:struct v4l2_format等

      4. 申请帧缓冲

    	struct v4l2_requestbuffers req;//申请动态缓冲结构体
    	     struct v4l2_buffer buf;//驱动中一帧视频的缓冲

    5 申请物理内存(内存映射)

    (VIDEO_BUF*)calloc(req.count, sizeof(VIDEO_BUF))

    V4L2_MEMORY_MMAP

    mmap()内存映射

    6. 开始视频采集

    VIDIOC_STREAMON


    7.  *把数据从缓存中读取出来

    ::ioctl(fd, VIDIOC_QBUF, &buf

    8. 关闭设备文件


    close(fd)

  • 相关阅读:
    Linux 磁盘分区
    curl
    Metasploit ms10_046_shortcut_icon_dllloader 利用
    Ettercap 入门
    Ettercap dos_attack
    Centos7/Debian 配置双网卡
    Centos7配置单网卡,多IP
    Ettercap MITM Arp Poisoning
    Ettercap DNS Spoofing
    java常用设计模式--工厂模式简单例子
  • 原文地址:https://www.cnblogs.com/Windeal/p/4284693.html
Copyright © 2011-2022 走看看