95 lines
2.5 KiB
C#
95 lines
2.5 KiB
C#
using RenderHeads.Media.AVProVideo;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
|
|
public class AVProValue : MonoBehaviour
|
|
{
|
|
MediaPlayer mediaPlayer;
|
|
|
|
/// <summary>
|
|
/// 视频播放时长
|
|
/// </summary>
|
|
double duration;
|
|
|
|
/// <summary>
|
|
/// 视频播放进度
|
|
/// </summary>
|
|
public float PlayValue;
|
|
|
|
/// <summary>
|
|
/// 视频是否加载完成并准备播放
|
|
/// </summary>
|
|
bool isLoaded = false;
|
|
// Start is called before the first frame update
|
|
|
|
[SerializeField]
|
|
string VideoPath;
|
|
private void OnEnable()
|
|
{
|
|
mediaPlayer = GetComponent<MediaPlayer>();
|
|
if (mediaPlayer != null)
|
|
{
|
|
mediaPlayer.Events.AddListener(OnMediaEvent);
|
|
}
|
|
}
|
|
void Start()
|
|
{
|
|
//duration = mediaPlayer.Info.GetDuration();
|
|
bool isOpen = mediaPlayer.OpenMedia(MediaPathType.RelativeToStreamingAssetsFolder, VideoPath, true);
|
|
//mediaPlayer.Control.Play();
|
|
}
|
|
|
|
private void OnMediaEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
//Debug.Log($"触发事件:{et},错误码:{errorCode}");
|
|
switch (et)
|
|
{
|
|
//视频加载完成并准备好播放
|
|
//case MediaPlayerEvent.EventType.ReadyToPlay:
|
|
case MediaPlayerEvent.EventType.Unpaused:
|
|
this.Log("视频加载完成并准备好播放");
|
|
isLoaded = true;
|
|
duration = mediaPlayer.Info.GetDuration();
|
|
this.Error("这里得到的视频的时长为什么是:" + duration);
|
|
break;
|
|
case MediaPlayerEvent.EventType.Started:
|
|
this.Error("正在加载视频");
|
|
isLoaded = false;
|
|
break;
|
|
// 加载失败(如文件不存在、格式不支持等)
|
|
case MediaPlayerEvent.EventType.Error:
|
|
isLoaded = false;
|
|
Debug.LogError($"视频加载失败!错误码:{errorCode}");
|
|
break;
|
|
|
|
// 视频卸载(如切换视频源时)
|
|
case MediaPlayerEvent.EventType.Closing:
|
|
isLoaded = false;
|
|
Debug.Log("视频已卸载");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据value控制视频播放进度
|
|
/// </summary>
|
|
public void PlayVideoAsValue()
|
|
{
|
|
double PlayTime = PlayValue * duration;
|
|
if (isLoaded)
|
|
{
|
|
mediaPlayer.Control.Seek(PlayTime);
|
|
//mediaPlayer.Control.Play();
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
isLoaded = false;
|
|
}
|
|
}
|