SurfaceTexture上的Android相机预览



这是我的场景:当有人在锁定屏幕中输入错误的密码时,我正在尝试从前置摄像头拍照。基本上,我需要能够在没有预览的情况下从前凸轮中拍照。

经过多次谷歌搜索,我发现这样做的方法是opengl和SurfaceTexture。您将相机预览定向到表面纹理,然后以某种方式从该纹理中提取图片。我从以下资源中发现了这一点:

  1. https://stackoverflow.com/a/10776349/902572(建议1)
  2. http://www.freelancer.com/projects/Android-opengl/Android-OpenGL-App-Access-Raw.html,与 (1) 相同
  3. https://groups.google.com/forum/#!topic/android-developers/U5RXFGpAHPE(见罗曼在11年12月22日的帖子)

我明白要做什么,但是由于我是opengl的新手,因此无法将它们正确放入代码中。

CameraToMpegTest 示例包含您需要的大部分内容,尽管它远远超出了您的用例(它将一系列预览帧录制为视频)。

您需要的其余部分在ExtractMpegFramesTest中。 特别是,您希望呈现到屏幕外的 pbuffer(而不是 MediaCodec 编码器输入图面),并且可以使用 saveFrame() 将 pbuffer 内容另存为 PNG 文件。

以上是作为小型"无头"测试用例编写的。 您可以在 Grafika 的完整应用程序中看到类似的代码。

最新更新