我目前正在整理一个记录一些视频的应用程序。目标硬件支持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来访问可用的最大分辨率。