uvc和v4l2简介

对这块不是特别理解,看了几篇博客,还是一知半解,先记录下,以后有机会深入后,再来更新;

UVC
UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。
UVC是一个开放的标准,拥有维护良好的驱动,它属于内核代码的一部分。插入摄像头后就可以工作,而无须编译或安装额外的驱动。
V4L2
简单的讲V4L2就是用来管理UVC设备的并且能够提供视频相关的一些API。那么这些API怎么使用或者能被谁使用呢。在Linux系统上有很多的开源软件能够支持V4L2。常见的又FFmpeg、opencv、Skype、Mplayer等等。

首先介绍两个概念:

UVC:

USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及静态视频相机。

最新的UVC版本为UVC 1.5,由USB-IF(USB Implementers Forum)定义包括基本协议及负载格式 [1] [2].

这是wikipedia的解释。

这个链接是Linux中对UVC支持的相关描述。http://www.ideasonboard.org/uvc/

V4L2:

Video4Linux或V4L是一个视频截取及设备输出API,以及Linux的驱动程序框架,支持很多USB摄像头、电视调谐卡以及其他设备。Video4Linux与Linux内核紧密集成,Video4Linux取名的灵感来自Video for Windows(有时候会缩写为“V4W”),但两者在技术上并没有任何关系[1][2]。

从两个的介绍也能看出来这两者之间的关系。

简单的讲V4L2就是用来管理UVC设备的并且能够提供视频相关的一些API。那么这些API怎么使用或者能被谁使用呢。在Linux系统上有很多的开源软件能够支持V4L2。常见的又FFmpeg、opencv、Skype、Mplayer等等。

这样一个UVC能够进行视频显示的话应该满足三个条件:

1 UVC的camera硬件支持

2 UVC驱动支持,包括USB设备驱动以及v4l2的支持

3 上层的应用程序支持

linux UVC驱动是为了全面的支持UVC设备。它包括V4L2内核驱动程序和用户空间工具补丁。这个视频设备或者USB视频类的USB设备类的定义定义了在USB上的视频流的功能。UVC类型的外设只需要一个通用的驱动支持就能够正常工作,就像USB 大容量存储设备一样。

UVC的linux  kernel驱动程序和支持的硬件设备都在这里有相关的描述:http://www.ideasonboard.org/uvc/。

判断一个摄像头是否属于UVC规范可以使用如下方法:

1 使用lsusb命令或其他硬件信息查看工具,找出摄像头的设备号(Vendor ID)和产品号(Product ID)。

2 查找是否有视频类借口信息

lsusb -d VID:PID -v | grep "14 Video"

如果兼容UVC,则会输出类似信息

bFunctionClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

如果没有以上信息,则是non-UVC设备。

uvc和v4l2简介相关推荐

  1. linux UVC摄像头驱动 简介

    1. 如何判断Camera是否为UVC Camera Linux UVC driver(uvc) 该驱动适用于符合USB视频类(USB Video Class)规范的摄像头设备,它包括V4L2内核设备 ...

  2. 【正点原子Linux连载】第二十章 V4L2摄像头应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  3. UVC摄像头嵌入式Linux应用

        由于是第一次接触UVC,所以内容会比较杂.文章内容多为参考整合. 参考链接: [1]添加内核支持部分:https://blog.csdn.net/u010034969/article/deta ...

  4. uvc摄像头代码解析7

    转载于: http://blog.csdn.net/orz415678659/article/details/10083585 13.uvc视频初始化 13.1 uvc数据流控制 [cpp] view ...

  5. Linux 下UVCamp;V4L2技术简单介绍(二)

    通过前文Linux 下UVC&V4L2技术简单介绍(一)我们了解了UVC和V4L2的简单知识. 这里是USB设备的文档描写叙述:http://www.usb.org/developers/do ...

  6. uvc摄像头代码解析6

    10.扫描视频设备链和注册视频设备 10.1 uvc视频链 struct uvc_video_chain { //uvc视频链 struct uvc_device *dev; //uvc设备 stru ...

  7. Linux之V4L2驱动框架

    目录 一.V4L2简介 二.V4L2操作流程 1.打开摄像头 2.查询设备的属性/能力/功能 3.获取摄像头支持的格式 4.设置摄像头的采集通道 5.设置/获取摄像头的采集格式和参数 6.申请帧缓冲. ...

  8. linux android V4l2 的一些精品文章连接

    在进行V4L2开发中,一般会用到以下的命令标志符: VIDIOC_REQBUFS:分配内存 VIDIOC_QUERYBUF:把VIDIOC_REQBUFS中分配的数据缓存转换成物理地址 VIDIOC_ ...

  9. Linux应用开发【第七章】摄像头V4L2编程应用开发

    文章目录 7 摄像头V4L2编程应用开发 7.1 V4L2简介 7.2 V4L2视频采集原理 7.3 V4L2程序实现流程 7.4 V4L2程序实例 7.4.1 打开设备 7.4.2 查询设备属性 7 ...

  10. linux fg 参数,Linux的bg和fg命令简单介绍

    我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的 ...

最新文章

  1. 超市购物打印小票的简单程序 记录下来
  2. IndexError: list index out of range的解决办法
  3. ios 位置服务器,iOS 14 隐私保护:管理和控制共享的位置信息
  4. javascript去除首尾空白字符
  5. 地表地形对地下温度及地表热流的影响
  6. 【数据结构与算法-java实现】一 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
  7. saas 困难_将不可信的Javascript作为SaaS运行非常困难。 这就是我驯服恶魔的方式。...
  8. 6.1 PyTorch简单二分类模型
  9. 语音信号处理1 ----- 基础知识
  10. linux cpu使用率太高,小技巧:教您一个窍门!解决Linux下CPU使用率过高的问题
  11. Matlab 彩色图片直方图均衡化处理 line()函数实现
  12. 关于容斥定理、勾股数公式、排列组合置换公式的总结
  13. 遗传图谱基础原理培训资料
  14. 腾讯 Code Review 规范出炉!
  15. python 矩阵化为最简阶梯型
  16. 论文解读:《基于注意力的多标签神经网络用于12种广泛存在的RNA修饰的综合预测和解释》
  17. 这位华裔天才数学家情商也蛮高,他给了25条职业建议
  18. 1.python 根据 oracle字段名和类型 生成 hive建表语句
  19. 思维导图帮助记忆,个人评估和辅助决策
  20. js 格式化中国标准时间为YY-MM-DD形式并回显时间

热门文章

  1. 鸿蒙系统2.0的编译
  2. 电商直播的直播类型有哪些?
  3. 泉城济南——三妮儿暴走一日游
  4. 关于云服务器搭建内网穿透(frp)
  5. 你真的懂iOS的异常捕获吗?
  6. hdu 2502月之数
  7. 制作自己的openwrt刷机包_openwrt刷机教程
  8. 51nod1538: 一道难题(特征多项式+多项式取模/求逆)
  9. uni-app 学习笔记(三)uni-app中的各种引用
  10. “蔚来杯“2022牛客暑期多校训练营5 A题: Don‘t Starve