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:是否激活时自动播放。

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

 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 * ));
}
}

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

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

  1. ckplayer插件播放视频

    官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录 ...

  2. Unity3D中播放视频的方法

    播放视频其实和贴图非常相像,因为播放视频用到的 MovieTexture 属于贴图 Texture 的子类.Unity3D 支持的视频格式有很多,但是还是建议使用 ogv 格式的视频,使用其他格式依然 ...

  3. web网页中使用vlc插件播放相机rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...

  4. [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频

    使用环境 unity3D 5 pro vuforia 4 ios 8.1(6.1) xcode 6.1(6.2) 1.新建unity3d工程,添加vuforia 4.0的工程包 Hierarchy中 ...

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

    曾经仅仅会在电脑上通过Unity3D播放视频,研究了下发现通过Unity3D在手机上播放视频也很easy.现介绍例如以下. void OnGUI()     {         if (GUI.But ...

  6. EasyNVR网页H5无插件播放摄像机视频功能二次开发之直播通道接口保活示例代码

    背景需求 随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HT ...

  7. EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码

    随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统.电信行业.工业监控.工地.城市交通.水利系统.社区安防等领域得到越来越广泛的应用.摄像头直播视频监控通过网络直接连接,可达到的世界任何角 ...

  8. 播放视频插件swfobject.js与Video Html5

    播放视频的方法: 方法一. 使用HTML5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1 ...

  9. Unity3D播放视频

    http://blog.csdn.net/awnuxcvbn/article/details/17618919 点击这里下载视频转换器,该转换器会把其他格式转化为ogv格式,直接被unity识别,不需 ...

随机推荐

  1. sharepoint环境安装过程中几点需要注意的地方

    写在前面 上篇文章也说明了,在安装sharepoint环境的时候,确实吃了不少苦头,这里纪录一下安装过程中遇到的几个问题. 安装环境 windows server 2012 r2 standard x ...

  2. mysql 5.7 修改字符编码

    在my.ini文件中添加 [mysqld]character-set-server = utf8 [client]default-character-set = utf8

  3. error C4996: 'sprintf': This function or variable may be unsafe.

    error C4996: 'sprintf': This function or variable may be unsafe.   error C4996: 'sprintf': This func ...

  4. Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext

    一.GenericServlet 1.所有的成员方法: 1.在javaWeb项目中: 2.web.xml <?xml version="1.0" encoding=" ...

  5. 1. Spring基于xml加载和读取properties文件配置

    在src目录下,新建test.properties配置文件,内容如下 name=root password=123456 logArchiveCron=0/5 * * * * ? 一种是使用sprin ...

  6. numpy.asmatrix的用法

    学习的过程中,遇到了asmatrix的用法,看了一下官方文档,明白了. numpy.asmatrix numpy.asmatrix(data, dtype=None)[source] Interpre ...

  7. EOS踩坑记

    [EOS踩坑记] 1.每个account只能更新自己的contract,即使两个account的秘钥相同,也不允许. 如下,使用alice的权限来更新james的contract.会返回 Missin ...

  8. linux查询公网ip

    查询公网ip[出口IP] 1.curl icanhazip.com 2.curl ipecho.net/plain 3.curl www.trackip.net/i

  9. js限制图片大小、点击放大图片、点击在新开页面显示

    缩放图片到合适大小        function ResizeImages() {            var myimg, oldwidth, oldheight;            var ...

  10. 41 【docker】初识

    常用的docker命令: docker ps #查看当前正在运行的容器 docker ps -a | grep <keyword> #查看所有的容器,运行的或者停止的 docker sto ...