2015-04-03 321 views
4

我想从使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相机以4:3的宽高比捕捉视频。它工作正常,除非相机有16:9传感器阵列(作为三星Galaxy S5上的前置摄像头)。在这种情况下,图像看上去就像是16:9图像被捕获并挤压到由MediaRecorder提供的4:3表面。通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机

根据文档,只要将MediaRecorder的尺寸设置为由getOutputSizes(MediaRecorder.class)提供的尺寸之一,就不需要任何其他配置。相机应自动裁切照片,以适应MediaRecorder表面的大小。

我测试的情况也反转了 - 在4:3传感器阵列(Nexus-5的前置摄像头)上录制16:9视频。它工作正常 - 图片裁剪为16:9宽高比。

我认为这是android API中的一个错误,但希望看看是否有什么我在这里错过。

重现该问题的最简单方法是使用camera2Basic示例应用程序,该应用程序由google提供,其中change切换为使用前置摄像头和4:3大小进行预览。它在Nexus-5上正常工作,但在三星Galaxy S5上提供了延伸图像。 Samsung Galaxy S5(android 5.0)上camera2Basic应用程序的截图。

enter image description here

+0

你是否想过如何解决这个问题?或者在这种情况下什么都不能做? – Droidwala 2017-02-03 10:23:50

+1

@Droidwala我还没有找到任何解决方法。 – 2017-02-03 15:07:59

回答

0

你可以(也应该)使用内置裁剪功能选择图像的一个4x3的区域,如果它是16:9。也就是说,裁剪掉任何一方的“不必要的”像素。只需将CaptureRequest的字段/值添加到CaptureRequest.SCALER_CROP_REGION即可完成此操作。

该链接解释了一点点,但你真正需要的是if语句来检查传感器的比率和一个小数学计算出你想选择的区域的边界。

+0

我用SCALER_CROP_REGION设置为4:3进行了测试,但没有帮助。图片仍然拉伸。 – 2015-04-07 16:11:56