使用Camera2(Android版本21)API录制60fps视频

时间:2016-06-23 07:52:38

标签: android android-5.0-lollipop video-recording android-camera2

我试图在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录制。

任何想法都会受到欢迎。

感谢。

1 个答案:

答案 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);