问题描述
在我的 Android 应用中,我想使用 16:9 分辨率进行相机预览并通过 WebRTC 调用传输 想要使用 360p (640x360),因为它很常见并且不需要高比特率来传输
我正在使用 Camera2 API。作为最佳实践,我首先确定设备上支持的分辨率列表,以检查是否支持 360p。验证后,我继续创建 cameraCapturesession
但此检查在某些设备上失败 - Real Me 5 Pro、Redmi Note 7S、redmi note 7(所有运行的 android 版本 >=9) 尽管它似乎是一种流行的分辨率,但这些设备支持的分辨率列表中并未提供 360p
列表通过 cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(SurfaceTexture.class) 获取 它也不适用于 getOutputSizes(ImageFormat.JPEG)
当我在没有验证支持的分辨率的情况下强制创建 640*360 的 cameraCaptureSession 时,它确实有效 - 它能够捕获 640x360 分辨率。看起来设备相机实际上支持它,但在从 cameraCharacteristics 获取的列表中不可用。
我认为我无法在不进行检查的情况下强制执行此解决方案 - 因为它可能无法在某些设备上运行并且会引发异常/崩溃 我想通过为 360p 选择最接近的匹配来添加后备 - 要么必须妥协 16:9,要么必须选择 1280x720 - 它需要更高的比特率来传输
我认为 360p 是标准分辨率 - 任何可能的原因为什么它没有被列为受支持,但在强制时实际上可以工作? 根据我对文档的理解,SCALER_STREAM_CONFIGURATION_MAP 应返回硬件支持的详尽分辨率列表 我错过了什么吗?请提出解决方案或解决方法
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)