Android Camera2基础API

编码器

我正在从这里阅读有关Android Camera2 API的代码:https : //github.com/googlesamples/android-Camera2Basic

它在以下方面令人困惑:https : //github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java#L570-L574

PreviewRequest构建器仅添加表面(即要显示的TextureView)作为目标。但是以下行实际上将两者都添加为目标。据我了解,这不应该在预览过程中触发“ OnImageAvailable” Lisenter,不是吗?那么,为什么要在此处添加图像阅读器的表面呢?

我试图在此处移除此imagereader的表面,但是当我真的要捕获图像时出现错误.....

太混乱了!!!

rcsumner

您需要声明Surface创建图像时可能会将图像数据发送到的所有输出CameraCaptureSession这就是框架设计的方式。

每当创建时CaptureRequest,您都将添加目标输出Surface列表)。这是捕获的帧中的图像数据所去的地方-它可能Surface与aTextureView用于显示,与aImageReader用于保存或与aAllocation用于处理等相关联。(Surface实际上,A只是可以接收数据输出的缓冲区缓冲区所关联的对象的类型决定了如何访问/处理数据。)

您不必将数据从每个帧发送到所有已注册Surface的,但必须将其发送到其中的一个子集。如果在创建时未向其注册,则不能将aSurface作为目标添加可以,但是将其传递给会话将导致崩溃,所以请不要这样做。CaptureRequestCameraCaptureSession

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章