zoukankan      html  css  js  c++  java
  • Unity3D播放视频

    http://blog.csdn.net/awnuxcvbn/article/details/17618919

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

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. using UnityEngine;  
    2. using System.Collections;  
    3.   
    4. public class MovieTest : MonoBehaviour  
    5. {  
    6.     //电影纹理  
    7.     public MovieTexture movTexture;  
    8.   
    9.     void Start()  
    10.     {  
    11.         //设置当前对象的主纹理为电影纹理  
    12.         renderer.material.mainTexture = movTexture;  
    13.         //设置电影纹理播放模式为循环  
    14.         movTexture.loop = true;  
    15.         //StartCoroutine(DownLoadMovie());  
    16.     }  
    17.   
    18.     void OnGUI()  
    19.     {  
    20.         if (GUILayout.Button("播放/继续"))  
    21.         {  
    22.             //播放/继续播放视频  
    23.             if (!movTexture.isPlaying)  
    24.             {  
    25.                 movTexture.Play();  
    26.             }  
    27.         }  
    28.   
    29.         if (GUILayout.Button("暂停播放"))  
    30.         {  
    31.             //暂停播放  
    32.             movTexture.Pause();  
    33.         }  
    34.   
    35.         if (GUILayout.Button("停止播放"))  
    36.         {  
    37.             //停止播放  
    38.             movTexture.Stop();  
    39.         }  
    40.     }  
    41.   
    42.     IEnumerator DownLoadMovie()  
    43.     {  
    44.         WWW www = new WWW("http://127.0.0.1/Head.ogv");  
    45.         yield return www;  
    46.         Debug.Log(Time.time);  
    47.         movTexture = www.movie;  
    48.         //设置当前对象的主纹理为电影纹理  
    49.         renderer.material.mainTexture = movTexture;  
    50.         movTexture.loop = true;  
    51.     }  
    52.   
    53. }  

    加声音

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. using UnityEngine;  
    2. using System.Collections;  
    3.   
    4. public class MovieTest : MonoBehaviour  
    5. {  
    6.     //电影纹理  
    7.     public MovieTexture movTexture;  
    8.     //声音  
    9.     public AudioSource movAudio;  
    10.   
    11.     void Start()  
    12.     {  
    13.         //设置当前对象的主纹理为电影纹理  
    14.         renderer.material.mainTexture = movTexture;  
    15.         //设置电影纹理播放模式为循环  
    16.         movTexture.loop = true;  
    17.         //StartCoroutine(DownLoadMovie());  
    18.     }  
    19.   
    20.     void OnGUI()  
    21.     {  
    22.         if (GUILayout.Button("播放/继续"))  
    23.         {  
    24.             //播放/继续播放视频  
    25.             if (!movTexture.isPlaying)  
    26.             {  
    27.                 movTexture.Play();  
    28.                 movAudio.Play();  
    29.             }  
    30.         }  
    31.   
    32.         if (GUILayout.Button("暂停播放"))  
    33.         {  
    34.             //暂停播放  
    35.             movTexture.Pause();  
    36.             movAudio.Pause();  
    37.         }  
    38.   
    39.         if (GUILayout.Button("停止播放"))  
    40.         {  
    41.             //停止播放  
    42.             movTexture.Stop();  
    43.             movAudio.Stop();  
    44.         }  
    45.     }  
    46.   
    47.     IEnumerator DownLoadMovie()  
    48.     {  
    49.         WWW www = new WWW("http://127.0.0.1/Head.ogv");  
    50.         yield return www;  
    51.         Debug.Log(Time.time);  
    52.         movTexture = www.movie;  
    53.         //设置当前对象的主纹理为电影纹理  
    54.         renderer.material.mainTexture = movTexture;  
    55.         movTexture.loop = true;  
    56.     }  
    57.   
    58. }  


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

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

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. using UnityEngine;  
    2. using System.Collections;  
    3.   
    4. public class WebMovie : MonoBehaviour {  
    5.   
    6.     //电影纹理  
    7.     public MovieTexture movTexture;  
    8.     WWW www;  
    9.     void Start()  
    10.     {  
    11.           
    12.     }  
    13.   
    14.     void OnGUI()  
    15.     {  
    16.         if (GUILayout.Button("加载视频"))  
    17.         {  
    18.             StartCoroutine(DownLoadMovie());  
    19.         }  
    20.         if (GUILayout.Button("播放/继续"))  
    21.         {  
    22.             //播放/继续播放视频  
    23.             if (!movTexture.isPlaying)  
    24.             {  
    25.                 movTexture.Play();  
    26.             }  
    27.         }  
    28.   
    29.         if (GUILayout.Button("暂停播放"))  
    30.         {  
    31.             //暂停播放  
    32.             movTexture.Pause();  
    33.         }  
    34.   
    35.         if (GUILayout.Button("停止播放"))  
    36.         {  
    37.             //停止播放  
    38.             movTexture.Stop();  
    39.         }  
    40.   
    41.         if (GUILayout.Button("卸载内存"))  
    42.         {  
    43.             renderer.material.mainTexture = null;  
    44.             movTexture = null;  
    45.             www = null;  
    46.             Resources.UnloadUnusedAssets();  
    47.         }  
    48.     }  
    49.   
    50.     IEnumerator DownLoadMovie()  
    51.     {  
    52.          www = new WWW("http://127.0.0.1/mumaren.ogv");  
    53.         yield return www;  
    54.         Debug.Log(Time.time);  
    55.         movTexture = www.movie;  
    56.         //设置当前对象的主纹理为电影纹理  
    57.         renderer.material.mainTexture = movTexture;  
    58.         movTexture.loop = true;  
    59.     }  
    60.   
    61. }  


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

  • 相关阅读:
    Java虚拟机------JVM内存区域
    Java虚拟机------垃圾收集器
    Java虚拟机--------JVM常见参数
    Kafka和的安装与配置
    Kafka介绍与消息队列
    Kafka命令操作
    Kafka深度解析
    Flume架构
    四十三、NPM报错ERR! code UNABLE_TO_VERIFY_LEAF_SIGNATURE
    四十二、在线预览pdf文件
  • 原文地址:https://www.cnblogs.com/alps/p/5588502.html
Copyright © 2011-2022 走看看