您的位置:首页 > 移动开发 > Unity3D

unity跳过QuickTime播放视频的另一种方式

2017-09-07 11:07 686 查看
**本文转载自http://blog.csdn.net/awnuxcvbn/article/details/17618919**

点击这里下载视频转换器,该转换器会把其他格式转化为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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity