我一直在使用 Camera2 API 编写一个应用程序来捕捉慢动作镜头。我知道三星 Galaxy S9+ 可以录制高达 960 fps 的慢动作,而对于这个特定项目,我需要录制 480 fps。
我遇到的问题是 720p 或 1080p 的 map.getHighSpeedVideoFpsRangesFor() 返回 [240, 240] 的最大范围,如果我尝试手动给 CaptureRequest.Builder 一个 [480, 480] 范围,我会得到这个异常:
IllegalArgumentException while invoking public abstract void android.hardware.camera2.CameraCaptureSession$StateCallback.onConfigured(android.hardware.camera2.CameraCaptureSession)
java.lang.IllegalArgumentException: Fps range [480, 480] in the request is not a supported high speed fps range [[120, 120], [240, 240], [60, 120], [30, 120], [60, 240], [30, 240]]
at android.hardware.camera2.utils.SurfaceUtils.checkConstrainedHighSpeedSurfaces(SurfaceUtils.java:151)
at android.hardware.camera2.impl.CameraConstrainedHighSpeedCaptureSessionImpl.createHighSpeedRequestList(CameraConstrainedHighSpeedCaptureSessionImpl.java:83)
at ch.package.app.RecordActivity.updatePreview(RecordActivity.java:655)
at ch.package.app.RecordActivity.access$700(RecordActivity.java:74)
at ch.package.app.RecordActivity$3.onConfigured(RecordActivity.java:257)
at android.hardware.camera2.impl.CameraConstrainedHighSpeedCaptureSessionImpl$WrapperCallback.onConfigured(CameraConstrainedHighSpeedCaptureSessionImpl.java:398)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
是否无法通过 API 在此设备上录制 480 FPS?我可以采取另一种方法吗?还是我做错了什么?