Gui*_*ume 4 performance android android-camera2
我对 Android 很陌生,并试图:
似乎原始数据捕获仅在静态捕获模式下可用。这样对吗 ?
如果是这样,是否可以对 RAW 图像执行重复的 CaptureRequests ?使用 13MP 传感器可以获得什么样的性能?任何参考代码?
提前谢谢了,
纪尧姆
编辑:
这是我到目前为止所做的:
在 onSurfaceTextureUpdated() 中计算/更新帧率
问题:
将原始 ImageReader 的表面添加到 cameraDevice.createCaptureSession()
原始分辨率为 4208x3120
最小帧持续时间为 33ms
停顿时间为 200 毫秒
我仅为预览获得的帧速率约为 25-30 fps。
我在预览和启用每帧原始捕获时获得的帧速率约为 15 fps。
我收到一些“ImageReader_JNI:无法获取缓冲区项,很可能客户端试图获取超过 maxImages 个缓冲区”的消息,即使我每 100 帧进行一次原始捕获。
我很想得到一些反馈:
非常感谢,
纪尧姆
是否完全支持 RAW 捕获以及它可以完成的速率都取决于设备。
如果设备支持RAW 功能,那么您可以使用具有 RAW_SENSOR 格式的 ImageReader 作为捕获目标。格式也将列在可用的输出格式中。您可以在 RAW 功能表中的createCaptureSession文档中查看支持哪些类型的流组合。
要确定捕获 RAW 缓冲区的速度,请查看getOutputMinFrameDuration的输出,它告诉您在包含给定格式和分辨率组合的输出时的最大帧速率是多少。此外,getOutputStallDuration方法将告诉您在针对 RAW 输出的两个连续请求之间是否需要额外延迟以避免暂停预览。在一般情况下,不需要支持任何特定的 RAW 缓冲区输出速率。
但是,如果设备支持更高效的 RAW10 或 RAW12 格式,并且它支持BURST_CAPTURE功能,那么它保证支持以至少 20fps 的速率捕获这些格式。
您可以查看 Google camera2raw示例以获取基本的静止图像。但是,您当然可以连续捕获 RAW 缓冲区,而不是与 JPEG 缓冲区一起捕获。但在这种情况下,您的帧速率可能会非常低,为了保持预览帧速率,您可能希望每 N 个预览帧中只发出一个 RAW 捕获。
例如,如果 RAW_SENSOR 的停顿持续时间为 100 毫秒,但最小帧持续时间为 30 毫秒,您可以通过具有 (R+P),P,P,P,(R+P) 的捕获请求模式运行连续预览, P,P,P... 这样每个原始捕获的开始之间至少有 100 毫秒。这将为您提供 ~8fps RAW 和 30fps 预览。
| 归档时间: |
|
| 查看次数: |
4165 次 |
| 最近记录: |