Android Camera2 API 质量问题

Android Camera2 API quality issue

我目前正在组装一个录制视频的应用程序。目标硬件支持 1080p@30fps。当我从本机相机应用程序录制视频时,我得到了一些不错的 1080p 视频 @ 30fps。

但是,在我的应用程序中,我加载了 QUALITY_HIGH 配置文件...

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

profile.videoFrameWidth = 1920

profile.videoFrameHeight = 1080

mMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);.

然后我得到这个错误...

Surface with size (w=1920, h=1080) and format 0x1 is not valid, size not in valid set: [1280x960, 1280x720, 960x720, 960x540, 864x480, 720x480, 768x432, 640x480, 320x240, 176x144]

有谁知道为什么 Camera2 API 似乎阻止我充分发挥手机的潜力?

很可能,通过 camera2 API 报告的摄像头处于 LEGACY 级别;这意味着它们 运行 通过 Android 相机 HAL(硬件抽象层)旧版本之上的兼容层。

由于旧 HAL 和 camera2 之间的差异,某些用例在此兼容模式下的功能可能会降低。

由于 camera2 对于给定格式的所有用例都需要相同的分辨率集,因此如果它 只能 用于视频录制,则不会公开尺寸。不幸的是,旧版 HAL 可能会发生这种情况。

在此类设备上,您可能必须使用已弃用的相机 API 才能获得可用的最高分辨率。