我的应用程序提供了一个摄像头,允许用户拍照或录制视频。我无法知道用户将选择哪个动作。所以我需要为这两个动作提供相机预览。使用旧的相机API完全没有问题,但我不确定camera2 API。
我仔细查看了两个Google示例: Camera2Basic 和 Camera2Video ,我注意到拍摄照片时预览构建器使用 CameraDevice.TEMPLATE_PREVIEW :
mPreviewRequestBuilder = mCameraDevice.createCaptureRequesT(CameraDevice.TEMPLATE_PREVIEW);
对于视频录制,它使用 CameraDevice.TEMPLATE_RECORD ;
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
我已经检查了 CameraDevice 类中所有模板的描述,但仍然不确定在我的情况下哪种方法正确。我曾尝试将 TEMPLATE_PREVIEW 设置为视频录制,但它运行正常,但我是否理解正确,在这种情况下,视频质量可能会降低?文档中的原因如下:
具体而言,这意味着高帧率优先于最高质量的后处理。
答案 0 :(得分:1)
模板只有各种CaptureRequest设置的默认值。每个模板都针对某个特定用例。
但为了简单起见,在开始录制之前预览TEMPLATE_PREVIEW应该没问题;我建议在实际录制时切换到TEMPLATE_RECORD。然后在用户停止录制后切换回TEMPLATE_PREVIEW。