【Unity3d】在Unity3d中播放视频:AVPro Video的使用
1、插件介紹
之前講到使用Unity的MoveTexture和Image來實現(xiàn)簡單的播放器,雖然可以實現(xiàn)簡單的視頻播放功能,但是對于商業(yè)化或者移動端的項目來說遠遠不夠。RenderHeads提供了一款unity3d使用的具有強大功能的視頻播放插件,不僅可以實現(xiàn)基礎(chǔ)的播放功能,還能實現(xiàn)進度條拖放和速率調(diào)整,播放4K視頻,360度全景視頻等,并對不同的平臺進行了優(yōu)化。這里簡單講一下基于UGUI的視頻播放功能。?
2、創(chuàng)建Media Player對象
將下載的unitypackage導(dǎo)入工程,導(dǎo)入后會看到幾個demo和插件的說明文檔AVProVideo-UserManual。詳細(xì)的插件用法包括視頻格式的支持和API在說明文檔中都有,這里先介紹基礎(chǔ)用法,在之后用到更多功能時會進行更新說明。?
首先創(chuàng)建Media Player對象。在Hierarchy視圖右擊或者選擇菜單欄的GameObject菜單,然后選擇AVPro Video->Media Player。?
??
Media Player對象包括基礎(chǔ)設(shè)置,Media Properties(視頻的圖像和音頻設(shè)置),Global Settings(全局設(shè)置),Preview(預(yù)覽,只在Play時有效),Events(回調(diào)事件),Platform(多平臺重寫)和About(插件信息)。其中我們一般需要進行設(shè)置的只有基礎(chǔ)設(shè)置和Events。
2.1、基礎(chǔ)設(shè)置
基礎(chǔ)設(shè)置包括文件路徑,自動加載播放,循環(huán)音量等信息,這些都是一些視頻的基礎(chǔ)屬性,面板上的設(shè)置信息也很易懂。需要注意一下的是Video Location這個選項,插件會根據(jù)Location的位置去查找相應(yīng)的文件夾,這里推薦使用StreamingAssets文件夾,需要在項目的Assets目錄下新建一個StreamingAssets文件夾,然后將視頻拖進去,StreamingAssets中的文件不會被打包到程序資源包中,而是作為一個獨立的目錄自動生成在輸出的程序目錄的Data目錄下。Recent選項可以快速選擇之前選擇過的文件,Browse選項可以快速選擇電腦中的文件。?
?
2.2、Events
Events是一個MediaPlayerEvent屬性,繼承了UnityEvent類,使用起來跟UGUI的Button控件的event類似,不同的是我們提供的方法需要有三個參數(shù),MediaPlayer、MediaPlayerEvent.EventType和ErrorCode。其中EventType是播放器的一些狀態(tài),有如下幾種:
MetaDataReady:視頻數(shù)據(jù)準(zhǔn)備完成
ReadyToPlay:視頻加載完成,準(zhǔn)備播放
Started:視頻開始播放
FirstFrameReady:第一幀渲染完成
FinishedPlaying:非循環(huán)播放的視頻播放完畢
- 1
- 2
- 3
- 4
- 5
- 6
三個參數(shù)都需聲明,但只需要對EventType進行判斷,其余兩個變量是情況使用。
public void OnVideoEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode er)
{
switch (et)
{
case MediaPlayerEvent.EventType.ReadyToPlay:
Debug.Log("ReadyToPlay");
break;
case MediaPlayerEvent.EventType.FirstFrameReady:
Debug.Log("First frame ready");
break;
case MediaPlayerEvent.EventType.FinishedPlaying:
Debug.Log("Finished");
break;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2.3、其他設(shè)置
其他的設(shè)置一般不需要去更改。這里簡單介紹一下:
?
3、創(chuàng)建AVPro Video對象
在Hierarchy視圖右擊或者選擇菜單欄的GameObject菜單,然后選擇UI->AVPro Video。?
?
?
然后將剛剛的Media Player對象拖給面板中的Media Player屬性,Default Texture和No Default Display可以設(shè)置顯示縮略預(yù)覽圖,Keep Aspect Ratio可以選擇是否保持視頻分辨率。其他的設(shè)置和UGUI的Image類似,不再贅述。?
4、在Text上播放視頻
雖然感覺不是很有用,但是很炫酷的功能。方法很簡單,先創(chuàng)建一個Media Player對象,然后創(chuàng)建一個Text對象,在Text上添加Apply To Material腳本。創(chuàng)建一個Shader為UI/Default Font-Extra Texture的材質(zhì),對Apply To Material進行如下圖所示設(shè)置即可:?
5、使用腳本動態(tài)控制播放。
插件Demo中有一個Demo_VideoControls,包含一個VRC.cs,這個腳本中有詳細(xì)的視頻播放的控制功能,參照這個腳本就能實現(xiàn)自己想要的控制功能。比如一些常用的功能:
public MediaPlayer _mediaPlayer;
// 播放
public void OnPlayButton()
{
if( _mediaPlayer )
{
_mediaPlayer.Control.Play();
}
}
// 暫停
public void OnPauseButton()
{
if( _mediaPlayer )
{
_mediaPlayer.Control.Pause();
}
}
// 重播
public void OnRewindButton()
{
if( _mediaPlayer )
{
_mediaPlayer.Control.Rewind();
}
}
// 調(diào)節(jié)音量
public void OnAudioVolumeSlider()
{
if (_mediaPlayer && _audioVolumeSlider && _audioVolumeSlider.value != _setAudioVolumeSliderValue)
{
_mediaPlayer.Control.SetVolume(_audioVolumeSlider.value);
}
}
// 靜音
public void OnMuteChange()
{
if (_mediaPlayer)
{
_mediaPlayer.Control.MuteAudio(_MuteToggle.isOn);
}
}
// 拖動進度
public void OnVideoSeekSlider()
{
if (_mediaPlayer && _videoSeekSlider && _videoSeekSlider.value != _setVideoSeekSliderValue)
{
_mediaPlayer.Control.Seek(_videoSeekSlider.value * _mediaPlayer.Info.GetDurationMs());
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
6、插件效果
播放效果展示:?
?
官方Apply To Material效果:?
總結(jié)
以上是生活随笔為你收集整理的【Unity3d】在Unity3d中播放视频:AVPro Video的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言五子棋设计报告及源代码,c语言五子
- 下一篇: 软件缺陷及JIRA工具的基本使用