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

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

我正在尝试在 Camera2(android.hardware.camera2) API 上以 60(或更高)fps 的速率录制视频。

最后,我使用 CameraConstrainedHighSpeedCaptureSession 以 120fps 的速度成功录制.但它仅针对 >=120fps 用例,不适用于 60fps。

即使我尝试使用普通捕获 session (CameraCaptureSession) 以 60fps 进行录制,它也只支持 <=30fps。我可以通过下面的这段代码弄明白。

Range<Integer>[] fpsRanges = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);

我不知道如何使用 Camera2 API 以 60fps 的速度进行录制。

欢迎提出任何想法。

谢谢。

最佳答案

您必须从 CameraDevice 创建一个 ConstrainedHighSpeedCaptureSession 并实例化一个新 session ,就像您可能对普通捕获 session 所做的那样。

您还需要为您的构建器设置下一个值:

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());

并在您的捕获 session 中使用它来生成 CaptureSession:

mCaptureSession.setRepeatingBurst(myHighSpeedRequestList,
                                  YourHighSpeedVideoCaptureCallback,
                                  YourBackgroundHandler);

关于android - 使用 Camera2(在 Android 版本 21 上)API 录制 60fps 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985383/

相关文章:

android - 在 eclipse 中调试 Android 返回堆栈

android - 限制 Android 摄像头

android - 支持已弃用的和新的 API

video - 用 flutter 捕捉视频

java - 在 Parcelable 中写入/读取数组或字符串数​​组

android - ArrayList 元素修改时触发事件

Android 5.0 Lollipop UsbDevice 缺少接口(interface)

android - 具有焦点的 WebView 控件阻止 Android 5 中的媒体按钮事件

android - 如何录制流媒体视频?

android - 在 android 中实现像 vine 一样的视频录制?