android - CameraCharacteristics 不会返回所有可用的分辨率
问题描述
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)
然而,当使用股票相机应用程序(三星 A70)时,图片分辨率惊人地大,即:4032x3024
.
在调查期间,我尝试从商店下载许多相机应用程序,以查看在这种情况下的最大分辨率是多少,并且所有这些应用程序都返回与我相同的分辨率,即:3264x2448
.
我的问题是Stock Camera App如何获得比我们其他人更大的分辨率?
解决方案
您是否也检查了StreamConfigurationMap#getHighResolutionOutputSizes()的输出?
一些设备在此处列出了它们的最高分辨率,因为它们无法保持 BURST_CAPTURE 功能保证的 >= 20-fps 输出速率,如果您想要一个完整级别的设备,则正常尺寸列表中的所有尺寸都需要此功能。只要以正常大小列出至少 8 MP,设备就符合 BURST_CAPTURE 规则,并且可以在 getHighResolutionOutputSizes 下列出更高的分辨率。
推荐阅读
- python - 使用 scikit learn 进行线性回归的统计分析
- php - Symfony 4.1 application redirectes to an external URL in another machine
- mysql - 64 位整数实际上有限制吗?
- javascript - 如何在 ReactJs 中单击单选按钮时显示弹出窗口
- ios - 应用程序在运行 iOS 9.2.1 或更低版本的设备上崩溃(不是 P3 图像)
- android - 如何使用 scenform 获取 Google Measure App 等对象的高度
- java - 如何使用 JSoup 将自定义 HTML 替换为实际的 HTML 标签?
- unix - 使用 ocaml-cohttp Client.post 方法请求 HTTPS 服务器时如何调试 HANDSHAKE_FAILURE?(为什么我会收到这个错误?)
- c# - ASP.NET WebForms - 路由给出“页面未找到错误”
- qt - QNetworkReply 完成的信号槽未在 Windows 10 上发出