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