Unity3D播放视频
2016-06-28 22:04
309 查看
点击这里下载视频转换器,该转换器会把其他格式转化为ogv格式,直接被unity识别,不需要安装quicktime不需要重启,更为重要的是比把mov导入unity的要清晰。
[csharp] view
plain copy
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;
}
}
加声音
[csharp] view
plain copy
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分辨率的视频以此方法播放不会产生黑边。
以前只是测试,没有实际使用,发现多次点击播放后会有内存泄露。如下方法解决
[csharp] view
plain copy
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。
顶
2
踩
[csharp] view
plain copy
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;
}
}
加声音
[csharp] view
plain copy
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分辨率的视频以此方法播放不会产生黑边。
以前只是测试,没有实际使用,发现多次点击播放后会有内存泄露。如下方法解决
[csharp] view
plain copy
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。
顶
2
踩
相关文章推荐
- AndroidStudio 导出关于Unity的Jar包
- Substance for Unity5
- 多个协程的调用顺序,以及Update和Start的关系
- unity3d 里复制对象本身的一个奇怪问题
- unity3D游戏开发中如何用UGUI制作背包
- unity, 用unity profiler进行真机profile,需要退出360
- unity的材质竟然可以写shader
- Leap Motion 之Unity 开发指南(二. 开发架构和SDK)L
- Unity2D多分辨率屏幕适配方案
- unity调用ios的剪贴板
- Unity3d Attribute 总结
- [Unity3d]Player Settings导出设置
- #你好Unity3D#Unity获取游戏对象详解
- 【Unity教程】Unity中的C#内存管理
- unity, SkinnedMeshRenderer.updateWhenOffscreen
- Unity圆环进度条制作
- 京城游戏人-Day2:一些 C# 与 Unity 基本常识
- 如何利用CustomFont+PS制作字体
- 覆盖拷贝文件夹
- 洗牌