我正在尝试修改基本的Camera2 API示例(https://github.com/googlesamples/android-Camera2Basic),以便它每x秒拍摄一张图片(然后在后台线程上处理它;我甚至不需要将图像保存到磁盘上),同时显示平滑的预览。不幸的是,在捕获会话上调用capture()会使预览冻结一两秒钟,从而导致用户体验不佳。
是否有一种直接到达预览面并读取图像字节的方法?我不在乎图像的质量,流畅的UX是优先考虑的。
发布于 2018-07-02 20:39:56
如果相机设备是遗赠-level设备,这是不幸的期望。
即使对于有限的设备,相机也必须支持俘获功能,以保证快速的全分辨率捕获。所有的全级别或更好的设备都支持BURST_CAPTURE.
然而,即使在性能较低的设备上,通常也可以在视频记录分辨率上平稳地捕获未压缩的YUV帧。这意味着将具有YUV_420_888格式的YUV_420_888添加到会话配置中,然后处理由此产生的图像。不幸的是,遗留设备上的JPEGs总是很慢,而且一些遗留设备也没有足够的CPU能力来平稳地生成YUV数据(因为必须有一些转换)。
有关更多细节,您可以检查StreamConfigurationMap的输出,并查看哪些输出YUV分辨率在1/30的最低帧时间内运行;这些应该可以保证有限的或更好的设备的顺利运行。
https://stackoverflow.com/questions/51139091
复制相似问题