Camera2 API视频录制:如何获取可用视频分辨率?
Camera2 API获取设备支持的视频分辨率两种实现方案
Hey,针对你用Camera2 API做视频录制时需要获取设备支持的视频分辨率列表的需求,这里有两种经过验证的靠谱实现方式,给你拆解清楚:
方式一:通过CameraCharacteristics的输出配置直接提取
这种方式最为直接,从相机的特性参数里直接拿到支持MediaRecorder输出的分辨率集合:
// 这里的map是从CameraCharacteristics中获取的SCALER_STREAM_CONFIGURATION_MAP List<android.util.Size> resolutions = Arrays.asList(map.getOutputSizes(MediaRecorder.class));
拿到这个resolutions列表后,你就可以直接遍历使用其中的分辨率参数了。
方式二:遍历CamcorderProfile配置文件提取
这种方式是通过遍历设备支持的Camcorder配置文件,从每个有效配置中提取对应的分辨率:
// CAMCORDER_PROFILES是你定义的包含所有目标配置文件ID的int数组,比如包含QUALITY_LOW、QUALITY_1080P等 for(int profileId : CAMCORDER_PROFILES) { if(CamcorderProfile.hasProfile(profileId)) { CamcorderProfile profile = CamcorderProfile.get(profileId); // 从配置文件中提取分辨率宽高 int videoWidth = profile.videoFrameWidth; int videoHeight = profile.videoFrameHeight; // 可以将这些分辨率收集起来,做下去重处理后使用 } }
注意事项:CAMCORDER_PROFILES需要你根据需求定义,比如包含CamcorderProfile.QUALITY_LOW、CamcorderProfile.QUALITY_HIGH、CamcorderProfile.QUALITY_2160P这类常用配置ID;遍历前一定要用hasProfile()判断设备是否支持该配置,避免抛出异常。
内容的提问来源于stack exchange,提问作者Tim Autin
相关产品推荐
相关产品推荐

