问题描述
我正在尝试创建一个网站,用户可以在其中添加视频并看到这些视频。所有这些都存储在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