es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter: Cambiar la ruta del video grabado

Tengo que grabar un video con un temporizador y detener la grabación después de unos segundos.
Cada vez que hago clic en el botón de detener, siempre me sale este error. Lo he probado en diferentes dispositivos reales y emuladores.

E/flutter (8026): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: CameraException(INVALID_PATH, The platform "TargetPlatform.android" did not return a path while reporting success. The platform should always return a valid path or report an error.)
E/flutter (8026): #0      MethodChannelCamera.stopVideoRecording (package:camera_platform_interface/src/method_channel/method_channel_camera.dart:240:7)
E/flutter (8026): <asynchronous suspension="">
E/flutter (8026): #1      CameraController.stopVideoRecording (package:camera/src/camera_controller.dart:524:20)
E/flutter (8026): <asynchronous suspension="">
E/flutter (8026): 

¿Hay alguna manera de cambiar la ruta por defecto "/data/user/0/package/cache/REC9113430186235591563.mp4" de los videos grabados?
Mi código:

“`dart
Future<xfile> _stopVideoRecording() async {

<pre><code>if (controller == null || !controller.value.isRecordingVideo) {
return null;
}

try {
_changedButtonVisibility(true);
XFile video = await controller.stopVideoRecording();
// await GallerySaver.saveVideo(video.path); //for testing
return video;
} on CameraException catch (e) {
_showCameraException(e);
return null;
}
</code></pre>

}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la ruta devuelta por la plataforma no es válida. Desafortunadamente, no hay forma de cambiar la ruta predeterminada para los videos grabados, ya que está controlada por el sistema operativo Android.

    Sin embargo, puedes manejar este error de manera adecuada verificando si la ruta devuelta por la plataforma es válida antes de llamar al método stopVideoRecording. También puedes capturar la CameraException y mostrar un mensaje amigable al usuario para informarle que la grabación ha fallado.

    Aquí tienes una versión actualizada del método _stopVideoRecording que implementa estos cambios:

    Future<xfile> _stopVideoRecording() async {
      if (controller == null || !controller.value.isRecordingVideo) {
        return null;
      }
    
      try {
        _changedButtonVisibility(true);
        final String path = await controller.stopVideoRecording();
        if (path == null || path.isEmpty) {
          throw CameraException("INVALID_PATH",
              "La plataforma devolvió una ruta no válida para el video grabado.");
        }
        return XFile(path);
      } on CameraException catch (e) {
        _showCameraException(e);
        return null;
      }
    }
    

    Al verificar la validez de la ruta devuelta, puedes evitar que se genere la CameraException y en su lugar mostrar un mensaje de error significativo.

Comments are closed.