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。

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论
### 回答1: Unity3D是一个非常强大的游戏引擎,可以用来开发各种类型的游戏和交互式应用程序。在开发过程中,经常需要使用视频和音频元素来增强用户体验。最近,一种新的视频格式“H265”已经广泛应用于多媒体领域。那么,Unity3D是否支持H265视频播放呢? 答案是肯定的。Unity3D已经内置了对H265视频格式的支持。使用Unity VideoPlayer组件,我们可以轻松地在场景中播放H265视频。要实现这一点,首先需要将H265视频文件添加到项目中。然后,使用VideoPlayer组件创建一个新的视频对象,并将视频文件分配给该对象。在播放期间,VideoPlayer组件会自动解码H265视频,并将其渲染到指定的渲染器上。 在Unity3D中,我们还可以使用第三方插件进行H265视频播放。例如,我们可以使用FFmpeg Unity3D插件将H265视频文件转换为Unity可识别的格式,并将其加载到场景中进行播放。这些插件通常具有更复杂的功能,如定制字幕、多语言支持等。 总之,Unity3D支持H265视频格式,我们可以使用内置的VideoPlayer组件或第三方插件来播放H265视频。这为游戏和应用程序开发者提供了一个新的选择,以提高用户的体验。 ### 回答2: Unity3D是一种跨平台的开发引擎,可以用来制作游戏和应用程序。H265是一种高效的视频编码格式,它可以提供更好的视频质量和更小的文件大小。 在Unity3D中播放H265视频需要两个步骤。首先,您需要使用适当的工具将视频转换为H265编码。可以使用各种工具来完成这项任务,如FFmpeg。 然后,您需要将H265视频添加到Unity3D项目中,并使用适当的组件进行播放。Unity3D中的VideoPlayer组件可以帮助您实现这一目标。在设置VideoPlayer组件时,您需要指定视频文件的路径和格式。您还可以指定其他选项,如音频输出和播放模式。 需要注意的是,播放H265视频可能需要适当的硬件支持。如果您的设备不支持H265硬件解码,视频可能无法正常播放或出现延迟和卡顿问题。在选择使用H265编码时,请确保您的应用程序的目标平台支持它。 总体而言,Unity3D可以很好地支持H265视频播放,但需要一些额外的设置和适当的硬件支持才能实现最佳效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

地狱为王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值