如何在 Android camera2 API 中同时配置前后两个摄像头?

Posted

技术标签:

【中文标题】如何在 Android camera2 API 中同时配置前后两个摄像头?【英文标题】:How to configure front and back both cameras simultaneously in Android camera2 API? 【发布时间】:2019-06-27 19:07:45 【问题描述】:

我想将前后两个摄像头配置到 android camera2 API 中,以同时从两个摄像头拍摄照片和视频,我创建了 2 个纹理视图,当我打开一个摄像头(正面或背面)时,我的代码正在运行很好,但每当我试图同时打开两个摄像头时,代码在创建会话时中断,我得到 cameraAccessException :configure stream : method not implimented。 我想将前后摄像头捕获的图像保存为一张图像,并将两个视频保存为一个视频。 伙计们,如果您能提供一些示例代码或一些示例链接,将会非常有帮助。

我正在使用一加 6,我最近下载了一个应用程序“后置双摄像头”,通过使用这个我可以同时从前后两个摄像头拍摄图像,所以如果有人想建议没有硬件支持,我认为它可能对其他手机有效,但就我而言,我认为我在编码方面遗漏了一些东西,直到现在从谷歌搜索来看,第二台相机的会话创建似乎存在一些问题,我调试了我的代码,在创建第二个相机会话期间它失败了,所以如果您对此有任何想法,请分享。

谢谢 拉克什

【问题讨论】:

Using both front and back cameras simultaneously androidUsing both cameras on android: “Fail to connect to camera service”。最重要的是,这适用于某些具有双 ISP(硬件限制)并允许在软件中使用的设备(例如,三星手机会阻止第三方应用程序使用此功能)。 嗨@alex,感谢您的回复,我正在使用一加6,我最近下载了一个应用程序“双摄像头后置摄像头”,通过使用它我可以从正面和背面捕捉图像同时使用相机,所以我认为它可能对其他手机有效,但对于我的情况,我认为我遗漏了一些东西,直到现在从谷歌搜索来看,第二台相机的会话创建似乎存在一些问题,我调试了我的代码,在创建第二个相机会话期间它失败了,所以如果您对此有任何想法,请分享。谢谢 嗨,Rakesh,从您的更新中可以清楚地看出该设备能够捕获两张照片。这意味着您的代码必须在某个地方修复。正确处理两个同时流水线需要仔细编码,正如 Eddy 在他的回答中提到的,并非所有相机分辨率和模式都可以这样使用。请注意,系统不会为您在一个视频中记录两个流,您必须以编程方式将两个帧拼接在一起。而且这些框架不会同时可用。 你有解决办法吗? 【参考方案1】:

相机 API 可以使用它,但大多数 Android 设备没有足够的硬件资源来同时运行两个相机,因此在尝试打开第二个相机时通常会出错。

两个图像传感器通常连接到同一个图像信号处理器 (ISP),并且该 ISP 一次只能操作一个摄像头。一些高端设备的 ISP 具有多个处理管道,理论上可以一次运行多个摄像头,但它们通常需要使用多个管道来处理主(后)摄像头的高级功能或非常高的分辨率。 因此,在这些设备上,可以同时使用多个摄像头,但不能达到最大分辨率或其他类似限制。

一些制造商在他们自己的相机应用程序中包含多相机功能,因为他们确切地知道限制是什么,并且可以编写应用程序代码以在其中工作。由于担心性能、热限制,或者只是没有时间验证他们在自己的应用中实施的确切用例,他们可能不会为普通应用提供多摄像头。

Android 相机 API 目前无法查询是否可以同时使用多个相机,或者如果可以,有什么限制。所以你唯一能做的就是尝试,并在不可行的情况下处理错误。

【讨论】:

嗨 Eddy,谢谢您的回复,我正在使用一加 6,我最近下载了一个应用程序“后置双摄像头”,通过使用它,我可以从前后两个摄像头拍摄图像同时,所以我认为它可能对其他手机有效,但对于我的情况,我认为我遗漏了一些东西,直到现在从谷歌搜索来看,第二台相机的会话创建似乎存在一些问题,我调试了我的代码,在创建第二个相机会话期间它失败了,所以如果您对此有任何想法,请分享。谢谢 嗨,Eddy,我看到了你对这篇帖子“***.com/questions/46347452/…”的回复,你提到如果我使用相同的纹理视图,创建第二个设备的会话失败,但即使在那时我也使用不同的纹理视图我的第二台相机的会话创建失败,所以请提供一些提示或代码链接以提供帮助。

以上是关于如何在 Android camera2 API 中同时配置前后两个摄像头?的主要内容,如果未能解决你的问题,请参考以下文章

如何实现RTMP推送Android Camera2数据

如何在 Android camera2 API 中同时配置前后两个摄像头?

Android:如何检查设备是不是实现了 Camera2 api 功能?

如何在android studio中获取camera2 api中的每一帧,例如camera api中的PreviewCallback和camerax中的ImageAnalysis.Analyzer?

Android Camera2 API:捕获视频而不预览

如何实现Android平台GB28181设备对接Camera2数据