我正在使用 ImagePicker 从图库或通过从相机捕获它们来上传视频。
问题是我不希望视频超过 1 分钟的持续时间,在画廊选择模式下,我会检查所选视频的持续时间,如果视频超过 1 分钟,则会显示一条消息。
我该如何做类似 retrica、打开相机但限制视频时长的事情?
我正在使用 ImagePicker 从图库或通过从相机捕获它们来上传视频。
问题是我不希望视频超过 1 分钟的持续时间,在画廊选择模式下,我会检查所选视频的持续时间,如果视频超过 1 分钟,则会显示一条消息。
我该如何做类似 retrica、打开相机但限制视频时长的事情?
使用image_picker提供的 maxDuration
final PickedFile videoFile = await picker.getVideo(
source: ImageSource.camera,
maxDuration: const Duration(seconds: 60),
);
我认为您无法通过 ImagePicker 执行此操作,因为此插件通过手机默认相机应用程序捕获视频,并且您无法在捕获时检查和管理持续时间,直到用户停止捕获并返回您的应用程序
但是如果您使用相机插件,您可以这样做,因为此插件可以通过您的应用程序捕获视频,并且您可以在用户捕获视频时检查视频持续时间
https://pub.dev/packages/camera
如果您想获得此功能,则无法控制它使用相机插件 https://pub.dev/packages/camera 并使用计时器停止录制
//Timer
timer = Timer.periodic(Duration(seconds: 60), (Timer t) {
_onStopButtonPressed();
timer.cancel();
});
});
//stop recording when click on the button
void _onStopButtonPressed() {
setState(() {
buttonColor = Colors.white;
});
_stopVideoRecording().then((_) {
if (mounted) setState(() {});
});
timer.cancel(); //when user close it manually
}
// stop funcation
Future<void> _stopVideoRecording() async {
if (!controller.value.isRecordingVideo) {
return null;
}
try {
await controller.stopVideoRecording();
} on CameraException catch (e) {
_showCameraException(e);
return null;
}
}
您也可以在录制后使用 video_player 插件重播视频 https://pub.dev/packages/video_player#-installing-tab-