Ashok
Ashok

Reputation: 379

File not found error on video_player plugin

I am trying to record a video using flutter. The code used to start the recording session is:

Future<String> _startVideoRecording() async {
    if (!controller.value.isInitialized) {
      print('wait');
      return null;
    }

    // Do nothing if a recording is on progress
    if (controller.value.isRecordingVideo) {
      return null;
    }

    final Directory appDirectory = await getApplicationDocumentsDirectory();
    final String videoDirectory = '${appDirectory.path}/Videos';
    await Directory(videoDirectory).create(recursive: true);
    final String currentTime = DateTime.now().millisecondsSinceEpoch.toString();
    final String filePath = '$videoDirectory/${currentTime}.mp4';

    try {
      await controller.startVideoRecording(filePath);
      videoPath = join((await getTemporaryDirectory()).path, filePath);
      print(videoPath);
    } on CameraException catch (e) {
      _showCameraException(e);
      return null;
    }

    return videoPath;
  }

After the recording is finished i am using,

VideoPlayerController.asset(
   widget.filePath,
);

FutureBuilder(
    future: _initializeVideoPlayerFuture,
    builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
            return AspectRatio(
                aspectRatio: _controller.value.aspectRatio,
                    child: VideoPlayer(_controller),
                );
        } else {
        return Center(child: CircularProgressIndicator());
  }
},)

But i am getting following a file not found exception. Is the video not being stored? When i check the App Info the storage it uses is growing, but i cannot find the com.example.memory folder in android. can anyone help me here?

Video recorded to /data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
I/ExoPlayerImpl(  970): Init 73561a4 [ExoPlayerLib/2.9.6] [curtana, Redmi Note 9 Pro, Xiaomi, 29]
E/ExoPlayerImplInternal(  970): Source error.
E/ExoPlayerImplInternal(  970): com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets//data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:98)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:250)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
E/ExoPlayerImplInternal(  970):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(  970):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(  970):     at java.lang.Thread.run(Thread.java:919)
E/ExoPlayerImplInternal(  970): Caused by: java.io.FileNotFoundException: flutter_assets//data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
E/ExoPlayerImplInternal(  970):     at android.content.res.AssetManager.nativeOpenAsset(Native Method)
E/ExoPlayerImplInternal(  970):     at android.content.res.AssetManager.open(AssetManager.java:847)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:79)
E/ExoPlayerImplInternal(  970):     ... 7 more
W/BpBinder(  970): Slow Binder: BpBinder transact took 290 ms, interface=android.app.IActivityTaskManager, code=20 oneway=false
W/System  (  970): A resource failed to call release.
W/System  (  970): A resource failed to call release.
E/CameraCaptureSession(  970): Session 2: Exception while stopping repeating:
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:2588)
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1142)
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:527)
E/CameraCaptureSession(  970):  at io.flutter.plugins.camera.Camera.closeCaptureSession(Camera.java:480)
E/CameraCaptureSession(  970):  at io.flutter.plugins.camera.Camera.close(Camera.java:486)
E/CameraCaptureSession(  970):  at io.flutter.plugins.camera.Camera$2.onError(Camera.java:187)
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks.notifyError(CameraDeviceImpl.java:2077)
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks.lambda$Sm85frAzwGZVMAK-NE_gwckYXVQ(Unknown Source:0)
E/CameraCaptureSession(  970):  at android.hardware.camera2.impl.-$$Lambda$CameraDeviceImpl$CameraDeviceCallbacks$Sm85frAzwGZVMAK-NE_gwckYXVQ.accept(Unknown Source:8)
E/CameraCaptureSession(  970):  at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:271)
E/CameraCaptureSession(  970):  at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:195)
E/CameraCaptureSession(  970):  at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:86)
E/CameraCaptureSession(  970):  at android.os.Handler.handleCallback(Handler.java:883)
E/CameraCaptureSession(  970):  at android.os.Handler.dispatchMessage(Handler.java:100)
E/CameraCaptureSession(  970):  at android.os.Looper.loop(Looper.java:224)
E/CameraCaptureSession(  970):  at android.app.ActivityThread.main(ActivityThread.java:7520)
E/CameraCaptureSession(  970):  at java.lang.reflect.Method.invoke(Native Method)
W/System  (  970): A resource failed to call release.
W/BpBinder(  970): Slow Binder: BpBinder transact took 224 ms, interface=android.media.IMediaRecorder, code=7 oneway=false
W/BpBinder(  970): Slow Binder: BpBinder transact took 239 ms, interface=android.hardware.camera2.ICameraDeviceUser, code=6 oneway=false
I/flutter (  970): Video recorded to /data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
I/ExoPlayerImpl(  970): Init 73561a4 [ExoPlayerLib/2.9.6] [curtana, Redmi Note 9 Pro, Xiaomi, 29]
E/ExoPlayerImplInternal(  970): Source error.
E/ExoPlayerImplInternal(  970): com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets//data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:98)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:250)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
E/ExoPlayerImplInternal(  970):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(  970):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(  970):     at java.lang.Thread.run(Thread.java:919)
E/ExoPlayerImplInternal(  970): Caused by: java.io.FileNotFoundException: flutter_assets//data/user/0/com.example.memory/app_flutter/Videos/1595517477728.mp4
E/ExoPlayerImplInternal(  970):     at android.content.res.AssetManager.nativeOpenAsset(Native Method)
E/ExoPlayerImplInternal(  970):     at android.content.res.AssetManager.open(AssetManager.java:847)
E/ExoPlayerImplInternal(  970):     at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:79)
E/ExoPlayerImplInternal(  970):     ... 7 more
W/BpBinder(  970): Slow Binder: BpBinder transact took 290 ms, interface=android.app.IActivityTaskManager, code=20 oneway=false
W/System  (  970): A resource failed to call release.
W/System  (  970): A resource failed to call release.
E/CameraCaptureSession(  970): Session 2: Exception while stopping repeating:
E/CameraCaptureSession(  970): android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): The camera device has encountered a serious error
E/CameraCaptureSession(  970):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/CameraCaptureSession(  970):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
W/BpBinder(  970): Slow Binder: BpBinder transact took 276 ms, interface=android.hardware.camera2.ICameraDeviceUser, code=1 oneway=false
I/flutter (  970): Camera error The camera device could not be opened due to a device policy.

Upvotes: 0

Views: 1525

Answers (1)

easeccy
easeccy

Reputation: 5086

Use VideoPlayerController.file() named constructor instead of asset. You are supplying media from filesystem. Assets are packed with your application on build process.

Upvotes: 1

Related Questions