保存和播放使用 Firebase 存储下载的视频
Posted
技术标签:
【中文标题】保存和播放使用 Firebase 存储下载的视频【英文标题】:saving and playing videos downloaded with firebase storage 【发布时间】:2020-06-15 06:10:39 【问题描述】:我的应用可以从 firebase 下载视频内容,将其保存到 Application.dataPath,然后在编辑器中播放。但是,当我将它构建到 ios 时,它找不到该文件。我也尝试过使用应用程序。 persistentData 但它似乎确实存在。 有什么有用的建议吗?
// _____ 原谅我丑陋的代码:/ ______ // ____ 我已经删除了糟糕的 cmets 等,进行了整理,但我认为这让我了解了我正在使用的技巧 ...
public void FUKN_download_viddy()
FirebaseStorage storage = FirebaseStorage.DefaultInstance;
StorageReference path_reference = storage.GetReference("videoname.mp4");
pathToSaveTo = "file://" +
Application.dataPath +
"/Resources/Adam/Year 1 Semester 1/"+
"videoname.mp4";
path_reference.GetFileAsync(pathToSaveTo).ContinueWith(task =>
if (!task.IsFaulted && !task.IsCanceled)
Debug.Log("File downloaded.");
);
// ____________
// _________
public void FUKN_play_viddy()
string viddyplayerpath = "Adam/Year 1 Semester 1/" + "videofile";
var viddyKlip = Resources.Load<VideoClip>(viddyplayerpath);
VideoPlayer videoPlayer = GetComponent<VideoPlayer>();
videoPlayer.clip = viddyKlip; // index offset
videoPlayer.Play();
// _________
【问题讨论】:
请提供代码示例,以便人们可以使用。 【参考方案1】:我认为您的问题是Resources.Load
提取了包含在Assets/Resources
目录中的元素,而不是您的文件系统(请参阅the doc page)。
您想使用 VideoPlayer.src,如 here 所述。
例如:
public class TestVideo: MonoBehaviour
[SerializeField] private VideoPlayer _videoPlayer;
public Play()
_videoPlayer.src = "file://" + Application.persistentDataPath + "/Resources/Adam/Year 1 Semester 1/" + "videoname.mp4";
_videoPlayer.Play();
请注意,我使用了persistentDataPath,dataPath 在 iOS 和 android 上将是只读的。
希望对你有帮助!
--帕特里克
【讨论】:
谢谢帕特里克,哇哦,你是来自 firebase 教程视频的人!著名的!我一直在研究你的视频,你在这里发表评论..但仍然无法正常工作。我希望我的用户能够将非常短的视频剪辑下载到他们的 iOS 或 Android 设备上。他们不需要上传任何东西。 (这些将由我通过控制台上传)如果他们愿意,他们将能够删除视频。当您说 persistentDataPath 和 dataPath 在 iOS 和 Android 上是只读的时,这是否意味着我无法从 firebase 下载并将它们保存到设备..? 我的代码在 Unity 编辑器中工作,但是在构建到 iOS 后,文件似乎没有下载。以下是我怀疑我做错的代码: ` pathToSaveTo = Application.persistentDataPath + "/" + "Y1_002_election.mp4"; FirebaseStorage 存储 = FirebaseStorage.DefaultInstance; StorageReference path_reference = storage.GetReference("Y1_002_election.mp4"); path_reference.GetFileAsync( pathToSaveTo ).ContinueWith(task => if (!task.IsFaulted && !task.IsCanceled) print( "downloaded"); else print "未下载"; ` // _________ if (File.Exists(pathToSaveTo) == true) // 在 iOS 上这似乎总是错误的 ViddyPlayer.url = pathToSaveTo; ViddyPlayer.Play(); display4.text = "播放视频"; else display4.text = " 计算机 sez no"; // 这是显示的 // _________ 帕特里克!感谢您的帮助和耐心!我想通了!!!我制作了一个 youtube 视频,希望对某人有所帮助 :) youtu.be/SbVYYsBs14w以上是关于保存和播放使用 Firebase 存储下载的视频的主要内容,如果未能解决你的问题,请参考以下文章
使用 Flutter Web 和 Firebase 存储播放视频
使用来自 firebase 存储的 react-native-video 播放视频