我正在尝试使用绑定到2个独立SurfaceView的2个Surface Holder对象。 我正在为后置摄像头做一台Camera.Open(0),为前面做Camera.Open(1)。 无论我打算先打开哪个,我都可以得到一个完美的预览,但我无法同时打开两个相机,即使我为每个相机使用单独的SurfaceViews和SurfaceHolders。
在Android下完成此操作是不可能的?我看过一些帖子暗示它不可能,或者它依赖于电话硬件,但没有具体解释原因。
有人可以解释为什么Android似乎不支持这个吗? 如果支持,有人可以建议同时打开两个相机的正确方法吗?
我也看到一些建议,应该可以使用OpenCV。如果是这样,有人可以提供一个示例或类似的链接吗?
谢谢和问候,
斯蒂德。
答案 0 :(得分:2)
这是可能的,因为我在Nexus 6上完成了这项工作,甚至在使用Camera1 API时同时录制来自两台相机的视频。但是,它仅限于少数设备。
任何不受支持的设备都应在第二次Camera.open()调用期间出错。似乎每个硬件制造商都提供了Camera API的不同实现。如果相机不允许,您可以非常轻松地尝试/捕获异常。
答案 1 :(得分:0)
这可以在某些手机和几乎所有新手机上实现。我发现使用Snapdragon 801和更高芯片组的设备支持此功能(OnePlus 1,HTC M8等)。这是2014年的某个地方。
这完全取决于硬件/制造商,您应该在真实设备上进行测试。
另请注意,YUV中的第一个Camera API输出,因此如果您想使用图像/视频,则必须处理此转换为其他格式;您可以在SurfaceView上实时显示它,但保存到图片/视频我建议您保存YUV并稍后/在单独的线程上转换,尽管您可以在单独的线程上实时保存和转换单个图像。
对于迟到的回答感到抱歉,但我希望您或其他人可以使用此信息!