我的应用程序提供了一个摄像头,允许用户拍照或录制视频。我无法知道用户将选择哪个操作。所以我需要为这两个 Action 提供相机预览。使用旧的相机 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 ,它工作正常,但我是否正确理解在这种情况下视频质量可能较低?原因在文档中它说如下:
最佳答案
模板只有各种 CaptureRequest 设置的默认值。每个模板都针对一些特定的用例。
但是为了简单起见,在开始录制之前使用 TEMPLATE_PREVIEW 进行预览应该没问题;我建议在实际录制时切换到 TEMPLATE_RECORD。然后在用户停止录制后切换回 TEMPLATE_PREVIEW。