如何解决640x360(360p) 摄像头分辨率
在我的 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 应返回硬件支持的详尽分辨率列表 我错过了什么吗?请提出解决方案或解决方法
解决方法
640x360 的 16:9 在现代移动相机上的使用率并不高,因为它的分辨率太低了。 720p 大约是人们想要录制视频的最低尺寸,因此这会反映在支持的尺寸中。
但是,保证支持 640x480 (4:3 VGA),因此安全的做法是使用它并裁剪,如果您想获得 16:9。
假设未列出的大小会起作用是非常危险的 - 它可能会或可能会被拉伸,或者它可能会起作用但如果您添加一些其他输出它可能会倒塌。所有这些都将是特定于设备的,因此您不会提前知道,并且某些新设备可能会失败。所以我完全不推荐它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。