1. 介绍
最近接手了一波RK3399主板的设备调试任务。设备主板是没有自带系统相机功能而项目又需要支持两个摄像头。
下面分享一下我的经验,希望其他小伙伴碰见了相同问题时可以有一个参考。
例如:双USB摄像头插入后调用系统相机崩溃,预览界面左右镜像翻转了,拍照结果左右镜像翻转了,预览或者拍照时旋转了90°、180°等等情况。
下面介绍一下我的处理。
2. UVC Camera 加载 USB双摄像头
由于主板默认是没有摄像头的,所以一开始尝试时通过在主板USB口插入USB摄像头。
插入一个USB摄像头时,自带的系统相机可以正常调用该摄像头。但是同时插入两个USB摄像头后。系统相机启动就崩溃。
一度以为主板不支持双USB摄像头。但其实并不是不支持,而是调用摄像头时出现了冲突造成的崩溃。(系统相机App的版本问题)
直接使用Android CameraX库进行识别摄像头的时候,因为只能得到一个相机设备。还容易触发崩溃。
所以,当初放弃了CameraX库,而是通过:https://github.com/jiangdongguo/AndroidUSBCamera 进行手动加载USB相机。
这种方案的优势就在于USB摄像头是手动加载的,扩展性比较好。
但是性能没有直接CameraX库的性能高。
但是可自定义空间大。
3. CameraX 加载 USB双摄像头
RK3399 本身是支持多摄像头的。可以将USB摄像头进行配置,并分配为前置摄像头或后置摄像头的。
方法很简单:打开系统设置->显示->摄像头设置
然后在弹出的面板中进行设置哪个摄像头为前置,哪个摄像头为后置。
同时可以调整摄像头的预览以及拍照输出的旋转角度。同时也可以解决相机画面中镜像翻转的问题。
具体的配置效果图如下:
然后在右上角会弹出如下所示的设置菜单。我们按照需求进行设置即可。
配置完毕之后,我们就可以不用UVC协议来手动加载相机了,可以直接使用CameraX库进行获取前置摄像头或者后置摄像头了。
如果是设备有多个USB接口,那么我们还可以扩展更多的相机的支持。
这种方案,简单便捷。同时也不用处理各种相机的生命周期管理。在某些情况下这种方式会更方便一些。
评论区