dam*_*man 4 api camera android
这是关于 Android 的 Camera2 API。由于捕获结果和输出帧是异步产生的,因此可以在实际帧之前获得捕获结果。是否有一种将生成的帧与相应的捕获结果相关联的好方法?
假设您正在谈论发送到ImageReader或SurfaceTexture捕获时的帧(如无处不在的camera2basic示例),诀窍是比较识别图像的唯一时间戳。
TotalCaptureResult在您CameraCaptureSession.CaptureCallback的onCaptureComplete(...)通话中可用时将其保存在可访问的地方。
然后,当实际图像可通过您的ImageReader.OnAvailableListenerorSurfaceTexture.OnFrameAvailableListener获得时,获取图像的时间戳:
Long imageTimestamp = Long.valueOf(reader.acquireNextImage().getTimestamp()); 或者
Long imageTimestamp = Long.valueOf(surfaceTexture.getTimestamp()), 分别。
imageTimestamp.equals(totalCaptureResult.get(CaptureResult.SENSOR_TIMESTAMP));笔记:
时间戳可能不是您设备的实际真实系统时间戳,但它保证唯一且单调递增,因此它可以用作 ID。
如果您将图像发送到 aSurfaceHolder或其他东西,那么您就不走运了,因为只有像素信息被发送,而不是Image对象中存在的时间戳。我不确定您可以发送帧的其他地方,例如,MediaRecorder或Allocation,但我认为不是。
TotalCaptureResult由于您注意到的异步性质,您可能需要在生成时将每个新添加到不断增长的集合中,然后将传入图像的时间戳与所有这些进行比较。我会让你想出如何做到这一点,因为你认为合适。
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |