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)帧提取,自带事例场景脚本

猜你喜欢

转载自blog.csdn.net/lyb19940526/article/details/86640164
今日推荐