【发布时间】:2017-08-04 20:48:36
【问题描述】:
我对 Android 非常陌生,正在尝试:
- 从相机流式传输原始数据 (ImageFormat RAW_SENSOR)
- 处理原始数据
- 以交互方式显示处理结果
似乎原始数据捕获仅在静止捕获模式下可用。这是正确的吗?
如果是这样,是否可以对 RAW 图像执行重复的 CaptureRequests ?使用 13MP 传感器可以获得什么样的性能?有参考代码吗?
非常感谢,
纪尧姆
编辑:
这是我到目前为止所做的:
- 创建渲染到 SurfaceTexture 的预览捕获
-
在 onSurfaceTextureUpdated() 中计算/更新帧率
问题:
- 可以在 onSurfaceTextureUpdated() 中计算帧率吗?
- 我尝试为 texture.setDefaultBufferSize() 设置不同的尺寸,但它对帧率没有影响。这正常吗?
将原始 ImageReader 的表面添加到 cameraDevice.createCaptureSession()
- 为 cameraCaptureSessions.setRepeatingRequest() 添加回调
- 在回调的 onCaptureCompleted() 中,每 N 帧添加一次 captureRawImage() 调用。
- captureRawImage() 创建静态图像捕获。
- 将 setOnImageAvailableListener() 添加到原始 ImageReader 以对原始图像执行一些有用的操作。
原始分辨率为 4208x3120
最小帧持续时间为 33 毫秒
停顿时间为 200 毫秒
我仅预览获得的帧速率约为 25-30 fps。
当我预览并启用每帧原始捕获时获得的帧速率约为 15 fps。
我收到一些“ImageReader_JNI:无法获取缓冲区项,很可能客户端试图获取超过 maxImages 缓冲区”的消息,即使我每 100 帧进行一次原始捕获。
我很想得到一些反馈:
- 这是否是做我想做的事情的正确方法。
- 如果效率更高的话,如何切换到突发捕获而不是每 N 帧静止图像。
- 这些初始数字是否有意义。
非常感谢,
纪尧姆
【问题讨论】:
标签: android performance android-camera2