UVC 协议

  • 简介
  • Descriptor(描述符)
    • 设备 & 配置描述符
    • 接口关联描述符
    • 视频控制接口描述符
    • 视频流接口描述符
      • Alternate setting 0
      • Alternate setting 1
    • 字符串描述符(自定义参数)
  • Requests
    • Standard Requests
    • Class-specific Requests
      • VideoControl
      • VideoStreaming Requests

简介

  1. UVC 属于USB设备类规范,用于USB接口的视频设备的一个统一的数据交换规范
  2. UVC 设备:一个 VC Interface(视频控制接口),一个或多个 VS Interface(视频流接口)
    (1)VC Interface 进行配置操控,设置UVC设备进入不同的功能状态
    (2)VS Interface 负责视频数据流的传输
  3. UVC的拓扑结构抽象为几个主要的硬件功能模块:
    (1)input Terminal: 作为数据流入video function的接收器,数据源头
    (2)Output Terminl: Video Function视频信息流出的出口
    (3)camera Terminl: 控制视频流传输中的设备特性: 扫描模式,自动曝光模式,曝光时间,聚焦,缩放/变焦,感兴趣区域等。
    (4)Selector Unit:控制图像数据采集源的切换和选择
    (5)Processing Unit:对图像数据进行加工的单元
       [1] Usr Controls: 图像参数(亮度,对比度,锐度等),伽马,增益,数字放大等
       [2] Auto Controls: 白平衡色温, 白平衡组件,背光补偿
       [3] Other:电源线频率,模拟视频标准,模拟视频死锁状态
    (6)Extension Unit:为了特定供应商添加规范而提供的单元
  4. 视频接口集合 (Interface Association Descriptor)
    (1)UVC设备必须使用一个IAD来描述包含VC(接口0)和VS(接口1)的Interfaces集合。

    (2)UVC 一般包含两个IAD:视频输入设备,音频输入设备;
  5. VC Interface (视频控制接口)
    (1)功能:主要控制UVC功能中的Units和Terminals,通过对不同的Units和Terminals发下不同的指令,从而影响UVC设备的当前工作状态;
    (2)Host端对UVC设备的操纵控制命令都是此Interface完成的。
  6. VS Interface (视频流接口)
    (1)负责传输UVC设备的Video数据到Host端
    (2)每个Interface对应一种专门的数据格式,支持n种格式则需要实现n个VS;

Descriptor(描述符)

(1)描述USB设备性能的数据结构,与设备类相关的信息都是主机向设备获取描述符来得到的。
(2)描述符实测信息打印

设备 & 配置描述符

接口关联描述符

视频控制接口描述符

  • 标准 VC 接口描述符

  • 特定类

  • 输入终端(Camera)

  • 输入终端(Media Transport)

  • 选择单元

  • 输出终端

  • 标准中断端点

  • 特定类中断端点

视频流接口描述符

Alternate setting 0

  • 标准VS接口

  • 特定类Input Header

  • 特定类Output Header

  • 特定类格式

  • 特定类帧

  • 特定类静止图片帧

  • 特定类色彩空间 0x06 0x24

  • 标准批量端点

Alternate setting 1

  • 标准VS接口 (参考 setting 0 的信息)
  • 标准同步视频数据端点
  • 标准批量端点 (参考 setting 0 的信息)

字符串描述符(自定义参数)

  • 标准字符串0:包含 LANGIDs 列表
  • 字符串1:制造商 (参考上图)
  • 字符串2,4:产品 (参考上图)
  • 字符串3:序列号 (参考上图)

Requests

Standard Requests

  • Set Interface Requests

Class-specific Requests

VideoControl

  • Set/Get Selector Control Request

  • Set/Get Zoom (Absolute) Control Request

  • Set/Get Transport Control Request (参考上图)

  • Set/Get Media Information Control Request (参考上图)

  • Set/Get Time Code Information Control Request (参考上图)

  • Set/Get Power Mode Control Request (参考上图)

  • Request Error Code Control (参考上图)

VideoStreaming Requests

  • Set/Get Video Probe Control Request

  • Set/Get Video Commit Control Request

备注:uvc 是传输协议,通过 RNDIS 方式升级

流媒体 - UVC 协议相关推荐

  1. linux下uvc协议访问usb摄像头,Ubuntu调用USB摄像头

    FreeBSD Webcam:传送门 1 查看摄像头USB驱动 CMD ls /dev/v* Result /dev/vcs /dev/vcs4 /dev/vcsa1 /dev/vcsa5 /dev/ ...

  2. 流媒体-RTMP协议-rtmpdump-flv封装解析(一)

    流媒体-RTMP协议-rtmpdump-flv封装解析(一) 流媒体-RTMP协议-librtmp库学习(二) 流媒体-RTMP协议-librtmp库学习-c++多线程实现rtmp推流flv文件(三) ...

  3. 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)

    流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一) 流媒体-H264协议-编码-x264学习-主要结构体(二) 流媒体-H264协议-编码-x264学习-主要函数(三) 流 ...

  4. 技术博客|第15期:流媒体传输协议简介 - HLS协议

    在Hulu及Disney+流媒体平台上,自适应流媒体传输技术被广泛使用,它可以根据用户的网络情况相应地调整视频码率,为用户带来良好的观看体验.为了实现这一点,视频将被编码成不同码率的版本,并且在每个版 ...

  5. 流媒体传输协议浅析(一)

    一.常见的流媒体协议 关于流媒体传输协议,涉及到不同领域,不同业务场景,种类众多,下面一张图是目前常见的流媒体协议. 常见的流媒体传输协议 1)从交互方式来看,流媒体分为点播(VOD)和直播(LIVE ...

  6. 流媒体封装格式和流媒体传输协议介绍

    1.流媒体封装格式介绍 一个流媒体文件由音频流和视频流两种数据组成. h264/mpeg4等就是视频流编码格式,视频流一般以帧的单位存在,i帧.p帧.b帧,帧率(frame rate)是每秒显示帧数( ...

  7. USB UVC协议分析

    USB描述符分析软件 USB Device Viewer.USBlyzer.BusHound. #define USB_DT_DEVICE 0x01 #define USB_DT_CONFIG    ...

  8. 1.[RK3288][Android6.0] USB UVC 协议简结

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 UVC协议官方文档: http://www.usb.org/developers/docs/dev ...

  9. 最详细的流媒体传输协议-rtsp协议详解

    流媒体传输协议-rtsp协议详解 参阅:RTSP协议详解和分析从零开始写一个RTSP服务器(一)RTSP协议讲解关于RTSP_RTP_RTCP协议的深刻初步介绍 rtsp RTSP出现以前,最热的大概 ...

  10. Android 外接基于UVC协议的摄像头并实现预览

    先来一段从网上找到的理论知识,对UVC协议有初步的印象 UVC协议:USB Video Class,USB视频类,是一种为USB视频捕获设备定义的协议标准. Android 平台支持使用即插即用的 U ...

最新文章

  1. HTML基础部分(1)字体,照片,链接
  2. python框架flask系列(2),Python的Web框架之Flask(2)
  3. mysql pmm进程_mysql性能监控软件pmm
  4. win10下载python失败_python,mysql_WIN10下载MySQL-python失败,python,mysql,windows - phpStudy
  5. oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?
  6. vb 字符串截取_VB进阶之玩转文件读写
  7. 51Nod 1046 A^B Mod C(日常复习快速幂)
  8. 13.Serving Frontend Files
  9. java 读取 dto_DTO 实现 service 和 controller 之间值传递的操作
  10. 机器学习(8):朴素贝叶斯
  11. android 模拟器 锁屏,锁屏桌面全模拟 Android 4.0伪装教程
  12. Jmetter并发测试工具使用笔记
  13. 算法技能树2-蓝桥杯-python实现测试次数(摔手机)-动态规划(DP)
  14. 大一下c语言笔记本电脑,大学新生用什么笔记本电脑好
  15. 翁恺老师C语言程序设计网课(THE END)
  16. 圣墟 第一百三十章 神转折
  17. 解决Error:All flavors must now belong to a named flavor dimension. Learn more at...
  18. 访问认证(三):Bearer
  19. 不确定性推理:可信度计算
  20. Ubuntu11.10 如何安装QQ?

热门文章

  1. 关于vs2008改变工程路径
  2. linux系统安装花生壳
  3. python 欧姆龙plc通信_二进制PLC通信校验和
  4. 卧槽,入职 3 天就“偷”代码,备份 6300 个 Python 脚本,不讲武德啊
  5. c语言 防止sql注入,c#如何防止sql注入?
  6. 优化算法——粒子群算法(PSO)
  7. 吉林大学超星学习通06 07 08
  8. java基础——java学习心得
  9. 基于Unity引擎的RPG3D项目开发笔录
  10. Photoshop cc 2019安装与破解(附资源)