安卓camera2高速抓拍

问题描述 投票:0回答:1

OK,我正在尝试在安卓手机上实现高速抓图。有关如何操作的信息非常少。有一些无用的谷歌示例,因为由于频繁的 API 更改,它们不再编译(而且无论如何 - 需要大量的膨胀 - 如果我需要做的一切,为什么我需要破坏 gradle 构建系统的导航库正在捕获视频?!)。有一个中文教程提到了一个叫GeekCamera2的应用程序,非常有前途,但是当我找到并下载GeekCamera2源代码时,所有与高速捕获有关的东西都被注释掉了。我有一段代码可以进行正常的捕获,但是当我尝试使用

createHighSpeedRequestList
setRepeatingBurst
的代码时,它似乎什么也没做,录制会话几乎立即停止。没有崩溃,logcat 中没有错误。

更新 - Google 自己的 Camera2 高速捕获来自这里:https://github.com/android/camera-samples/tree/main/Camera2SlowMotion 仅适用于三星 S10,不适用于我拥有的任何新设备(所有具有高速捕获功能的设备)

E/CameraManagerGlobal: Camera 4 is not available. Ignore physical camera status change
E/CameraManagerGlobal: Camera 5 is not available. Ignore physical camera status change
E/CameraFragment: Camera 0 error: (4) Fatal (device)
java.lang.RuntimeException: Camera 0 error: (4) Fatal (device)
at com.example.android.camera2.slowmo.fragments.CameraFragment$openCamera$2$1.onError(CameraFragment.kt:405)
at android.hardware.camera2.impl.CameraDeviceImpl.notifyError(CameraDeviceImpl.java:1893)
at android.hardware.camera2.impl.CameraDeviceImpl.$r8$lambda$KBQCqQRdhVVn7uHI9Xdha6OqnsU(Unknown Source:0)
at android.hardware.camera2.impl.CameraDeviceImpl$$ExternalSyntheticLambda0.accept(Unknown Source:8)
at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:281)
at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:204)
at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:241)
at android.os.Looper.loop(Looper.java:358)
at android.os.HandlerThread.run(HandlerThread.java:67)
E/CameraCaptureSession: Session 0: Exception while stopping repeating:
android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): The camera device has encountered a serious error
at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:2510)
at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1377)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:596)
at android.hardware.camera2.impl.CameraCaptureSessionImpl$2.onDisconnected(CameraCaptureSessionImpl.java:808)
at android.hardware.camera2.impl.CameraDeviceImpl$7.run(CameraDeviceImpl.java:284)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:241)
at android.os.Looper.loop(Looper.java:358)
at android.os.HandlerThread.run(HandlerThread.java:67)

那么 - 有没有人能够在 2022/2023 年使用这个 API?

android android-camera2
1个回答
0
投票

你只是想做有两个输出的基本情况:

  1. 预览显示(30fps)
  2. 高速视频录制到磁盘(120/240fps)

如果是这样,一个来源是 Android 的官方合规性测试,旨在验证该功能在支持它的设备上是否有效:

https://cs.android.com/android/platform/superproject/+/master:cts/tests/camera/src/android/hardware/camera2/cts/RecordingTest.java;drc=409e62101c9c22c18547efabffebe47a9e9adc5c;l=1174

© www.soinside.com 2019 - 2024. All rights reserved.