CameraCharacteristics不会返回所有可用的分辨率

问题描述 投票:0回答:1

我尝试使用新的camera2 API拍照时使用最大分辨率。首先,我尝试使用以下代码获得可用的分辨率:

字符:

CameraCharacteristics characteristics = mManager.getCameraCharacteristics(mCameraId);
        StreamConfigurationMap streamMap =
                characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
        if (streamMap == null) {
            throw new RuntimeException("StreamConfigurationMap is null. Should not happen.");
        }
 streamMap.getOutputSizes(ImageFormat.*); // I replaced the star with all possible values 

问题是,这会返回以下分辨率列表:[1280x960, 1088x1088, 640x480, 352x288, 176x144, 3264x1836, 3264x2448, 1280x720, 960x720, 720x480, 320x240, 1920x1080, 2400x1080, 1440x1080, 2576x1932, 3264x1468](最大为3264x2448)

然而,当使用普通相机应用程序(Samsung A70)时,图片分辨率却出奇的大,即:4032x3024

在调查期间,我尝试从商店下载许多相机应用程序,以查看在这种情况下的最大分辨率,并且所有相机应用程序都返回了与我相同的分辨率,即:3264x2448

我的问题是Stock Camera App如何获得比我们其他人更大的分辨率?

android android-camera2
1个回答
0
投票

您是否也检查了StreamConfigurationMap#getHighResolutionOutputSizes()的输出?

某些设备在此处列出最高分辨率,因为它们无法维持BURST_CAPTURE功能所保证的> = 20 fps输出速率,如果要使用FULL级设备,则正常大小列表上的所有大小都需要此功能。只要以正常大小列出了至少8 MP,设备就符合BURST_CAPTURE规则,并且可以在getHighResolutionOutputSizes下列出更高的分辨率。

© www.soinside.com 2019 - 2024. All rights reserved.