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 才能获得可用的最高分辨率。
我目前正在组装一个录制视频的应用程序。目标硬件支持 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 才能获得可用的最高分辨率。