【问题标题】:Android Camera2 RAW streamingAndroid Camera2 RAW 流式传输
【发布时间】: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


    【解决方案1】:

    是否支持 RAW 捕获,以及可以完成的速率都取决于设备。

    如果设备支持RAW capability,那么您可以使用 RAW_SENSOR 格式的 ImageReader 作为捕获目标。然后该格式也将在available output formats 中列出。您可以在 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 预览。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2012-03-15
      • 2011-12-19
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多