77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
using UnityEngine;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace RenderHeads.Media.AVProVideo.Demos
|
|
{
|
|
/// <summary>
|
|
/// Small demonstration of how you could script the playback of a section of video using a start and end point
|
|
/// </summary>
|
|
public class StartEndPoint : MonoBehaviour
|
|
{
|
|
public MediaPlayer _mediaPlayer;
|
|
public float _startPointSeconds;
|
|
public float _endPointSeconds;
|
|
public bool _loop;
|
|
[Tooltip("If looping is enabled, this is the time the video rewinds to when it reaches the end point")]
|
|
public float _startLoopSeconds;
|
|
private bool _isStartQueued;
|
|
|
|
void OnEnable()
|
|
{
|
|
_isStartQueued = true;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (IsVideoLoaded(_mediaPlayer))
|
|
{
|
|
if (_isStartQueued)
|
|
{
|
|
DoStart(_mediaPlayer, _startPointSeconds);
|
|
_isStartQueued = false;
|
|
}
|
|
else
|
|
{
|
|
if (!_loop)
|
|
{
|
|
DoCheckEnd(_mediaPlayer, _endPointSeconds);
|
|
}
|
|
else
|
|
{
|
|
DoCheckLoop(_mediaPlayer, _endPointSeconds, _startLoopSeconds);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static bool IsVideoLoaded(MediaPlayer mp)
|
|
{
|
|
return (mp != null && mp.Control != null && mp.Control.HasMetaData());
|
|
}
|
|
|
|
private static void DoStart(MediaPlayer mp, float positionSeconds)
|
|
{
|
|
mp.Control.Seek(positionSeconds * 1000f);
|
|
mp.Play();
|
|
}
|
|
|
|
private static void DoCheckEnd(MediaPlayer mp, float positionSeconds)
|
|
{
|
|
if (mp.Control.IsPlaying() && (mp.Control.GetCurrentTimeMs() >= positionSeconds * 1000f))
|
|
{
|
|
mp.Pause();
|
|
}
|
|
}
|
|
|
|
private static void DoCheckLoop(MediaPlayer mp, float positionSeconds, float positionLoop)
|
|
{
|
|
if (mp.Control.IsPlaying() && (mp.Control.GetCurrentTimeMs() >= positionSeconds * 1000f))
|
|
{
|
|
mp.Control.Seek(positionLoop * 1000f);
|
|
}
|
|
}
|
|
}
|
|
} |