在 Lenovo Tab4 8 上以 720p 录制
Record at 720p on Lenovo Tab4 8
我有一个 运行 视频应用程序,可以为许多 android 平板电脑 运行 7.0 和更高版本稳定地录制 1280x720 的视频,Lenovo Tab4 8 除外。
使用 Camera2 API 我通过查询支持的预览尺寸来设置捕获。
令人惊讶的是,Lenovo Tab4 8 只有 returns 这些预览尺寸:
1040x780, 864x480, 640x640, 800x480, 720x480, 768x432, 640x480,
480x640, 576x432, 640x360, 480x360, 480x320, 384x288, 352x288,
320x240, 240x320, 240x160, 176x144, 144x176, 160x120
但内置摄像头支持 1280x720 甚至 1920x1080。简单地尝试将分辨率或预览大小设置为 1280x720 会导致错误。 android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): submitRequestList - must configure device with valid surfaces before submitting requests
为什么其他相机应用程序可以处理它?我从 Playstore 下载了 "Open Camera"。它可以选择以 1280x720(但不是 1040x780?!)进行捕获。
我已经找出是什么原因造成的。
这款 Lenovo 平板电脑有一个 "legacy camera",这意味着相机是为相机 API 而不是 Camera2 API。
创建的
Camera2 API 在这种情况下只是 Camera API 的包装,但它无法公开所有功能,因此缺少对某些分辨率的支持。
通过以下调用,我现在可以查明我的设备是否装有旧相机:
Xamarin.Android:
CameraCharacteristics characteristics = camManager.GetCameraCharacteristics(cameraId);
var hardwareLevel = characteristics.Get(CameraCharacteristics.InfoSupportedHardwareLevel);
//hardwareLevel.ToString() would spit out one of the following numbers:
//LEGACY - 2 -> Legacy Cameras might not support 1280x720 resolution
//LIMITED - 0
//FULL - 1
//LEVEL_3 - 3
我有一个 运行 视频应用程序,可以为许多 android 平板电脑 运行 7.0 和更高版本稳定地录制 1280x720 的视频,Lenovo Tab4 8 除外。
使用 Camera2 API 我通过查询支持的预览尺寸来设置捕获。 令人惊讶的是,Lenovo Tab4 8 只有 returns 这些预览尺寸:
1040x780, 864x480, 640x640, 800x480, 720x480, 768x432, 640x480, 480x640, 576x432, 640x360, 480x360, 480x320, 384x288, 352x288, 320x240, 240x320, 240x160, 176x144, 144x176, 160x120
但内置摄像头支持 1280x720 甚至 1920x1080。简单地尝试将分辨率或预览大小设置为 1280x720 会导致错误。 android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): submitRequestList - must configure device with valid surfaces before submitting requests
为什么其他相机应用程序可以处理它?我从 Playstore 下载了 "Open Camera"。它可以选择以 1280x720(但不是 1040x780?!)进行捕获。
我已经找出是什么原因造成的。 这款 Lenovo 平板电脑有一个 "legacy camera",这意味着相机是为相机 API 而不是 Camera2 API。
创建的Camera2 API 在这种情况下只是 Camera API 的包装,但它无法公开所有功能,因此缺少对某些分辨率的支持。
通过以下调用,我现在可以查明我的设备是否装有旧相机:
Xamarin.Android:
CameraCharacteristics characteristics = camManager.GetCameraCharacteristics(cameraId);
var hardwareLevel = characteristics.Get(CameraCharacteristics.InfoSupportedHardwareLevel);
//hardwareLevel.ToString() would spit out one of the following numbers:
//LEGACY - 2 -> Legacy Cameras might not support 1280x720 resolution
//LIMITED - 0
//FULL - 1
//LEVEL_3 - 3