小编Gui*_*ume的帖子


Android Camera2 RAW 流媒体

我对 Android 很陌生,并试图:

  • 从相机流式传输原始数据 (ImageFormat RAW_SENSOR)
  • 处理原始数据
  • 以交互方式显示处理结果

似乎原始数据捕获仅在静态捕获模式下可用。这样对吗 ?

如果是这样,是否可以对 RAW 图像执行重复的 CaptureRequests ?使用 13MP 传感器可以获得什么样的性能?任何参考代码?

提前谢谢了,

纪尧姆

编辑

这是我到目前为止所做的:

  • 创建渲染到 SurfaceTexture 的预览捕获
  • 在 onSurfaceTextureUpdated() 中计算/更新帧率

    问题:

    • 在 onSurfaceTextureUpdated() 中计算帧率可以吗?
    • 我试图为 texture.setDefaultBufferSize() 设置不同的尺寸,但它对帧率没有影响。这正常吗?
  • 将原始 ImageReader 的表面添加到 cameraDevice.createCaptureSession()

  • 向 cameraCaptureSessions.setRepeatingRequest() 添加回调
  • 在回调的 onCaptureCompleted() 中,每 N 帧添加一个 captureRawImage() 调用。
  • captureRawImage() 创建静态图像捕获。
  • 将 setOnImageAvailableListener() 添加到原始 ImageReader 以对原始图像做一些有用的事情。

原始分辨率为 4208x3120

最小帧持续时间为 33ms

停顿时间为 200 毫秒

我仅为预览获得的帧速率约为 25-30 fps。

我在预览和启用每帧原始捕获时获得的帧速率约为 15 fps。

我收到一些“ImageReader_JNI:无法获取缓冲区项,很可能客户端试图获取超过 maxImages 个缓冲区”的消息,即使我每 100 帧进行一次原始捕获。

我很想得到一些反馈:

  • 这是否是做我想做的事情的正确方法。
  • 如果效率更高,我如何切换到突发捕获而不是每 N 帧静止图像。
  • 这些初始数字是否有意义。 …

performance android android-camera2

4
推荐指数
1
解决办法
4165
查看次数