此问题针对的是高速视频会话,而不是常规视频会话。
当前在Android Camera2 API中,要解析最佳预览尺寸,我使用目标视频输出尺寸作为参考,并使用以下方法返回的尺寸选择列表从中计算出最佳预览尺寸:
// SurfaceTexture.class to get the preview sizes supported by the surface
StreamConfigurationMap.getOutputSizes(SurfaceTexture.class);
从以下列表返回的列表中选择视频输出大小: StreamConfigurationMap.getHighSpeedVideoSizes();
通过从 SurfaceTexture.class 列表中选择尺寸,并与视频输出尺寸具有相同的宽高比,并且在1920x0180尺寸限制(即最大预览)范围内,可以计算预览尺寸尺寸由camera2 API保证。
请说所有这些,当使用createHighSpeedRequestList时,如果该方法发现传递给会话的任何表面都没有支持的高速尺寸中的某个尺寸,则此方法将失败,这也适用于预览图。请参阅以下资源: android.hardware.camera2.utils.SurfaceUtils.checkConstrainedHighSpeedSurfaces
问题是,为高速视频会话获取有效预览尺寸的最佳方法是什么?我不能依靠 SurfaceTexture.class 返回的选项列表,因为这些选项与高速会话无关。
我最好的猜测是,我应该遍历所有这些变量,只是找到 StreamConfigurationMap.getHighSpeedVideoSizes 返回的高速尺寸列表中的一个,但是我想知道是否存在一种更可靠的可靠方法,或者我可以看的一个很好的例子。
答案 0 :(得分:0)
在您的情况下,无需调用StreamConfigurationMap.getOutputSizes(SurfaceTexture.class)。从StreamConfigurationMap.getHighSpeedVideoSizes()获得的列表中的任何大小都将满足以前的条件。请注意,如果您选择某些特定的FPS,则可能不支持后一列表中的某些尺寸。通常,我们会选择最大的可用尺寸,但是如果您的要求允许较小的尺寸,那就去做吧:这可能会大大减少电池消耗并提高设备的响应速度。