AVProVideo播放功能
代码调用播放视频需要引用
using RenderHeads.Media.AVProVideo
首先代码中需要公开播放组件,编译器拖拽
public MediaPlayer VideoPath
OpenVideoFromFile 外部调用视频文件
我这边着重介绍视频的播放与倒播功能
本身插件是有播放的可以直接调用的 play方法 但是倒播 没用可以调用的方法
在看源代码 里面有可以设置视频播放的当前时间帧 Seek
我们可以使用unity本身的time去更改视频播放的时间帧
public bool IsRePlay = false;
float TimeVideoSeek;
private void Update()
{
if (IsRePlay)
{
TimeVideoSeek -= Time.deltaTime;
VideoPath.Control.Seek(TimeVideoSeek);
if (TimeVideoSeek <= 0)
{
TimeVideoSeek = 2000;
IsRePlay = false;
}
}
}
但是实际调用的过程中会有个时间进度的问题 因为unity的time与视频的播放时间进度 不是同一时间比 之间比例是1:1000
而且倒放还需要知道视频的总长度 等你播放结束后最大的进度时间归置初始值 方便下一次调用
所以整个代码的更改
public bool IsRePlay = false;
float TimeVideoSeek;
private void Start()
{
VideoPath.Events.AddListener(OnMediaPlayerEvent);
TimeVideoSeek = VideoPath.Info.GetDurationMs();
}
private void Update()
{
if (IsRePlay)
{
TimeVideoSeek -= Time.deltaTime * 1000;
VideoPath.Control.Seek(TimeVideoSeek);
if (TimeVideoSeek <= 0)
{
TimeVideoSeek = 2000;
IsRePlay = false;
}
}
}
//回调
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
{
switch (et)
{
case MediaPlayerEvent.EventType.FinishedPlaying:
Debug.Log("视频播放结束调用");
break;
}
}
这样控制Bool值IsRePlay 就可以实现倒播视频了
当然 通过使用Slider中的value跟这个进度 结合 就可以实现视频的拖拽功能 感兴趣的小伙伴可以研究一下