SurfaceTexture上的Android相机预览

时间:2013-12-20 18:54:01

标签: android opengl-es android-camera

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

经过大量的谷歌搜索,我发现这样做的方法是opengl和SurfaceTexture。您将相机预览指向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. 相同
  4. https://groups.google.com/forum/#!topic/android-developers/U5RXFGpAHPE(参见Romain在12/22/11发表的文章)
  5. 我理解要做什么,但我无法正确地将它们放入代码中,因为我是opengl的新手。

1 个答案:

答案 0 :(得分:0)

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

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

以上是小型“无头”测试用例。您可以在Grafika中的完整应用中看到类似的代码。