UVC系列1-Android盒子控制云台摄像头系列

2024-06-01 06:18

本文主要是介绍UVC系列1-Android盒子控制云台摄像头系列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android作为host端控制云台摄像头整个实现过程中涉及了Android kernel底层UVC部分,Android kernel代码的编译,USB协议,Android JNI方面的知识。

刚开始项目提出这个需求的时候,想到的是通过Android原生的USB API 去控制外接的USB PTZ摄像头,因为大多数的云台摄像头支持pelco-d或是pelco-p协议,而Android提供的接口可以传递byte[]类型的参数过去,设想通过这种方式实现控制。现在回想起来这个方法真是too young to naive。因为Android kernel层是通过UVC(usb video class)协议取控制摄像头PTZ,需要走这一套逻辑才能实现。

由此思路开始转到通过Android UVC来控制摄像头转动,但是google了大大小小的网站没有人做过这个东西,侧面也在一定程度上说明了需求足够操蛋。UVC在Android的kernel层,但是怎么去验证这个东西呢,就想到了有Ubuntu,而Ubuntu上面有一个工具uvcdyctrl 可以输入对应的参数控制摄像头,于是通过这个工具验证了在linux下控制云台转动的可能性。

紧接着要解决的是如何把这个可能性移植到Android上,从前期的实践看,是需要查看kernel层的实现,kernel层的参数是否实现了相对和绝对的控制;如果kernel层实现了,怎么把这个实现传递到app层面,让app可以输入参数控制转动。

现在思路很清晰了,就是打通从kernel到app的通道,实现控制,将app层的控制指令传递到kernel,由kernel将控制字节传递到硬件。

接下来的文章是:

  • 1、探索Android UVC协议;

  • 2、研究UVC控制协议;

  • 3、定制Android kernel UVC部分支持相对和绝对参数;

  • 4、编写Android jni代码实现控制PTZ。

这篇关于UVC系列1-Android盒子控制云台摄像头系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020207

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视