Android 640x360(360p)摄像机分辨率

Android 640x360(360p)摄像机分辨率,android,android-camera2,webrtc-android,Android,Android Camera2,Webrtc Android,在我的Android应用程序中,我想使用16:9分辨率进行摄像头预览,并通过WebRTC呼叫进行传输 希望使用360p(640x360),因为它很普通&传输时不需要高比特率 我使用的是Camera2API。作为最佳实践,我首先确定了设备上支持的分辨率列表,以检查是否支持360p。验证后,我继续创建cameraCapturesession 但这种检查在某些设备上失败了——Real Me 5 Pro、Redmi Note 7S、Redmi Note 7(所有运行android版本>=9) 虽然它似乎

在我的Android应用程序中,我想使用16:9分辨率进行摄像头预览,并通过WebRTC呼叫进行传输 希望使用360p(640x360),因为它很普通&传输时不需要高比特率

我使用的是Camera2API。作为最佳实践,我首先确定了设备上支持的分辨率列表,以检查是否支持360p。验证后,我继续创建cameraCapturesession

但这种检查在某些设备上失败了——Real Me 5 Pro、Redmi Note 7S、Redmi Note 7(所有运行android版本>=9) 虽然它似乎是一种流行的分辨率,但360p在这些设备支持的分辨率列表中不可用

列表通过cameraCharacteristics.get(cameraCharacteristics.SCALER\u STREAM\u CONFIGURATION\u MAP)获取。getOutputSizes(SurfaceTexture.class) getOutputSizes(ImageFormat.JPEG)也不能使用它

当我在不验证支持的分辨率的情况下强制创建640*360的cameraCaptureSession时,它实际上起了作用——它能够捕获640x360的分辨率。看起来设备摄像头实际上支持它,但在从cameraCharacteristics获取的列表中不可用

我假设我无法在不进行检查的情况下强制执行此解决方案,因为它可能在某些设备中不起作用,并将引发异常/崩溃 我想通过为360p选择最接近的匹配来添加一个后备方案-要么必须妥协16:9,要么必须选择1280x720-传输时需要更高的比特率

我认为360p是一种std解决方案——为什么它没有被列为受支持的解决方案,但在强制执行时实际起作用? 根据我对doc的理解,SCALER\u STREAM\u CONFIGURATION\u MAP应该返回硬件支持的所有分辨率列表
我遗漏了什么吗?请建议解决方案或解决方法

16:9 at 640x360在现代移动相机上并没有太多使用,因为它的分辨率太低了。720p大约是人们希望录制视频的最低尺寸,因此支持的尺寸可以反映这一点

但是,640x480(4:3 VGA)保证受支持,因此安全的做法是使用该选项,如果希望获得16:9,则进行裁剪

如果没有列出,那么假设大小可以工作是非常危险的——它可能会,或者可能会被拉伸,或者它可能会工作,但是如果您添加一些其他输出,它可能会崩溃。所有这些都是特定于设备的,所以你无法提前知道,而一些新设备可能会失败。所以我一点也不推荐