无法使用Unity中的VideoPlayer播放从网址下载的视频片段

时间:2017-08-25 05:58:19

标签: c# video unity5

我正在尝试从网址下载视频(Bunny Video进行测试),然后使用视频播放器组件播放。

我在这里遇到的问题是,如果我在编辑器模式下将预先下载的剪辑或网址传递给视频播放器,它会毫无问题地播放视频,但是当我尝试将VideoPlayer组件动态添加到我的游戏对象并分配视频剪辑时视频播放器,它从不播放视频。在播放模式下,Clip选项始终在VideoPlayer组件中显示为null。另外,添加网址在通过脚本完成时也不起作用。

这是我的脚本,它下载视频并将其分配给视频播放器。

public class DownloadScript : MonoBehaviour
{



    private WWW Url;

    private VideoPlayer Player;
    public VideoClip clip;

    public float test;
    // Use this for initialization
    void Start ()
    {
        this.gameObject.AddComponent<VideoPlayer>();
        Player = this.gameObject.GetComponent<VideoPlayer>();
        _Download();
        /*Player.source=VideoSource.VideoClip;
        Player.clip = clip;
        Player.Prepare();*/


        //  Player.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";


    }

    // Update is called once per frame
    void Update () {

        if (!Player.isPlaying && Player.isPrepared)
        {
            Player.Play();

        }
    }
    private IEnumerator WaitForDownload(string sURL)
    {
        Url = new WWW(sURL);
        //WWW www = new WWW(sURL);
        Debug.Log(Url.bytesDownloaded);
        yield return Url;
        if (Url.isDone)
        {
            Debug.Log("Player ready");
            Invoke("PlayVideo",20f);
        }   
        else
        {
            Debug.Log(Url.bytesDownloaded);
        }

        yield return Url;

    }
    private void _Download()
    {
        try
        {  
            StartCoroutine(WaitForDownload("http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4"));
        //  return Url.bytes;  
        }
        catch(Exception e)
        {
            Debug.Log(e.ToString());
        }


    }

    public void PlayVideo()
    {
        Debug.Log("url download complete");
        File.WriteAllBytes(Application.dataPath + "/Resources"+"/bunny.mp4", Url.bytes);


        clip =(VideoClip) Resources.Load("bunny.mp4");
        Player.source=VideoSource.VideoClip;
        Player.clip = clip;
        test = 5.0f;
        //  Player.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";
        if (Player.isPrepared)
        {
            Player.Play();
        }
    }
}

以下是运行时检查器面板的屏幕截图。

Inspector

我在我的脚本中添加了一个测试变量,以验证是否有任何内容在运行时更新。因此,测试变量的值会在检查器面板中更新,但视频片段值不会更新,这就是我的视频无法播放的原因。

对此有何解决方案?

1 个答案:

答案 0 :(得分:1)

所以我遇到了同样的问题。刚解决了。

代码

$dompdf = new Dompdf();

解决方案

从您的代码中,我看到您将字节保存到Resources文件夹中。这不是必需的。因此,您不必使用Resources.Load加载它。

只需传入绝对文件路径。我已在iOS和Mac OS中测试过。有用。