unity 播放外部視頻


摘要: Unity支持的播放視頻格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需將對應的視頻文件拖拽入Project視圖即可,它會自動生成對應的MovieTexture對象。

1.Unity3D中播放游戲視頻的方式有兩種,第一種是在游戲對象中播放,就好比在游戲世界中創建一個Plane面對象,攝像機直直的照射在這個面上。第二種是在GUI層面上播放視頻。播放視頻其實和貼圖非常相像,因為播放視頻用到的MovieTexture屬於貼圖Texture的子類

//電影紋理
    public MovieTexture movTexture;

    void Start()
    {
        transform.localScale = new Vector3(1, 1, 1);
        //設置當前對象的主紋理為電影紋理
        renderer.material.mainTexture = movTexture;
        //設置電影紋理播放模式為循環
        movTexture.loop = true;
    }

    void OnGUI()
    {
        if (GUILayout.Button("播放/繼續"))
        {
            //播放/繼續播放視頻
            if (!movTexture.isPlaying)
            {
                movTexture.Play();
            }
        }
        if (GUILayout.Button("暫停播放"))
        {
            //暫停播放
            movTexture.Pause();
        }
        if (GUILayout.Button("停止播放"))
        {
            //停止播放
            movTexture.Stop();
        }
    }

  

第二種播放視頻的方式基於GUI。大家可以把剛剛創建的Plane對象以及世界定向光刪除,直接將腳本綁定在攝像機對象中即可。腳本控制基本上與掛在Plane上面一致。

2.unity播放外部視頻,可以用WWW類來加載視頻,里面涉及到協程的知識。

協程相當於線程,這里有一篇文章深入講解協程。http://dsqiu.iteye.com/blog/2029701

協程不是線程,也不是異步執行的。協程和 MonoBehaviour 的 Update函數一樣也是在MainThread中執行的。使用協程你不用考慮同步和鎖的問題。

這里還有一篇文章講到了協程 http://blog.csdn.net/huang9012/article/details/38492937

//電影紋理
    public MovieTexture movTexture;

    void Start()
    {
        //設置電影紋理播放模式為循環
        //movTexture.loop = true;
        StartCoroutine(LoadMovie());
        Debug.Log("download complete");
        
    }

    IEnumerator LoadMovie()
    {
        //配置文件路徑
        //string configPath = "file:///" + Application.dataPath + "/Config/config.txt";
        string configPath = "E:/config.txt";
        //視頻文件路徑
        //string url = "file:///" + Application.dataPath + "/Movies/oldboy.ogv";
        //string url = "file:///" + "E:/U3dExercise/oldboy.ogv";
        string url = "";
        using (StreamReader reader = new StreamReader(configPath))
        {
            url = reader.ReadToEnd().Trim();
        }

        //WWW是一個Unity開發中非常常用到的工具類,主要提供一般Http訪問的功能,以及動態從網上下載圖片、聲音、視頻Unity資源等。
        //WWW里面參數必須要加上"file:///"作為前綴  file:///是協議頭,能解析為本地文件路徑
        //常用的有http://,ftp://,和file:///
        WWW www = new WWW("file:///" + url);
        movTexture = www.movie;
        while (!movTexture.isReadyToPlay)
        {
            Debug.Log(www.progress);
        }
        yield return www;
    }
    void OnGUI()
    {
        //繪制電影紋理
        GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill);
        if (GUILayout.Button("播放/繼續"))
        {
            //播放/繼續播放視頻
            if (!movTexture.isPlaying)
            {
                movTexture.Play();
            }
        }
        if (GUILayout.Button("暫停播放"))
        {
            //暫停播放
            movTexture.Pause();
        }
        if (GUILayout.Button("停止播放"))
        {
            //停止播放
            movTexture.Stop();
        }
    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM