Unity插件分享——AVPro Video(三)

1,099 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

概述

本篇文章主要分享一个作者平时在开发过程中使用过的感觉还比较好的插件,希望对各位日后开发过程中能够有所帮助。本篇文章主要分享的插件是AVPro Video 。一款非常好用的视频播放插件。在Unity中除了自带的VideoPlayer,在一个比较好用,的就是AVPro Video插件。

使用

本篇文章主要一起来看一下,如何通过代码对AVPro插件进行控制。首选我们来看一下最主要的功能,播放和暂停。
我们如果想要使用代码控制AVPro,首先要在代码中MediaPlayer,然后才能够通过代码控制MediaPlayer,当然要在代码中引用using RenderHeads.Media.AVProVideo;

MediaPlayer _mediaPlayer = null;

播放/暂停视频其实和Animation,Audio的播放挺类似的,都是Play(),Stop()方法

//开始播放
_mediaPlayer.Play();
//暂停
_mediaPlayer.Pause();
//停止
_mediaPlayer.Stop();

Play()就是播放视频,Pause()暂停播放当前视频,Stop()停止播放
Stop和pause的区别就是,当Stop后在播放视频时视频会从头开始播放,Pause是会从当前的位置继续播放。
为了让程序更加严谨,我们会需要现判断一下当前视频的状态,然后在控制视频的播放暂停等,在这里我们可以通过_mediaPlayer.Control获取状态

if (_mediaPlayer.Control.IsPlaying())
{

}

我们通过代码提示可以看到,Control下几乎可以获取到视频的所有状态

image.png

主要有是否是暂停状态,播放状态,是否循环等等状态。

接下我们看一点下,设置视频向前/向后跳转5秒。首先我们要先获取当前视频播放到第几秒(播放到哪里)

_mediaPlayer.Control.GetCurrentTime();

在获取完当前时间之后,我们将当前时间加或减5秒,以达到视频向前或向后快进/快退5秒

double time = _mediaPlayer.Control.GetCurrentTime() + deltaTime;

获取到要跳到的时间点之后,接下来就是进行视频时间的设置

_mediaPlayer.Control.Seek(time);

我们通过F12进入到Seek中看一下,其实就是寻找到我们要跳转到的时间点对应的视频位置。

image.png 接下来我们来看一完整的设置快进/快退5秒的方法。直接在程序中调用即可

public void SeekRelative(float deltaTime)
{
	if (_mediaPlayer && _mediaPlayer.Control != null)
	{
		TimeRange timelineRange = GetTimelineRange();
		double time = _mediaPlayer.Control.GetCurrentTime() + deltaTime;
		time = System.Math.Max(time, timelineRange.startTime);
		time = System.Math.Min(time, timelineRange.startTime + timelineRange.duration);
		_mediaPlayer.Control.Seek(time);

		if (_overlayManager)
		{
			_overlayManager.TriggerFeedback(deltaTime > 0f ? OverlayManager.Feedback.SeekForward : OverlayManager.Feedback.SeekBack);
		}
	}
}

结束

本篇文章就介绍到这里,主要就是介绍了一下视频的播放/暂停以及控制视频跳转等功能,下一篇文章我们将继续介绍AVPro插件的使用,敬请期待。。。