V4L2打开video设备注意(读写权限)

2023-05-16

V4L2编程中在open("/dev/video", ...)时应注意:

摄像头采集到的数据是最开始是存储在内核空间我们申请的缓冲区中的,具体设置如下:

req.count = 5;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //数据流类型
req.memory = V4L2_MEMORY_MMAP;   //使用mmap方式映射

if (ioctl(fd, VIDIOC_REQBUFS, &req) == -1)     /*在内核空间申请count个缓存空间*/
 {
  perror("error: VIDIOC_REQBUFS");
  exit(1);
 }

如果我们希望采集这些内核空间的的数据帧的话,前提就是将内核空间相关数据映射到用户空间以方便应用程序能够直接访问这些数据帧。这样就会用到mmap操作(当然还有其他方式,由req.memory 确定使用mmap方法)。

mmap函数实现把一个文件映射到一个内存区域,从而我们可以像读写内存一样读写文件,他比单纯调用read/write也要快上许多。在某些时候我们可以把内存的内容拷贝到一个文件中实现内存备份,当然,也可以把文件的内容映射到内存来恢复某些服务。另外,mmap实现共享内存也是其主要应用之一,mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。

mmap成功操作有以下要求:

1.进行文件映射的描述符必须拥有读权限,否则会产生SIGSEGV信号

2.把内存内容写入映射文件时,必须确保被写文件当前位置到文件结尾的长度不小于所写内容长度,否则产生SIGBUS信号

3.关闭文件描述符并不能保证文件内容不被修改 

所以最好以读写方式打开设备文件,否则执行映射时会出现权限拒绝的现象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

V4L2打开video设备注意(读写权限) 的相关文章

  • 自动旋转、UIWebView 和 UITabBarController

    我有以下视图层次结构 UITabBarController UINavigationController UIViewController only supports Portrait rotation UINavigationContro
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • VideoJs 在 Firefox 中的 Flash 回退问题

    我尝试将 videoJs 添加到我的网站来播放 MP4 文件 所有这些在 Chrome 中都能完美运行 但当我转到 Firefox 不支持 MP4 文件 时 Flash 播放器停留在黑屏上 按钮不执行任何操作 简单的问题 为什么 我不明白
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 如何打开相机然后切换到图像模式(反之亦然)

    就我而言 我想拍照或捕捉视频 实际上 如果我创建单独的意图 我可以做到这些 我的意思是我可以将相机打开为图像模式或视频模式 但无法在它们之间切换 这与我使用的意图过滤器有关吗 我应该怎么办 我如何在它们之间切换 我有同样的问题 在我想放置一
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • 将 CIFilter 与 AVFoundation 结合使用 (iOS)

    我正在尝试将滤镜应用于在 iOS 上使用 AVFoundation 创建的视频合成 滤镜可以是模糊 像素化 棕褐色等 我需要实时应用效果并能够将复合视频渲染到磁盘 但我很高兴从其中之一开始 不幸的是 我似乎无法弄清楚这一点 这是我能做的 我
  • Android VideoView 中纵向视频方向错误

    我在 Android 设备上以肖像方向拍摄新视频 如下所示 Intent intent new Intent android provider MediaStore ACTION VIDEO CAPTURE startActivityFor
  • 如何从 Linux 命令行获取视频文件的分辨率(宽度和高度)?

    我一直在挖掘 mplayer mencoder 和 ffmpeg 文档 但我似乎无法想出anything 我对输出格式不是特别挑剔 因为我可以使用正则表达式将其拉出来 我只是似乎无法首先获取数据 Use ffprobe https ffmp
  • 在 ffmpeg 中,如何使用scale2ref 过滤器缩放 dvdsub 字幕以匹配视频大小?

    我有一个从直播电视录制的 mpeg 文件 其中包含视频以及多个音频和字幕流 我的最终目标是能够创建较小的视频文件 因为 mpeg 文件大小为数 GB 我在这条道路上的第一步只是能够选择视频 音频和字幕流中的每一个并将它们复制到 mkv 文件
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 某些网站如何在 iOS Safari 中内嵌播放视频?

    非常令人难以置信 因为我认为所有视频都可以在常规野生动物园中扩展为全屏播放 例如检查一下 https entertainment theonion com the onion reviews rogue one 1819596116 htt
  • Xuggler 未转换 .webm 文件?

    我只是尝试使用 Xuggler 将 mov 文件转换为 webm 这应该可以工作 因为 FFMPEG 支持 webm 文件 这是我的代码 IMediaReader reader ToolFactory makeReader home use
  • Html 视频播放器播放声音但不播放视频

    我正在制作网页 并尝试插入视频 视频播放器加载正常 您可以按播放 但只播放音频 而不播放视频 在 Chrome 中预览时 在 firefox 中查看时可以正常工作 我的代码如下
  • 在 Java 中处理视频(DVD、.avi .mkv)

    在寻找了一个像样的 Java 视频播放库之后 我发现了问题 周围的每个人都在尖叫不要使用 JMF 因为它已经过时 过时并且需要用户安装它 其他替代方案 例如 VLCJ 如果可以工作的话似乎不错 但仍然相对不稳定并且依赖大量本机代码 并且至于
  • iOS 确定视频中的帧数

    如果我有一个 Swift 中的 MPMoviePlayerController MPMoviePlayerController mp MPMoviePlayerController contentURL url 有没有办法获取视频中的帧数u

随机推荐

  • linux remmina 使用rdp协议连接windows显示Failed to startup SSH session:connection refused解决

    https cn aliyun com jiaocheng 165641 html 删除 freerdp known hosts 但是我找不见这个文件 尝试删除 remmina remmina pref 文件 成功
  • Ubuntu 18.04及几款应用的安装

    Ubuntu 18 04及几款应用的安装 1 Ubuntu 18 04的安装 VMware虚拟机自行下载即可 xff1b 在Ubuntu官网下载镜像 xff0c 此处使用的Ubuntu 18 04版本 xff1b 配置过程见其他链接 2 U
  • ModuleNotFoundError: No module named ‘pillow‘或者ModuleNotFoundError: No module named ‘PIL‘

    科普 xff1a pillow是PIL xff08 Python成像库 xff09 的一个分支 xff0c PIL不再被维护了 所以 xff0c 为了保持向后兼容性 xff0c 往往使用旧的模块名称PIL 所以 xff0c 直接import
  • 软件开发模型基础知识

    目录 一 开发生命周期模型 1 瀑布模型 2 变换模型 3 螺旋模型 4 喷泉模型 5 V模型 6 增量模型 7 RAD模型 8 基于构件的模型 9 原型方法 10 XP方法 11 RUP方法 二 系统开发方法论 1 结构化分析与设计 2
  • C 语言中的SWITCH—CASE 语句陷阱

    C 语言中 xff0c 如果case语句下不加 代码作用域是不允许定义变量的 xff0c 但是我发现有一种方法可以规避这条原则 请看下面的代码 xff1a 在主流的编译器环境下测试过不限制编译告警的情况下 xff0c Visual Stud
  • JS常用正则表达式和JS控制输入框输入限制(数字、汉字、字符)

    验证数字 xff1a 0 9 验证n位的数字 xff1a d n 验证至少n位数字 xff1a d n 验证m n位的数字 xff1a d m n 验证零和非零开头的数字 xff1a 0 1 9 0 9 验证有两位小数的正实数 xff1a
  • JWT(auth0):RS256非对称加密算法实现Token的签发、验证

    前言 日常开发中 xff0c 客户端与服务器通常采用HTTP协议进行通信 xff0c 但HTTP是没有状态的 xff0c 无法记录用户的身份信息和行为 会话跟踪技术是一种在客户端与服务器间保持HTTP状态的解决方案 xff0c 我们所熟知的
  • 解决ImportError: libstdc++.so.6: version `GLIBCXX_3.4.22‘ not found

    运行代码时遇到以下错误 就是绿色框里面的文件夹下面缺少GLIBCXX 3 4 22 xff0c 其实换句话说就是该文件夹下缺少文件libstdc 43 43 so 6 22 下载文件lib64stdc 43 43 6 6 2 0 5ubun
  • 推荐系统常用的策略算法—Bandits

    目录 0 推荐系统存在的经典问题 1 什么是 bandit 算法 1 1 Bandit算法起源 1 2 bandit 算法与推荐系统 1 3 怎么选择 bandit 算法 xff1f 1 4 常用 bandit 算法 Thompson sa
  • Tensorflow下VAE(变分自动编码器)在MNIST数据集下的实验

    首先简单介绍一下AE和VAE然后在完成代码实践 一 什么是自编码器 xff08 Auto encoder xff09 自动编码器是一种数据的压缩算法 xff0c 其中数据的压缩和解压缩函数是数据相关的 有损的 从样本中自动学习的 在大部分提
  • 利用python画图

    因为最近论文收尾需要画图 xff0c 于是学了一些画图的东西在这里分享一下 一 环境配置 linux ubuntu 下需安装下面三个包 xff1a Numpy Scipy Matplotlib 分别输入下面的代码进行安装 xff1a 二 开
  • Python实现冒泡排序

    冒泡排序顾名思义就是整个过程就像气泡一样往上升 xff0c 单向冒泡排序的基本思想是 xff08 假设由小到大排序 xff09 xff1a 对于给定的n个记录 xff0c 从第一个记录开始依次对相邻的两个记录进行比较 xff0c 当前面的记
  • 详解贪心算法(Python实现贪心算法典型例题)

    贪心算法 贪心算法 xff08 又称贪婪算法 xff09 是指 xff0c 在对问题求解时 xff0c 总是做出在当前看来是最好的选择 也就是说 xff0c 不从整体最优上加以考虑 xff0c 他所做出的是在某种意义上的局部最优解 贪心算法
  • 详解动态规划算法(Python实现动态规划算法典型例题)

    动态规划 xff08 Dynamic programming xff09 是一种在数学 计算机科学和经济学中使用的 xff0c 通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法 动态规划算法是通过拆分问题 xff0c 定义问题状态
  • CNN卷积神经网络训练时占多少显存(GPU)的计算

    以前总看见别人说某某神经网络参数量有多少 xff0c 大概占用多大的显存等等描述 xff0c 但心里却并不知道为什么是这么多 xff0c 今天看到这篇文章 xff0c 大体上有了一定的理解 参数量的计算 xff1a VGG Network
  • JS编写的科学计算器

    文章为原创 xff0c 转载请注明出处 xff0c 谢谢支持 xff01 进阶版代码地址 xff1a https github com Summer Dong calculator 在此版本中使用了Angular框架和Boostrap xf
  • 安装使用JPEG库遇到的问题(用于交叉编译)

    使用JPEG 官方解码库时出现的问题 xff1a 使用example c 接口编译时 xff1a 1 错误 ubuntu mnt hgfs GZ1961 linux系统文件IO day15 newjpeg gcc main c exampl
  • TP4056 充电电路学习借鉴

    最近计划的一个 DIY 项目有安排充放电锂电池 xff0c 于是搜集了两个比较相似的方案 xff0c 借鉴学习一下 一 TP4056单节锂电池充电板设计方案 原理图 43 源码 顺带说 xff0c 电路城 这个网站还是比较有意思的 xff0
  • WSL2 安装 GUI,并使用 XRDP实现连接(内含汉化操作)

    效果图 随着 wsl2 的发布 xff0c wsl 已经从玩具变成了一个实用的开发利器 xff0c 从最新的微软开发者博客对 wsl 的路线发展规划 xff0c 未来 wsl 将会支持 GPU 计算和 GUI xff08 点此了解详情 xf
  • V4L2打开video设备注意(读写权限)

    V4L2编程中在open 34 dev video 34 时应注意 xff1a 摄像头采集到的数据是最开始是存储在内核空间我们申请的缓冲区中的 xff0c 具体设置如下 xff1a req count 61 5 req type 61 V4