无法使用unitys视频播放器加载保存的视频文件。文件被删除

时间:2019-06-28 09:00:14

标签: c# android ios .net unity3d

我正在从我们的服务器下载.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赋予文件不同的读/写访问权限。

这是我在这里的第一篇文章,所以希望我已包含所有必要的信息。否则,请让我知道我是否忘记了重要事项。

0 个答案:

没有答案