Почему я получаю CAMERA_ERROR (3) при использовании flutter camera

#flutter #camera

#flutter #камера

Вопрос:

следующая ошибка возникает при использовании плагина flutter camera, я добавил разрешение в файл манифеста и все еще не работает.

 Launching libmain.dart on sdk gphone x86 in debug mode...
Parameter format not correct -
✓ Built buildappoutputsflutter-apkapp-debug.apk.
Installing buildappoutputsflutter-apkapp.apk...
Connecting to VM Service at ws://127.0.0.1:64116/dm5AqTZrDK0=/ws
I/CameraManagerGlobal(20232): Connecting to camera service
W/Gralloc4(20232): allocator 3.x is not supported
E/CameraCaptureSession(20232): Session 0: Exception while stopping repeating:
E/CameraCaptureSession(20232): android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): The camera device has encountered a serious error
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:2231)
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1241)
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:578)
E/CameraCaptureSession(20232):  at io.flutter.plugins.camera.Camera.closeCaptureSession(Camera.java:480)
E/CameraCaptureSession(20232):  at io.flutter.plugins.camera.Camera.close(Camera.java:486)
E/CameraCaptureSession(20232):  at io.flutter.plugins.camera.Camera$2.onError(Camera.java:187)
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.CameraDeviceImpl.notifyError(CameraDeviceImpl.java:1629)
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.CameraDeviceImpl.lambda$oDs27OTfKFfK18rUW2nQxxkPdV0(Unknown Source:0)
E/CameraCaptureSession(20232):  at android.hardware.camera2.impl.-$$Lambda$CameraDeviceImpl$oDs27OTfKFfK18rUW2nQxxkPdV0.accept(Unknown Source:8)
E/CameraCaptureSession(20232):  at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:278)
E/CameraCaptureSession(20232):  at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:201)
E/CameraCaptureSession(20232):  at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
E/CameraCaptureSession(20232):  at android.os.Handler.handleCallback(Handler.java:938)
E/CameraCaptureSession(20232):  at android.os.Handler.dispatchMessage(Handler.java:99)
E/CameraCaptureSession(20232):  at android.os.Looper.loop(Looper.java:223)
E/CameraCaptureSession(20232):  at android.app.ActivityThread.main(ActivityThread.java:7656)
E/CameraCaptureSession(20232):  at java.lang.reflect.Method.invoke(Native Method)
E/CameraCaptureSession(20232):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/CameraCaptureSession(20232):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/flutter (20232): CameraException(Previous capture has not returned yet., takePicture was called before the previous capture returned.)
  

Комментарии:

1. Проблема здесь кажется довольно ясной: I / flutter (20232): исключение CameraException (Предыдущая запись еще не возвращена., takePicture была вызвана до возврата предыдущей записи.) Может быть, вы могли бы просветить нас каким-нибудь кодом, который поможет вам понять, что здесь происходит.

Ответ №1:

Теперь вы также можете использовать этот плагин: CamerAwesome

Официальный плагин был полностью заброшен. Этот плагин включает вспышку, масштабирование, автофокусировку… и инициализация не требуется.

Ответ №2:

Я также получил эту ошибку при использовании примера плагина Flutter camera, когда я изменил его с CameraController.startVideoRecording() на CameraController.startImageStream(Function<CameraImage>) .

Чтобы решить эту проблему, я прокомментировал / удалил imageFormatGroup: ImageFormatGroup.jpeg при создании экземпляра CameraController:

 controller = CameraController(
  cameraDescription,
  ResolutionPreset.medium,
  enableAudio: enableAudio,
  //imageFormatGroup: ImageFormatGroup.jpeg, //remove or comment this line
);
  

Это может произойти из-за того, что CameraImage полученный at startImageStream использует YUV кодировку изображения.