我试图在Camera2(android.hardware.camera2)API上以60(或更高)fps的速率录制视频。
最后,我使用CameraConstrainedHighSpeedCaptureSession以120fps成功录制。但它仅针对> = 120fps用例而不是60fps。
即使我尝试使用普通捕获会话(CameraCaptureSession)以60fps录制,它也仅支持< = 30fps。我可以通过下面的代码弄明白。
Range<Integer>[] fpsRanges = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
我不知道如何使用Camera2 API以60fps录制。
任何想法都会受到欢迎。
感谢。
答案 0 :(得分:1)
您必须从CameraDevice创建ConstrainedHighSpeedCaptureSession
,并像正常捕获会话那样实例化新会话。
您还需要为构建器设置下一个值:
myPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_USE_SCENE_MODE);
myPreviewRequestBuilder.set(CaptureRequest.CONTROL_SCENE_MODE, CaptureRequest.CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO);
myPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, new Range<Integer>(frameRate, frameRate));
之后,使用您的构建器生成CaptureRequestList:
myHighSpeedRequestList = ((CameraConstrainedHighSpeedCaptureSession) cameraCaptureSession).createHighSpeedRequestList(myPreviewRequestBuilder.build());
并在捕获会话中使用它来生成CaptureSession:
mCaptureSession.setRepeatingBurst(myHighSpeedRequestList,
YourHighSpeedVideoCaptureCallback,
YourBackgroundHandler);