使用抖动的Web和Firebase存储播放视频

问题描述

我正在尝试创建一个网站,用户可以在其中添加视频并看到这些视频。所有这些都存储在Firebase存储中。这就是我的存储方式

fb.StorageReference storageRef = fb.storage().ref('videos/$chapter)');
fb.UploadTaskSnapshot uploadTaskSnapshot = await storageRef.put(videoFile,fb.UploadMetadata(contentType: 'video/mp4')).future;
await uploadTaskSnapshot.ref.getDownloadURL().then((value){
  videoUrl = value.toString();
});
snapshot.reference.collection("videos").add({
  "chapter":chapter,"class":grade,"description":description,"notes":notes,"subject":subject,"video":videoUrl,"timestamp":DateTime.Now().millisecondsSinceEpoch.toString()
});

我使用普通的视频播放器插件播放它们。现在的问题是,当我存储它时,我得到一个类似
的网址 https://firebasestorage.googleapis.com/v0/b/studyme-me.appspot.com/o/videos%2Ff)?alt = media&token = ec4fea39-032b-438f-8122-f8e042c1c9c7
但是颤动网络中的视频播放器需要一个.mp4或.wav或类似的文件。我该怎么做,或者可以允许视频播放器播放这些文件(我认为不可能),或者可以为此获取.mp4文件。也许我可以使用Firebase存储打开此URL并获取它,但我不知道如何
任何建议将不胜感激

解决方法

您可以使用VideoPlayerController插件

VideoPlayerController controller = VideoPlayerController.network('your-video-url',);

//Play/Pause Video:
FloatingActionButton(
  onPressed: () {
    // Wrap the play or pause in a call to `setState`. This ensures the
    // correct icon is shown
    setState(() {
      // If the video is playing,pause it.
      if (_controller.value.isPlaying) {
        _controller.pause();
      } else {
        // If the video is paused,play it.
        _controller.play();
      }
    });
  },// Display the correct icon depending on the state of the player.
  child: Icon(
    _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,),)
'''
more examples in the link above

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...