video_player软件包无法在iOS上播放mp4文件,但在Android上

djp7away  于 2023-05-08  发布在  iOS
关注(0)|答案(1)|浏览(204)

我从Firestore下载MP4文件。然后我用ChaceManager该高速缓存中确定它。比如:

dev.log(name: 'Resource_Explorer', 'Trying to chace Video: $videoName');
      final storageRef = _firebaseStorage.ref(path);
      final fileData = await storageRef.getData();
      return ExplorerFileInfo(await cacheinstance.putFile(path, fileData!, key: path), FileState.downloaded);

然后我将视频提供给我的视频播放器:

final videoFile = (await resourceExplorer.getVideoFile(videoPath)).value;

在Android上一切正常。但是在iOS上,我得到了错误:
[VERBOSE-2:dart_vm_initializer.cc(41)]未处理的异常:PlatformException(VideoError,无法加载视频:无法打开,null,null)
我搜索错误“无法加载视频:无法打开',发现GitHub问题仍然打开。但只有一个人和我一样打不开。他们得到的错误如下:'无法加载视频:操作已停止。而这个问题至今仍未解决。这似乎是一个HTTP错误。
我可以从我的资产播放相同的视频。我能够做同样的步骤来显示在iOS和Android上的图像.
我将感激任何帮助。先谢谢你了!
更新:
在我用Duo包而不是.getData()下载文件后,我能够按照希望的mp4方式交付文件,并使用video_player播放它。
但是,如果我用缓存管理器保护该高速缓存中的数据,我将获得作为.file的数据,而video_player无法在iOS上播放.file文件。

bttbmeg0

bttbmeg01#

我解决了问题。
不知何故,video_player可以在Android上打开“*.file”,但在iOS上!
要解决这个问题,你必须重命名你的videoFile像:

final videoFile = (await resourceExplorer.getVideoFile(videoPath)).value;
      String videoFilePath = videoFile.path;
      String videoFilePathAsMp = '${videoFilePath.substring(0, videoFilePath.length - 4)}mp4';
      final renamedVideo = await videoFile.rename(videoFilePathAsMp);
      _vpController = VideoPlayerController.file(renamedVideo)
        ..addListener(() => setState(() {}))
        ..setLooping(true)
        ..setVolume(0.0)
        ..initialize().then((_) => _vpController!.play());

相关问题