Unity播放视频——使用AVProVideo插件
1.右鍵創建MediaPlayer對象 并指定視頻文件
MediaPlayer常用組件參數:
Source Path:視頻路徑
AbsolutePathOrURL:絕對路徑
RelativeToDataFolder: 項目的根目錄下
RelativeToPersitentDataFolder: 固定路徑
RelativeToProjectFolder: 跟Assets同級的路徑
RelativeToStreamingAssetsFolder:相對于StreamingAssets文件夾
Auto Open: 自動打開
Auto Start: 開始自動播放
Loop: 循環播放
Playback Rate: 播放速率
Volume:音量
Muted:靜音
Subtitles:字幕
Events.AddListener:添加事件
2.在Canvas下添加UI/AVPro VideoUGUI 設置全屏。
將1中的MediaPlayer對象拖拽到Display UGUI中對應的MediaPlayer
3.在3D物體上播放:
1).將1中的MediaPlayer對象添加ApplyToMaterial組件,并指定MediaPlayer對象(自身)到屬性Media中
2).新建材質球,設置Shader為AVProVideo/Lit/Diffuse,并賦值給ApplyToMaterial組件中的材質球
3).新建3D物體,將材質球賦值給3D物體
常用API:eg:public MediaPlayer mediaPlayer;
(1) 加載視頻:mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.路徑,
“視頻名稱”,是否自動播放(如不寫默認為true))
(2) 播放/暫停: mediaPlayer.Control.Play()/Pause();
循環: mediaPlayer.Control.SetLooping(true);
變速:mediaPlayer.Control.SetPlaybackRate(速率);實現倒放讓速率為負
(3) 進度條:
相關API:mediaPlayer.Control.GetCurrentTimeMs();//當前播放時間(毫秒)
mediaPlayer.Info.GetDurationMs();//視頻總的時間長度
mediaPlayer.Control.Seek(x);//跳到指定的時間節點
滑動條跟隨視頻時間移動: slider.value=mediaPlayer.Control.GetCurrentTimeMs()/mediaPlayer.Info.GetDurationMs();
控制視頻播放的進度:mediaPlayer.Control.Seek
(slider.value+mediaPlayer.Control.GetCurrentTimeMs())
通過EventTrigger組件(UGUI)實現拖拽進度條時視頻暫停,松開播放
定義方法:調用播放/暫停 即可。
(4) 視頻時間顯示:text
已播放的:
毫秒換秒 int currentSeconds=(int)(mediaPlayer.Control.GetCurrentTimeMs()/1000);
當前分鐘數:int currentMin=currentSeconds/60;
除去分鐘剩下的秒:currentSeconds=currentSeconds%60; 或currentSeconds%=%60;
string currentSecondsStr=currentSeconds<10?“0”+currentSeconds:currentSeconds.ToString();
總的視頻:
毫秒換秒 int allSeconds=(int)(mediaPlayer.Info.GetDurationMs()/1000);
總分鐘數:int allMin=currentSeconds/60;
除去分鐘剩下的秒:allSeconds=allSeconds%60; 或allSeconds%=%60;
string allSecondsStr=allSeconds<10?“0”+allSeconds:allSeconds.ToString();
(5) 控制聲音以及靜音效果:
mediaPlayer.Control.SetVolume(value);
mediaPlayer.Control.MuteAudio(true);
注意:靜音跟音量是沒有關系的,即:
設置靜音后,能達到靜音效果,但是音量值不為0,需要手動設置,建議設置靜音最好通過控制Volume=0 來實現靜音效果
(6) 事件:mediaPlayer.Events.AddListener(方法名); 如不知道參數,定義方法名,右鍵創建該方法(VS功能)
可以通過Switch語句實現 不同事件執行不同方法
MediaPlayerEvent.EventType.__
eg: switch (arg1){
case MediaPlayerEvent.EventType.SubtitleChange:
字幕改變方法 break;
case MediaPlayerEvent.EventType.FinishedPlaying:
播放完畢方法 break;}
(7)播放字幕:需要字幕的srt文件,首先設置組件中的 LoadExternalSubtitl為true,并綁定字幕文件,
給需要顯示的Text組件添加SubtitlesUGUI組件,并進行綁定。
srt文件可以以記事本格式打開,支持富文本
如自己編寫,按照如下格式在txt上寫好,設置編碼為UTF-8,后綴改為srt即可
格式為: eg:
1
00:00:00,000 --> 00:00:02,000
需要顯示的字幕
隔一行
2
00:00:02,000 --> 00:00:05,000
(8)幀提取,自帶事例場景腳本
總結
以上是生活随笔為你收集整理的Unity播放视频——使用AVProVideo插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: B站快捷键
- 下一篇: php云人才系统漏洞,phpyun人才招