我有一个Android应用程序可以进行运动检测和视频录制。它支持Camera和Camera2 API,以提供向后兼容性。我正在使用带有Camera2 API的ImageReader来进行运动检测。我目前正在请求JPEG格式图像,这非常慢。我知道请求YUV图像会更快,但YUV格式是否正确取决于使用的设备?我只想在放弃优化之前检查一下。
答案 0 :(得分:1)
所有设备都支持旧相机API的NV21和YV12格式(自API 12起),而对于camera2,所有设备都支持YUV_420_888。
YUV_420_888是一种灵活的YUV格式,因此它可以表示多种基础格式(包括NV21和YV12)。因此,您需要检查ImageReader图像中的像素和行距,以确保您正确读取3个数据平面。
如果你需要全帧速率,你需要在YUV中工作 - JPEG有很多编码开销,一般不会比2-10fps快,而YUV至少在预览分辨率下以30fps运行。
答案 1 :(得分:0)
我通过仅使用亮度(Y)值解决了这个问题,其格式在设备之间不变。出于运动检测的目的,黑白图像很好。这也解决了API Level 21上的问题,其中使用ImageReader时缺少部分U和V数据。