Unity3D使用EasyMovieTexture插件播放视频

时间:2021-11-14 10:03:16

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

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

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

Unity3D使用EasyMovieTexture插件播放视频

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

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

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

B Loop:是否循环播放。

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

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

 using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class VideoController : MonoBehaviour
{
private MediaPlayerCtrl _mediaPlayer;
private bool _isPlaying;//视频是否正在播放
private float _totalTime;//视频总时长
private float _currentTime;//视频当前播放时长 private void Start()
{
Init();
} private void Init()
{
_mediaPlayer = this.GetComponent<MediaPlayerCtrl>();
} /// <summary>
/// 视频是否正在播放
/// </summary>
public bool isPlaying
{
get
{
if (_mediaPlayer.GetCurrentState() == MediaPlayerCtrl.MEDIAPLAYER_STATE.PLAYING)
{
_isPlaying = true;
}
else
{
_isPlaying = false;
}
return _isPlaying;
}
}
/// <summary>
/// 视频总时长
/// </summary>
public float totalTime
{
get
{
if (isPlaying)
{
return _mediaPlayer.GetDuration() / ;
}
return -;
}
}
/// <summary>
/// 视频当前播放时长
/// </summary>
public float currentTime
{
get
{
if (isPlaying)
{
return _mediaPlayer.GetSeekPosition() / ;
}
return -;
}
}
/// <summary>
/// 视频是否循环播放
/// </summary>
public bool isLoop
{
get
{
return _mediaPlayer.m_bLoop;
}
set
{
_mediaPlayer.m_bLoop = value;
}
} /// <summary>
/// 读取视频
/// </summary>
/// <param name="_path">视频路径</param>
public void LoadMovie(string _path)
{
_mediaPlayer.Load(_path);
}
/// <summary>
/// 视频播放
/// </summary>
public void MoviePlay()
{
_mediaPlayer.Play();
}
/// <summary>
/// 视频暂停
/// </summary>
public void MoviePause()
{
_mediaPlayer.Pause();
}
/// <summary>
/// 视频停止播放。
/// 停止与暂停的区别是:停止后,视频会从头开始播放,而暂停是接着暂停的位置播放。
/// </summary>
public void MovieStop()
{
_mediaPlayer.Stop();
}
/// <summary>
/// 视频重播
/// </summary>
public void MovieReplay()
{
_mediaPlayer.Stop();
_mediaPlayer.Play();
}
/// <summary>
/// 设置视频播放速度。
/// 这个方法可以用来做快进功能,但是无法做快退功能
/// </summary>
/// <param name="_i"></param>
public void SetMovieSpeed(int _i)
{
_mediaPlayer.SetSpeed(_i);
}
/// <summary>
/// 视频跳到指定时间播放
/// </summary>
/// <param name="time"></param>
public void MovieToTime(float time)
{
_mediaPlayer.SeekTo((int)(time * ));
}
}

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