我是靠谱客的博主 伶俐画板,最近开发中收集的这篇文章主要介绍Android-多路摄像头实现总结(Camera - UVC),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原生Android-Camera类打开一个摄像头没有问题,打开多个会在open()的时候报错。

注意原生camera要在surface之后在open,否则会报错。也就是说不要直接在oncreate里open。(相机Open前要设置surface ,这个surface就是底层用来渲染预览画面的,如果surface 都没有create ,底层将无法渲染,我想这就是为什么open不了的原因吧)参考:android camera.open失败的问题-CSDN论坛

理论上,好像原生camera最大支持打开两个摄像头,可以参考这个代码去实现:

双camera同时打开_a87636764的专栏-CSDN博客_android 双camera

当然也可以看下面这个代码(比较全):

多个摄像头在一个Activity里显示_CrossFile_TMS的博客-CSDN博客

但实际打开第二个我就报错了,报错内容:

 W/CameraBase: An error occurred while connecting to camera: 1

java.lang.RuntimeException: Fail to connect to camera service

试了很多次都不行,果断放弃了原生Camera的思路,转向了UVC的方向:(下面详细写了,先膜拜一下orz)

可以看下这个大哥的实现:Android UCV 同时打开多路摄像头_yyfd2013的博客-CSDN博客_android同时打开多个摄像头

UVCCamera项目在open位置又报错了:解决UVCCamera项目报错:could not open camera:err=-1

参考地址:解决UVCCamera项目报错:could not open camera:err=-1 - 简书

———————————— 我是分界线 ————————————

我去,总算搞出来了,看了一天的源码,调了一天的bug。。。。。。

效果图如下:

主要参考了下面的项目:

UVC-Github项目源码地址:https://github.com/saki4510t/UVCCamera

然后能搜到的是下面这两个博客:

单摄像头github:https://github.com/jiangdongguo/AndroidUSBCamera

单摄像头CSDN:Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库_蒋东国的博客-CSDN博客_jiangdongguo

------------

多路摄像头github:https://github.com/yyfd2013zy/UvcCameraDemo

多路摄像头CSDN:Android UCV 同时打开多路摄像头_yyfd2013的博客-CSDN博客_android同时打开多个摄像头

------------

然后这篇文章是解析了代码,但我还是希望小伙伴们能自己去看源码,自己去消化,别人的始终不是自己的:

Android中多USB摄像头解决方案——UVCCamera - 简书

其中,学习的话我更偏向于多路摄像头那个项目,他用的是源码导入;而单摄像头的项目是作者自己封装了,并且我的直观感受是和源项目结构差不多,这样一封装层级结构更多了,查找源码找bug太复杂了。。。不过单摄像头的项目功能封装的比较多一些。

我的需求是多路摄像头的可视化 + 拍照,并且是IOT设备,所以倾向于多路摄像头项目。

没有不经历汗水就能拿到奖的人,资料和学习路线我都放上面了,剩下的坑要自己去趟了!

———————————— 我还是分界线 ————————————

环境:rk3288 5.1 海康摄像头

------------

填坑之路:

首先像这么复杂的项目导入肯定是编译不过。。。一定要看清楚原博主写的经验:

传送门:Android NDK下载(r10~r23b)_一个人像一支队伍-CSDN博客_ndk r21b   看了,和官网一样,墙内用户放心下。

项目配置好NDK路径(是项目,别把android studio改了。。),clean一下应该就没问题了。

项目跑起来之后,你会发现。。。是黑屏的。。。(一般是)

这个只能说自己的硬件,自己写日志慢慢调试吧,不同的摄像头和主板肯定不一样。项目的核心关键类是:UVCCamera

问题基本出现在下面几个方面:

1.分辨率。看源码,默认分辨率是640*480,要看你的摄像头支不支持,不支持的话会打开成功,但是黑屏。

2.首选FRAME_FORMAT_MJPEG,可以都换成这个试一试,如果不行,再换FRAME_FORMAT_YUYV。我是全部FRAME_FORMAT_MJPEG就可以了。

3.因为各种原因导致的open错误,可以看英文解释:

github:https://github.com/worlfChina/UVCCameraDemo

下载后请更换项目NDK为您本地r14版本。

最后

以上就是伶俐画板为你收集整理的Android-多路摄像头实现总结(Camera - UVC)的全部内容,希望文章能够帮你解决Android-多路摄像头实现总结(Camera - UVC)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部