此问题针对的是高速视频会话,而不是普通视频会话。
目前在 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返回的高速大小列表中找到一个,但我想知道是否有更可靠的方法,或者一个很好的例子我可以看看。