专栏首页秘籍酷Linux音视频(V4L2运行原理)

Linux音视频(V4L2运行原理)

Linux内核用一个被称为V4L2的机制来管理摄像头图像信息,它的核心工作原理就像日本料理店常见的流转餐桌,大厨将美食不断放到空盘子里,客人不断拿来吃。

拓展:

在内核中,摄像头所捕获的视频数据,我们可以通过一个队列来存储,我们所做的工作大致是这样的:首先配置好摄像头的相关参数,使之能正常工作,然后申请若干个内核视频缓存,并且将它们一一送到队列中,就好比三个空盘子被一一放到传送带上一样。

然后我们还需要将这三个内核的缓存区通过mmap函数映射到用户空间,这样我们在用户层就可以操作摄像头数据了,紧接着我们就可以启动摄像头了开始数据捕获,每捕获一帧数据我们就可以做一个出队操作,读取数据,然后将读过数据的内核缓存再次入队,依次循环。

本文分享自微信公众号 - 秘籍酷(mijiku040),作者:林世霖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于女神SQLite的疑惑(1)

    1. 答:对于这个问题,简短的回答是:任何一个被声明为 INTEGER PRIMARY KEY 的域都将是自动递增的。

    用户2617681
  • 关于女神SQLite的疑惑(3)

    在此模式下,所有的互斥锁都将被禁用,相关代码被删除,SQLite 在多线程并发访问时将不再安全。但根据马克思辩证法,此模式下代码量最小,对数据库的增删改查的单次...

    用户2617681
  • 类成员的初始化与赋值

    首先,我们来普及一个尽人皆知的简单事实:如果一个变量在定义的时候未被初始化,那么它的值会根据具体的存储位置或被处理成0,或被处理成随机值。

    用户2617681
  • 接口优化概述

    JavaEdge
  • Ubuntu 11.10 安装JDK

    按 windows 键,在搜索框中输入"terminal",搜出来的就是,单击打开。 升级到ubuntu 11.10之后,由于库里没有sun-java6-jd...

    cloudskyme
  • Glusterfs的peer/volume/brick

        查看peer的情况,当前的glusterfs集群中,有当前节点和11、12三个节点组成。

    克虏伯
  • vue归纳笔记:对vue中nextTick()的理解及应用场景说明

    请记住:vue是依靠数据驱动视图更新的,该更新的过程是异步的。即:当侦听到你的数据发生变化时, Vue将开启一个队列(该队列被Vue官方称为异步更新队列)。视图...

    用户1272076
  • Spring核心——Bean的定义与控制 原

    在前面两篇介绍Sring核心与设计模式的文章中,分别介绍了Ioc容器和Bean的依赖关系。如果阅读过前2文就会知道,Spring的整个运转机制就是围绕着IoC容...

    随风溜达的向日葵
  • JAVA学习笔记之JAVA 对象引用以及赋值

           初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引...

    Jetpropelledsnake21
  • 大数据平台架构的组成

    是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kaf...

    加米谷大数据

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动