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 }

關於視頻的播放進度條的顯示,已經通過拉動進度條調整視頻播放進度,這些功能我們做一些簡單的計算就能實現,很簡單,這里就不上代碼了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM