android CameraX.ImageInfo中的时间戳是什么?

muk1a3rh  于 2023-03-21  发布在  Android
关注(0)|答案(2)|浏览(177)

我想获取CameraX(分析仪)帧创建时间戳,但当我使用imageProxy.getImageInfo().getTimestamp()时,我得到的时间戳短于System.currentTimeMillis(),因此我认为它们不是相同的时间戳样式。
如何将其转换为正常的时间戳,如System.currentTimeMillis()的时间戳。
感谢@LexFerrinson,imageProxy.getImageInfo().getTimestamp()在这里https://developer.android.com/reference/androidx/camera/core/ImageInfo#getTimestamp(),但我不知道如何将其传输到currentTimeMillis。
例如:

2022-06-13 15:33:52.539 ... D/l:  System.currentTimeMillis():1,655,102,032,539
2022-06-13 15:33:52.578 ... D/l:  imageProxy.getImageInfo().getTimestamp():17,268,452,439,387

我从摄像机分析仪上得到了时间戳
cameraX版本:

implementation "androidx.camera:camera-camera2:1.1.0-alpha09"
    implementation "androidx.camera:camera-lifecycle:1.1.0-alpha09"
    implementation "androidx.camera:camera-view:1.0.0-alpha29"
    implementation "androidx.camera:camera-core:1.1.0-alpha29"

谢谢!

k97glaaz

k97glaaz1#

根据官方文档https://developer.android.com/reference/androidx/camera/core/ImageInfo#getTimestamp(),图像时间戳是一个长时间戳,这意味着与每个时间戳一样,它返回自1970年1月1日起的毫秒数。

iezvtpos

iezvtpos2#

正如文档所述,时间戳取决于提供图像的源。
如果您使用的是Camera2(我不确定CameraX是否可以使用Camera1),您必须检查您正在使用的相机的SENSOR_INFO_TIMESTAMP_SOURCE

  • 如果它返回UNKNOWN,那么除了时间戳是单调递增的之外,基本上可以对时间戳不做任何假设,因此只能将它们与同一摄像机提供的时间戳进行比较
  • 如果返回REALTIME,则时间戳的基数将与SystemClock.elapsedRealtimeNanos()相同

因此,您实际上不能使用其中任何一个来获得System.currentTimeMillis(),因为它是一个挂钟,不能保证是单调的。

相关问题