我正在从我们的服务器下载.webm视频,并将其存储在Application.persistentDataPath中。加载此视频时,不会播放视频,并且会在android和iOS上删除该文件。我正在使用Unity 2018.2.8f1
使用http流视频效果很好,我还尝试将视频下载到计算机上并手动将其放置在持久数据路径中,效果也很好。似乎仅在运行时下载视频时才会出现此问题,这使我认为我保存的视频文件不正确。如果我只是将视频下载到应用程序中,然后将其复制到我的电脑上,则视频可以正常播放。我尝试为该应用赋予不同的读/写权限,但是行为没有变化。
这是保存文件的代码。
IEnumerator DownloadVideo(int id, Image loadBar)
{
UnityWebRequest www = UnityWebRequest.Get("http://*Server url*" + id + ".webm");
www.SendWebRequest();
while(!www.isDone)
{
loadBar.fillAmount = www.downloadProgress;
yield return new WaitForEndOfFrame();
}
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
using (FileStream file = File.Open(Application.persistentDataPath + "/video" + id + ".webm", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
{
file.Write(www.downloadHandler.data, 0, www.downloadHandler.data.Length);
file.Flush();
file.Close();
file.Dispose();
}
Debug.Log("Saved successfully!");
}
}
这就是我加载视频的方式
if (FileExists(Application.persistentDataPath + "/video" + GlobalConfig.id + ".webm"))
{
video.SetPath(Application.persistentDataPath + "/video" + GlobalConfig.id + ".webm");
Debug.Log("Load Locally");
}
/*
...
*/
video.Prepare();
((我将第三方视频播放器用于android通用媒体播放器,并为方法名称混乱的视频播放器创建了适配器)
我没有收到任何错误消息,但是我确实看到视频文件被删除了。预期的行为是播放视频文件,而不是将其从存储中删除。我尝试为FileAccess和FileSharing赋予文件不同的读/写访问权限。
这是我在这里的第一篇文章,所以希望我已包含所有必要的信息。否则,请让我知道我是否忘记了重要事项。