Unity AVPro video 开始播放,播放完成事件监听

代码播放: 低版本的路径播放api 不是这个 

2.2.4 AVPro Video - Core Edition (核心版)

bool isOpening = mediaPlayer.OpenMedia(new MediaPath("VIdeos/PXPGameRule.mp4", MediaPathType.RelativeToStreamingAssetsFolder), autoPlay: true);

GetComponent<DisplayUGUI>().CurrentMediaPlayer = mediaPlayer;

2023/10/17: 更新

注意:循环模式下,FinishedPlaying 事件是不会走的

StartedSeeking,FinishedSeeking这两个事件每次循环都会走                     

  GetComponent<MediaPlayer>().Events.AddListener((MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) => {
            switch (et)
            {
                case MediaPlayerEvent.EventType.MetaDataReady:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.ReadyToPlay:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.Started:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.FirstFrameReady:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.FinishedPlaying:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.Closing:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.Error:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.SubtitleChange:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.Stalled:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.Unstalled:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.ResolutionChanged:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.StartedSeeking:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.FinishedSeeking:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.StartedBuffering:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.FinishedBuffering:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.PropertiesChanged:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.PlaylistItemChanged:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.PlaylistFinished:
                    print(et);
                    break;
                case MediaPlayerEvent.EventType.TextTracksChanged:
                    print(et);
                    break;
                default:
                    break;
            }
        });

功能:htc 手柄按下touchpad 或者 Grap 播放全景视频 

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

public class ViveControllerInput : MonoBehaviour
{
    public MediaPlayer _mediaPlayer;
    public SteamVR_Action_Boolean m_TeleportAction; // 圆盘按下事件
    public SteamVR_Action_Boolean m_GrapPinchAction; // Grap 按下事件
    public SteamVR_Action_Single m_GrapPowerAction;  // Grap 按下程度
    public SteamVR_Action_Vector2 m_TeleportMoveAction; // 圆盘触摸事件
    public SteamVR_Behaviour_Pose[] m_pose; // 获取手柄上的 SteamVR_Behaviour_Pose 组件
    bool isPlaying = false;
    private void Start()
    {
        _mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
    }
    void Update()
    {
       
        for (int i = 0; i < m_pose.Length; i++)
        {
            if (m_TeleportAction.GetStateDown(m_pose[i].inputSource)|| m_GrapPinchAction.GetStateDown(m_pose[i].inputSource))
            {
                Debug.Log("任意一个手柄的Teleport圆盘按下 或者是  grap键 按下");
                if (!isPlaying)
                {
                    StartMovie("/AVProVideoSamples/SampleSphere.mp4");
                    Debug.Log("播放或者重新播放");
                }
            }
        }
        
         Teleport 圆盘触摸坐标数据获取
        //Vector2 TeleportPos = m_TeleportMoveAction.GetAxis(SteamVR_Input_Sources.Any);
        //Debug.Log("TeleportPos" + TeleportPos);
        //if (TeleportPos != Vector2.zero)
        //{
        //    // Debug.Log("TeleportPos" + TeleportPos);
        //}

         Grap 按下程度
        //float m_GrapPower = m_GrapPowerAction.GetAxis(SteamVR_Input_Sources.Any);
        //Debug.Log(m_GrapPower);
    }

    public void OnMediaPlayerEvent(MediaPlayer mp,MediaPlayerEvent.EventType et,ErrorCode errorCode)
    {
        switch (et)
        {
            case MediaPlayerEvent.EventType.Started:
                print("startedEvent开始事件触发");
                OnMediaPlayerStarted(mp);
                break;
            case MediaPlayerEvent.EventType.FinishedPlaying:
                print("finishedEvent结束事件触发");
                OnMediaPlayerFinished(mp);
                break;
        }

    }
    void StartMovie(string mp4Str) {
        _mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, Application.streamingAssetsPath + mp4Str, true);
        _mediaPlayer.m_Loop = false;
        _mediaPlayer.Play();
       
    }
    /// <summary>
    /// 开始事件触发
    /// </summary>
    /// <param name="mp"></param>
    void OnMediaPlayerStarted(MediaPlayer mp)
    {
        print("开始事件触发的后续");
        isPlaying = true;
    }
    /// <summary>
    /// 结束事件触发
    /// </summary>
    /// <param name="mp"></param>
    void OnMediaPlayerFinished(MediaPlayer mp)
    {
        print("结束事件触发的后续");
        isPlaying = false;
    }

}

事件监听的方法转载自:

Unity视频插件AVPro Video的事件管理_thinkcg的博客-CSDN博客

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity AVPro Video是一种在Unity游戏引擎中用于播放视频的插件。它允许开发者在游戏中无缝播放高质量的视频,包括在安卓平台上。在Android平台上播放视频,首先需要将视频文件保存在游戏资源文件夹中的特定位置,然后使用Unity AVPro Video插件中的API来加载并播放视频。 首先,我们需要将视频文件拖放到Unity项目的资源文件夹中,确保它们被正确导入。然后,我们可以通过在Unity场景中创建一个空的GameObject并添加AVPro Video的脚本组件来实现视频播放。该脚本组件将提供用于控制视频播放的各种功能和选项。 在使用AVPro Video播放视频时,我们可以设置视频的播放位置、音量、速度和循环等属性。我们还可以通过脚本控制视频的暂停、停止、倒放、快进和快退等操作。插件还支持多个视频之间的过渡和混合效果,以及设置视频的遮罩和透明度。 为了在安卓设备上播放视频,我们需要将Unity项目导出为一个安卓应用程序,并将其部署到设备上。在导出过程中,如果已正确安装并配置了Unity AVPro Video插件,它将自动包含在导出的应用程序中。一旦应用程序被安装在安卓设备上,我们可以通过调用相应的播放函数来开始播放视频。 总之,Unity AVPro Video插件为安卓平台提供了强大且易于使用的功能,使开发者能够在游戏中无缝播放高质量的视频。通过正确配置和使用该插件,我们可以轻松实现在安卓设备上播放视频的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值