【发布时间】:2015-12-16 12:06:37
【问题描述】:
我需要在 SurfaceView 中显示相机预览,延迟大约 5 秒。 所以,我认为我需要以某种方式从相机中捕获帧,然后再将它们放入 SurfaceView 并将它们放入缓冲区,然后当缓冲区已满时,从缓冲区获取存储的帧并将它们显示给 SurfaceView。
但我不知道如何在 SurfaceView 上绘制帧之前获取它们。
我只知道如何从 PreviewCallback 中获取帧,onPreviewFrame(byte[] data, Camera camera) 方法:
PreviewCallback previewCb = new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
// byte[] data is the Frame
}
};
但我不知道如何直接从相机获取帧,将它们存储到缓冲区,然后将帧从缓冲区恢复到 SurfaceView。
非常感谢任何帮助。
【问题讨论】:
-
似乎您已经知道答案了——使用预览回调捕获帧,然后将帧渲染到 SurfaceView,而不是直接将预览提供给 SurfaceView。你仍然需要一个预览 Surface,你可以使用 SurfaceTexture;参见例如stackoverflow.com/questions/22462360/…
-
非常感谢!它帮助我更好地理解了这个问题,我终于找到了一些非常好的例子,正是我在 GitHub 上寻找的。span>
标签: android android-camera surfaceview