Unity3D播放视频

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













using UnityEngine;
using System.Collections;

public class MovieTest : MonoBehaviour
{
    //电影纹理
    public MovieTexture movTexture;

    void Start()
    {
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        //设置电影纹理播放模式为循环
        movTexture.loop = true;
        //StartCoroutine(DownLoadMovie());
    }

    void OnGUI()
    {
        if (GUILayout.Button("播放/继续"))
        {
            //播放/继续播放视频
            if (!movTexture.isPlaying)
            {
                movTexture.Play();
            }
        }

        if (GUILayout.Button("暂停播放"))
        {
            //暂停播放
            movTexture.Pause();
        }

        if (GUILayout.Button("停止播放"))
        {
            //停止播放
            movTexture.Stop();
        }
    }

    IEnumerator DownLoadMovie()
    {
        WWW www = new WWW("http://127.0.0.1/Head.ogv");
        yield return www;
        Debug.Log(Time.time);
        movTexture = www.movie;
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        movTexture.loop = true;
    }

}

加声音

using UnityEngine;
using System.Collections;

public class MovieTest : MonoBehaviour
{
    //电影纹理
    public MovieTexture movTexture;
    //声音
    public AudioSource movAudio;

    void Start()
    {
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        //设置电影纹理播放模式为循环
        movTexture.loop = true;
        //StartCoroutine(DownLoadMovie());
    }

    void OnGUI()
    {
        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 = new WWW("http://127.0.0.1/Head.ogv");
        yield return www;
        Debug.Log(Time.time);
        movTexture = www.movie;
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        movTexture.loop = true;
    }

}


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


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


using UnityEngine;
using System.Collections;

public class WebMovie : MonoBehaviour {

    //电影纹理
    public MovieTexture movTexture;
    WWW www;
    void Start()
    {
        
    }

    void OnGUI()
    {
        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 = new WWW("http://127.0.0.1/mumaren.ogv");
        yield return www;
        Debug.Log(Time.time);
        movTexture = www.movie;
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        movTexture.loop = true;
    }

}

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

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地狱为王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值