在我当前的 flutter 项目中,我需要录制视频,修改它然后显示给用户。 问题是在 iOS (14.2) 中,视频播放器无法显示录制的视频/修改过的视频,遗憾的是 iOS 没有错误(在物理设备上测试)。
库和版本:
video_player: 1.0.1
flick_video_player: ^0.1.1
camera: ^0.5.8+17
flutter_ffmpeg: ^0.3.0
我不使用最新版本的相机的原因是它被窃听了,对于某些数量的设备,甚至无法显示预览。
代码:
Future<void> _initCamera() async {
final cameras = await availableCameras();
final camera = cameras.firstWhereOrNull(
(element) => element.lensDirection == CameraLensDirection.back,
);
_controller = CameraController(
camera,
resolutionTarget,
enableAudio: false,
);
await _controller.initialize();
await _controller.prepareForVideoRecording();
//Show the preview
setState(() {});
}
Future<void> startVideoRecording() async {
_videoPath = await generatePath(PathExtension.mp4);
await _controller.startVideoRecording(_videoPath);
}
Future<String> stopVideoRecording() async{
await _controller.stopVideoRecording();
return _videoPath;
}
void _createFlickManager(File videoFile) {
final videoController = VideoPlayerController.file(videoFile);
_flickManager = FlickManager(
videoPlayerController: videoController,
);
}
Widget _buildVideoPreview(){
return FlickVideoPlayer(
flickManager: _flickManager,
flickVideoWithControls:
FlickVideoWithControls(controls: Container()),
);
}
总结:
答案 0 :(得分:0)
显然在 iOS 14.2 中,包含空格的路径存在问题,因为我使用了 DateTime.now()
生成唯一的文件名,这就是问题的原因。将其更改为 DateTime.now().millisecond
解决了问题。