Unity3D播放视频
视频 播放 Unity3D
2023-09-14 08:58:41 时间
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。
相关文章
- EasyCVR视频广场模块分组列表中,点击设备提示“通道未开启”是什么原因?
- GTC2022精彩讲座预告|智能视频分析及智能制造
- EasyCVR平台https协议用不了rtc,WebRTC视频无法播放该如何解决?
- 谷歌最新视频抠图术:影子烟雾都能抠,添加水印更顺滑,UP主剪辑利器 | 开源
- 2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。
- RTSP/Onvif安防视频平台EasyNVR以服务方式启动异常却无报错,该如何解决?
- 生物信息数据分析教程视频——12-基因之间的相关性分析及可视化
- AI生成「作业答案」,自动剪短视频:华为给新版鸿蒙加了这些黑科技
- AI智能视频融合平台EasyCVR平台正常播放FLV却无法播放HLS流,是什么原因?
- 国标GB28118协议设备接入EasyCVR平台,视频无法播放的原因排查与解决
- 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
- 端到端QoE优化实践,视频播放体验优化,视频评测体系构建,基于大数据的VMAF质量计算
- iOS简单的视频播放详解手机开发
- Oracle视频精品指南:哪位专家最有价值?(谁的oracle视频好)
- 2021年上半场,短视频之战?
- Linux之旅:探索视频指南(linux视频推荐)
- 无心栽柳:“Linux中国”视频号的播放新记录
- “GAN之父”Goodfellow与网友互动:关于GAN的11个问题(附视频)
- Linux下强大的视频编辑软件(linux视频编辑软件)
- B 站 UP 主「机智的党妹」下架所有视频;马斯克:NASA 救了我和 SpaceX;苹果将向美监管上报 iCloud 上的虐童图片
- Linux内核学习视频实战教程(linux 内核视频教程)
- 用Redis加速视频学习,在慕课网体验最佳状态(redis 视频 慕课网)
- C#视频播放类
- android播放视频时在立体声与单声道之间切换无变化原因分析及解决
- python使用beautifulsoup从爱奇艺网抓取视频播放
- 基于js与flash实现的网站flv视频播放插件代码