Reputation: 379
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
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