【Unity】Common attributes of AVProVideo script

 

using RenderHeads.Media.AVProVideo;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VideoControl : MonoBehaviour
{
    private MediaPlayer m_MdiaPalyer;

    private void Awake()
    {
        m_MdiaPalyer = GameObject.Find("MediaPlayer").GetComponent<MediaPlayer>();       
       
        LoadMovie("Assets/Resources/彩带.mp4");
        setAlphaRL();
        m_MdiaPalyer.Events.AddListener(HandleEvent);
    }
    //载入视频
    public void LoadMovie(string path)
    {
        //路径、载入方式、载入后是否直接播放
        bool isOpening = m_MdiaPalyer.OpenMedia(new MediaPath(path, MediaPathType.AbsolutePathOrURL), autoPlay: false);
    }

    //播放视频
    public void PlayerMovie()
    {
        m_MdiaPalyer.Control.Play();
    }

    //暂停视频
    public void PauseMovie()
    {
        m_MdiaPalyer.Control.Pause();
    }

    //设置是否循环
    public void SetLoop(bool isLoop)
    {
        m_MdiaPalyer.Control.SetLooping(isLoop);
    }

    //设置播放速率,默认为1,负值为倒放
    public void SetPlayBackRate(float rate)
    {
        m_MdiaPalyer.Control.SetPlaybackRate(rate);
    }

    //以秒为单位获取视频总时间
    public double GetMovieAllTime()
    {
        return m_MdiaPalyer.Info.GetDuration();
    }

    //获取视频当前的时间
    public double GetMovieCurrnetTime()
    {
        return m_MdiaPalyer.Control.GetCurrentTime();
    }

    //视频跳转到该时间
    public void SeekMovie(double time)
    {
        m_MdiaPalyer.Control.Seek(time);
    }

    //是否静音
    public void MuteVolume(bool isMute)
    {
        m_MdiaPalyer.Control.MuteAudio(isMute);
    }

    //设置视频为左右透明视频
    public void setAlphaRL()
    {
        MediaHints hints = m_MdiaPalyer.FallbackMediaHints;
        hints.transparency= TransparencyMode.Transparent;
        hints.alphaPacking = AlphaPacking.LeftRight;
        m_MdiaPalyer.FallbackMediaHints = hints;
    }

    //监听回调函数
    void HandleEvent(MediaPlayer mp, MediaPlayerEvent.EventType eventType, ErrorCode code)
    {
        Debug.Log("MediaPlayer " + mp.name + " generated event: " + eventType.ToString());
        if (eventType == MediaPlayerEvent.EventType.Error)
        {
            //发生错误时触发
            Debug.LogError("Error: " + code);
        }
        else if(eventType == MediaPlayerEvent.EventType.MetaDataReady)
        {
            //当某些数据(宽度、持续时间等)可用时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.ReadyToPlay)
        {
            //加载视频并准备播放时触发(启用自动播放时不触发)
        }
        else if (eventType == MediaPlayerEvent.EventType.Started)
        {
            //播放开始时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.FirstFrameReady)
        {
            //第一帧渲染完成时触发(某些播放形式不可用,例如 WebGL)
        }
        else if (eventType == MediaPlayerEvent.EventType.FinishedPlaying)
        {
            //当非循环视频播放完毕时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.Closing)
        {
            //媒体关闭时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.SubtitleChange)
        {
            //字幕改变时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.Stalled)
        {
            //当媒体停止时触发(例如,当失去与媒体流的连接时)
        }
        else if (eventType == MediaPlayerEvent.EventType.Unstalled)
        {
            //当媒体从停止状态恢复时触发(例如,当重新建立丢失的连接时)
        }
        else if (eventType == MediaPlayerEvent.EventType.ResolutionChanged)
        {
            //当视频的分辨率发生变化(包括负载)时触发。对自适应流有用
        }
        else if (eventType == MediaPlayerEvent.EventType.StartedSeeking)
        {
            //	搜索开始时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.FinishedSeeking)
        {
            //	搜索结束时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.StartedBuffering)
        {
            //缓冲开始时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.FinishedBuffering)
        {
            //缓冲完成时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.PropertiesChanged)
        {
            //在任何属性(例如立体声包装更改)时触发 - 这必须手动触发
        }
        else if (eventType == MediaPlayerEvent.EventType.PlaylistItemChanged)
        {
            //在播放列表中播放新项目时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.PlaylistFinished)
        {
            //当播放列表到达结尾时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.TextTracksChanged)
        {
            //添加或删除文本轨道时触发
        }
        else if (eventType == MediaPlayerEvent.EventType.TextCueChanged)
        {
            //当要显示的文本发生变化时触发
        }
    }

}

Guess you like

Origin blog.csdn.net/ximi2231/article/details/129854338