我想要捕获视频与4:3宽高比从安卓前置摄像头使用Camera2接口(增加在5.0版本的安卓)。它可以正常工作,除非摄像头有16:9传感器阵列(作为三星Galaxy S5的前置摄像头)。在这种情况下,图片看起来像是16:9的图片被捕捉并被压缩到由MediaRecorder提供的4:3的表面上。
根据文档,只要MediaRecorder的大小设置为getOutputSizes(MediaRecorder.class)提供的大小之一,就不需要任何额外的配置。相机应自动裁剪图片,使其适合媒体录像机的表面大小。
我还测试了相反的情况-用4:3传感器阵列(Nexus-5的前置摄像头)在摄像头上录制16:9视频。它工作正常-图片被裁剪为16:9的纵横比。
我假设这是android API中的一个bug,但我想看看这里是否遗漏了什么。
重现这个问题的最简单方法是使用谷歌提供的camera2Basic示例应用程序,其中包含以下change,切换为使用前置摄像头和4:3大小的预览。它在Nexus-5上工作正常,但在三星Galaxy S5上提供拉伸图像。下面是三星Galaxy S5 (Android5.0)上的camera2Basic应用程序截图。

发布于 2015-04-04 05:30:15
您可以(也应该)使用内置裁剪功能来选择图像的4x3区域(如果该区域为16x9 )。也就是说,只需裁剪即可丢弃两边“不必要”的像素。这可以通过使用CaptureRequest.SCALER_CROP_REGION向CaptureRequest添加一个字段/值来完成。
链接对此进行了更多的解释,但您真正需要的只是一个if语句来检查传感器的比率,以及一些数学运算来计算出您想要选择的区域的边界。
发布于 2015-11-13 18:29:22
你可以参考android camera2应用程序的源代码来避免这个问题。https://android.googlesource.com/platform/packages/apps/Camera2/+/android-cts-5.1_r4/src/com/android/camera/one/v2/OneCameraZslImpl.java
https://stackoverflow.com/questions/29431021
复制相似问题