美文网首页
Unity3D播放视频

Unity3D播放视频

作者: Moment__格调 | 来源:发表于2016-04-09 11:23 被阅读664次

    点击这里下载视频转换器,该转换器会把其他格式转化为ogv格式,直接被unity识别,不需要安装quicktime不需要重启,更为重要的是比把mov导入unity的要清晰。

    ```usingUnityEngine;

    usingSystem.Collections;

    publicclassMovieTest : MonoBehaviour

    {

    //电影纹理

    publicMovieTexture movTexture;

    voidStart()

    {

    //设置当前对象的主纹理为电影纹理

    renderer.material.mainTexture = movTexture;

    //设置电影纹理播放模式为循环

    movTexture.loop =true;

    //StartCoroutine(DownLoadMovie());

    }

    voidOnGUI()

    {

    if(GUILayout.Button("播放/继续"))

    {

    //播放/继续播放视频

    if(!movTexture.isPlaying)

    {

    movTexture.Play();

    }

    }

    if(GUILayout.Button("暂停播放"))

    {

    //暂停播放

    movTexture.Pause();

    }

    if(GUILayout.Button("停止播放"))

    {

    //停止播放

    movTexture.Stop();

    }

    }

    IEnumerator DownLoadMovie()

    {

    WWW www =newWWW("http://127.0.0.1/Head.ogv");

    yieldreturnwww;

    Debug.Log(Time.time);

    movTexture = www.movie;

    //设置当前对象的主纹理为电影纹理

    renderer.material.mainTexture = movTexture;

    movTexture.loop =true;

    }

    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    加声音

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    usingUnityEngine;

    usingSystem.Collections;

    publicclassMovieTest : MonoBehaviour

    {

    //电影纹理

    publicMovieTexture movTexture;

    //声音

    publicAudioSource movAudio;

    voidStart()

    {

    //设置当前对象的主纹理为电影纹理

    renderer.material.mainTexture = movTexture;

    //设置电影纹理播放模式为循环

    movTexture.loop =true;

    //StartCoroutine(DownLoadMovie());

    }

    voidOnGUI()

    {

    if(GUILayout.Button("播放/继续"))

    {

    //播放/继续播放视频

    if(!movTexture.isPlaying)

    {

    movTexture.Play();

    movAudio.Play();

    }

    }

    if(GUILayout.Button("暂停播放"))

    {

    //暂停播放

    movTexture.Pause();

    movAudio.Pause();

    }

    if(GUILayout.Button("停止播放"))

    {

    //停止播放

    movTexture.Stop();

    movAudio.Stop();

    }

    }

    IEnumerator DownLoadMovie()

    {

    WWW www =newWWW("http://127.0.0.1/Head.ogv");

    yieldreturnwww;

    Debug.Log(Time.time);

    movTexture = www.movie;

    //设置当前对象的主纹理为电影纹理

    renderer.material.mainTexture = movTexture;

    movTexture.loop =true;

    }

    }

    注:1280*720分辨率的视频以此方法播放不会产生黑边。

    以前只是测试,没有实际使用,发现多次点击播放后会有内存泄露。如下方法解决

    usingUnityEngine;

    usingSystem.Collections;

    publicclassWebMovie : MonoBehaviour {

    //电影纹理

    publicMovieTexture movTexture;

    WWW www;

    voidStart()

    {

    }

    voidOnGUI()

    {

    if(GUILayout.Button("加载视频"))

    {

    StartCoroutine(DownLoadMovie());

    }

    if(GUILayout.Button("播放/继续"))

    {

    //播放/继续播放视频

    if(!movTexture.isPlaying)

    {

    movTexture.Play();

    }

    }

    if(GUILayout.Button("暂停播放"))

    {

    //暂停播放

    movTexture.Pause();

    }

    if(GUILayout.Button("停止播放"))

    {

    //停止播放

    movTexture.Stop();

    }

    if(GUILayout.Button("卸载内存"))

    {

    renderer.material.mainTexture =null;

    movTexture =null;

    www =null;

    Resources.UnloadUnusedAssets();

    }

    }

    IEnumerator DownLoadMovie()

    {

    www =newWWW("http://127.0.0.1/mumaren.ogv");

    yieldreturnwww;

    Debug.Log(Time.time);

    movTexture = www.movie;

    //设置当前对象的主纹理为电影纹理

    renderer.material.mainTexture = movTexture;

    movTexture.loop =true;

    }

    }```

    就是销毁www对象,但是在这之前,要去掉别的对象对www的引用,比如材质球的主贴图、声明的movTexture,或许还有audioClip。

    相关文章

      网友评论

          本文标题:Unity3D播放视频

          本文链接:https://www.haomeiwen.com/subject/cjxblttx.html