using RenderHeads.Media.AVProVideo; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class AVProValue : MonoBehaviour { MediaPlayer mediaPlayer; /// /// 视频播放时长 /// double duration; /// /// 视频播放进度 /// public float PlayValue; /// /// 视频是否加载完成并准备播放 /// bool isLoaded = false; // Start is called before the first frame update [SerializeField] string VideoPath; private void OnEnable() { mediaPlayer = GetComponent(); 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; } } /// /// 根据value控制视频播放进度 /// public void PlayVideoAsValue() { double PlayTime = PlayValue * duration; if (isLoaded) { mediaPlayer.Control.Seek(PlayTime); //mediaPlayer.Control.Play(); } } private void OnDisable() { isLoaded = false; } }