Android相机预览帧时间戳

有没有办法获取Android相机预览帧何时被捕获的时间戳?

  1. 没有Camera方法返回时间戳
  2. 您无法从本机代码访问相机
  3. 缓冲区大小不是静态的(取决于从摄像机获取的最小预览大小 – 何时以及方法是否正常工作)如果队列中有更多帧,则会有预览缓冲区被丢弃
  4. 设置的帧速率(再次,如果/当方法工作时)只是系统的提示,摄像机可以忽略该值。 相机返回的帧速率也是如此。

我正在实时进行一些繁重的image processing,并且加在一起时的小错误是一个真正的问题。

我知道这样做的唯一方法是使用SurfaceTexture而不是预览回调。

SurfaceTexture有一个getTimestamp()方法,它从一些未指定(但是恒定)的时间开始返回纳秒。

不幸的是,SurfaceTexture是一个OpenGL外部纹理,因此使用预览回调并不容易。

另一方面,它的CPU效率更高:预览回调在软件中进行颜色转换和图像整形,而人们可以使用OpenGL ES2function在GPU上进行大量的image processing。