在预览模式下开始录制时,视频突然放大到帧中是已知的行为,但是我当前面临的问题是使用LGV30时预览中的极端跳动。
在像素1 XL和像素2 XL中,跳跃可以忽略不计
在三星S8 +中,可以看到跳跃,但可以考虑将其作为最终的流畅视频
但是在LGV30中,跳跃非常可怕,视频移至预览的右上角,并且视频的最终输出质量比VGA差。
我知道图像稳定取决于传感器方向,陀螺仪和加速度计的组合,视频的跳跃取决于这些传感器的质量,但是我可以通过任何方式控制LGV30中的跳跃,还是硬件可以缺陷。
我正在写下我的配置代码以供参考
mPreviewBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.COLOR_CORRECTION_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_VIDEO_RECORD);
mPreviewBuilder.set(CaptureRequest.HOT_PIXEL_MODE, CaptureRequest.HOT_PIXEL_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.EDGE_MODE, CaptureRequest.EDGE_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.NOISE_REDUCTION_MODE, CaptureRequest.NOISE_REDUCTION_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.TONEMAP_MODE, CaptureRequest.TONEMAP_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.SHADING_MODE, CaptureRequest.SHADING_MODE_FAST);
mPreviewBuilder.set(CaptureRequest.CONTROL_VIDEO_STABILIZATION_MODE, CaptureRequest.CONTROL_VIDEO_STABILIZATION_MODE_ON);
我认为这种跳跃是无法控制的,但是有什么办法可以减少跳跃呢?
最佳答案
解决方法原来是错误的相机。
听起来微不足道,但是在这段代码中
CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
manager.getCameraIdList()
管理器返回给定设备的所有可访问摄像机。
在LGV30中,由于有2个后置摄像头,一个是普通的,另一个是广角的,所以我正在使用广角摄像头。
广角相机无法处理图像稳定,并导致此问题。因此解决方案是从列表中选择给定相机朝向的第一台相机。这仍然是一种解决方法,因为我无法弄清楚API是否可以检查给定的摄像头是否正常或解决方法。
有关上述问题的详细信息,请参见How to check whether given Camera is regular camera or wide angle camera?