Unity3D使用EasyMovieTexture插件播放视频

Unity3D对于视频的播放兼容个人感觉很差劲,之前写过一篇使用Unity3D自己自带的一些功能去播放视频,链接如下:

http://www.cnblogs.com/xiaoyulong/p/8627016.html

今天我们使用EasyMovieTexture插件播放视频播放视频。个人觉得EasyMovieTexture插件还是比较好用的,里面封装了很多API,使用起来很方便。有一个不好的地方就是很多方法只有在视频播放时才有效果,就是觉得这个有点坑。

如上图,新建一个物体,挂上 MediaPlayerCtrl 脚本就基本上能完成视频的播放了。关于MediaPlayerCtrl脚本的详细介绍可以看这个链接https://wenku.baidu.com/view/4cea74a918e8b8f67c1cfad6195f312b3169ebfe.html,我这里说几个简单的

StrFileName:输入传统文件名表示在StreamingAssets文件夹中。我们也是可以输入路径的。

Target Material:连接GameObject更新视频贴图。说白了就是你想在哪个物体上显示画面,就把哪个物体拖进去。

B Loop:是否循环播放。

B Auto Play:是否激活时自动播放。

下面是我封装了一些常用的方法,应该能满足一个简单视频播放器的开发了,很简单,代码如下:

  1 using System.Collections;
  2 using System.Collections.Generic;
  3 using UnityEngine;
  4
  5 public class VideoController : MonoBehaviour
  6 {
  7     private MediaPlayerCtrl _mediaPlayer;
  8     private bool _isPlaying;//视频是否正在播放
  9     private float _totalTime;//视频总时长
 10     private float _currentTime;//视频当前播放时长
 11
 12     private void Start()
 13     {
 14         Init();
 15     }
 16
 17     private void Init()
 18     {
 19         _mediaPlayer = this.GetComponent<MediaPlayerCtrl>();
 20     }
 21
 22     /// <summary>
 23     /// 视频是否正在播放
 24     /// </summary>
 25     public bool isPlaying
 26     {
 27         get
 28         {
 29             if (_mediaPlayer.GetCurrentState() == MediaPlayerCtrl.MEDIAPLAYER_STATE.PLAYING)
 30             {
 31                 _isPlaying = true;
 32             }
 33             else
 34             {
 35                 _isPlaying = false;
 36             }
 37             return _isPlaying;
 38         }
 39     }
 40     /// <summary>
 41     /// 视频总时长
 42     /// </summary>
 43     public float totalTime
 44     {
 45         get
 46         {
 47             if (isPlaying)
 48             {
 49                 return _mediaPlayer.GetDuration() / 1000;
 50             }
 51             return -1;
 52         }
 53     }
 54     /// <summary>
 55     /// 视频当前播放时长
 56     /// </summary>
 57     public float currentTime
 58     {
 59         get
 60         {
 61             if (isPlaying)
 62             {
 63                 return _mediaPlayer.GetSeekPosition() / 1000;
 64             }
 65             return -1;
 66         }
 67     }
 68     /// <summary>
 69     /// 视频是否循环播放
 70     /// </summary>
 71     public bool isLoop
 72     {
 73         get
 74         {
 75             return _mediaPlayer.m_bLoop;
 76         }
 77         set
 78         {
 79             _mediaPlayer.m_bLoop = value;
 80         }
 81     }
 82
 83     /// <summary>
 84     /// 读取视频
 85     /// </summary>
 86     /// <param name="_path">视频路径</param>
 87     public void LoadMovie(string _path)
 88     {
 89         _mediaPlayer.Load(_path);
 90     }
 91     /// <summary>
 92     /// 视频播放
 93     /// </summary>
 94     public void MoviePlay()
 95     {
 96         _mediaPlayer.Play();
 97     }
 98     /// <summary>
 99     /// 视频暂停
100     /// </summary>
101     public void MoviePause()
102     {
103         _mediaPlayer.Pause();
104     }
105     /// <summary>
106     /// 视频停止播放。
107     /// 停止与暂停的区别是:停止后,视频会从头开始播放,而暂停是接着暂停的位置播放。
108     /// </summary>
109     public void MovieStop()
110     {
111         _mediaPlayer.Stop();
112     }
113     /// <summary>
114     /// 视频重播
115     /// </summary>
116     public void MovieReplay()
117     {
118         _mediaPlayer.Stop();
119         _mediaPlayer.Play();
120     }
121     /// <summary>
122     /// 设置视频播放速度。
123     /// 这个方法可以用来做快进功能,但是无法做快退功能
124     /// </summary>
125     /// <param name="_i"></param>
126     public void SetMovieSpeed(int _i)
127     {
128         _mediaPlayer.SetSpeed(_i);
129     }
130     /// <summary>
131     /// 视频跳到指定时间播放
132     /// </summary>
133     /// <param name="time"></param>
134     public void MovieToTime(float time)
135     {
136         _mediaPlayer.SeekTo((int)(time * 1000));
137     }
138 }

关于视频的播放进度条的显示,已经通过拉动进度条调整视频播放进度,这些功能我们做一些简单的计算就能实现,很简单,这里就不上代码了。

原文地址:https://www.cnblogs.com/xiaoyulong/p/9062176.html

时间: 2024-10-13 02:23:36

Unity3D使用EasyMovieTexture插件播放视频的相关文章

ckplayer插件播放视频

官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录. 下载好,移动到我们的项目,开始测试.因为里面的功能有点多,你可以去看文档完成自己需要的需求,这里只是简单的记录. 我们PC一般会存放FLV格式视频,而MP4则使用与很多场景. FLV体积小,速度快这也是为什么网站都选选择使用这个格式. 最简单的版本: <div id="a1"&g

Unity3d 5.0 动态播放视频,播放音乐

1.Unity3d 5.0  动态播放视频 工具:Mobile Movie Texture.unitypackage2.1.1 问题描述:目前这个第三方播放视频工具不提供播放时音乐,并且网上教材都是将视频直接拖曳.无法动态更改需要播放的视频 解决方法: 核心代码:  m_movieTexture.Path = "MovieSamples/HandOfFate.ogv"; 试例Demo: [RequireComponent(typeof(MMT.MobileMovieTexture))]

Unity3D两种方式播放视频

  Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类,那么本章我们就好好学习一下Unity中播放视频的这两种方式.哇咔咔-           Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视

在小程序中使用腾讯视频插件播放教程视频

在我们开发的一个小程序里面,为了给客户了解一些教程内容,我们需要增加一个在线播放视频的模块,考虑过直接使用视频组件播放服务器上的视频不成功,因此使用腾讯视频插件来播放最终测试成功.本篇随笔介绍微信小程序使用视频组件和腾讯视频插件两种方式的解决方式,并重点介绍视频插件方式的处理过程. 1.使用视频组件播放视频 由于是我们自己录制的视频内容,本来想直接通过视频组件来播放自己服务器上的视频,理想很丰满,现实很骨感,不知道是视频内部比较大的原因还是腾讯禁止,虽然在开发工具上测试的时候可以播放,不过最终发

Unity3D 如何在安卓手机上播放视频

以前只会在电脑上通过Unity3D播放视频,研究了下发现通过Unity3D在手机上播放视频也非常简单.现介绍如下. void OnGUI() { if (GUI.Button(new Rect(0,0,150,80),"播放/继续")) { Handheld.PlayFullScreenMovie("test.mp4", Color.blue, FullScreenMovieControlMode.Full); } } 简单吧 Unity3D 如何在安卓手机上播放视

flash播放mp4插件轻松搞定播放视频问题

1.使用SWFObject插入Adobe Flash媒体资源兼容性好代码 <script src="http://js.kuwo.cn/yinyue/webmv/swfobject.js"></script>SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立.敏捷的JavaScript模块.该模块中的JavaScript脚本能够自动检测PC.Mac机器上各种主流浏览器对Flash插件的支持情况.它使得插入Fla

unity3d 安卓播放视频替代视频纹理

导出apk,是不能用电影纹理的,所以我们只能用这个办法 这个 Handheld.PlayFullScreenMovie(); 或者这个函数            iPhoneUtils.PlayMovie(); void OnGUI() { if (GUI.Button(new Rect(Screen.width / 2 - 10, Screen.height / 2 - 10, 100,20), "(h)CancelOnTouch")) { Handheld.PlayFullScre

比较好的播放视频插件swfobject.js

播放视频的方法: 方法一. 使用html5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1000px" height="400px" controls="controls" loop="loop" autoplay="autoplay" poster="images/zzsm.png" s

Unity3D 怎样在安卓手机上播放视频

曾经仅仅会在电脑上通过Unity3D播放视频,研究了下发现通过Unity3D在手机上播放视频也很easy.现介绍例如以下. void OnGUI() { if (GUI.Button(new Rect(0,0,150,80),"播放/继续")) { Handheld.PlayFullScreenMovie("test.mp4", Color.blue, FullScreenMovieControlMode.Full); } } 简单吧