unityAVPro,常用API使用

本文章使用的API是最新的2.6.6版本,unity版本2021.3.21f1c1

1.事件

private void MediaEventHandler(MediaPlayer arg0, MediaPlayerEvent.EventType arg1, ErrorCode arg2)
    {
        switch (arg1)
        {
            case MediaPlayerEvent .EventType .Closing :
                Debug.Log("关闭播放器触发");
                break;
            case MediaPlayerEvent .EventType .Error :
                Debug.Log("报错误时触发");
                break;
            case MediaPlayerEvent .EventType .FinishedPlaying ://注意:如果视频设置为循环播放模式,则不触发此项
                Debug.Log("播放完成触发");
                break;
            case MediaPlayerEvent .EventType .FirstFrameReady :
                Debug.Log("准备完触发");
                break;
            case MediaPlayerEvent.EventType.MetaDataReady:
                Debug.Log("媒体数据准备准备中触发");
                break;
            case MediaPlayerEvent .EventType .ReadyToPlay :
                Debug.Log("准备去播放触发");
                break;
            case MediaPlayerEvent .EventType .Started ://注意:每暂停之后的开始播放都会触发一次
                Debug.Log("开始播放触发");
                break;
            default :
                //Debug.Assert(false);
                break;
        }
    }

2.视频加载

//持有控制视频播放的组件
    
    public MediaPlayer mediaPlayer;


//通过插件中的方法加载(参数为:1.加载路径格式(与面板上相对应)2.加载的文件名 3.默认是否开始播放)
        mediaPlayer.OpenMedia(MediaPathType.RelativeToStreamingAssetsFolder, "AVProVideoSamples/RenderHeads-1080p30-H264.mp4", false)

3.视频暂停,播放,循环

mediaPlayer.Control.Play();//播放
mediaPlayer.Control.Pause();//暂停
mediaPlayer.Control.SetLooping(true);循环

4.制作进度条

/// <summary>
    /// 时刻更新视频进度到滑动条上
    /// </summary>
    void DoUpdateVideoProcess()
    {
        //获取当前播放时长
        float tCurrentTime = (float)mediaPlayer.Control.GetCurrentTime();
        //获取视频总长度
        float tVideoTime = (float)mediaPlayer.Info.GetDuration();
        //计算出对应的播放进度赋值给显示播放进度的进度条
        m_processSlider.value = (float)tCurrentTime/tVideoTime;
    }

5.拖拽进度条

/// <summary>
    /// 视频播放进度条值改变触发
    /// </summary>
    /// <param name="value"></param>
    void OnProcessSliderChange(float value)
    {
        //获取视频总长度
        float tVideoTime = (float)mediaPlayer.Info.GetDuration();
        //当前视频的时间
        float tCurrentTime = m_processSlider.value*tVideoTime;
        //将视频时间调到对应的节点
        mediaPlayer.Control.Seek(tCurrentTime);
    }


    /// <summary>
    /// 播放进度条开始拖动触发(EventTrigger触发)
    /// </summary>
    public void OnProcessSliderDragBegin()
    {
        //暂停播放
        mediaPlayer.Control.Pause();
    }

    /// <summary>
    /// 播放进度条结束拖动触发(EventTrigger触发)
    /// </summary>
    public void OnProcessSliderDragEnd()
    {
        //开始播放
        mediaPlayer.Control.Play();
    }

6.制作时间进度text显示

/// <summary>
    /// 更新播放进度的时间显示
    /// </summary>
    void UpdateTimeText()
    {
        //对当前播放时间转换时间格式
        //转化为 秒
        int tCurrentSeconds = (int)mediaPlayer.Control.GetCurrentTime();
        //获取当前分数
        int tCurrentMin = tCurrentSeconds/60;
        //重新赋值剩余多少秒
        tCurrentSeconds = tCurrentSeconds%60;
        string tCurrentSecondStr = tCurrentSeconds < 10 ? "0" + tCurrentSeconds : tCurrentSeconds.ToString();

        //对总时间转化时间格式
        //转化为秒
        int tVideoTimeSeconds = (int) mediaPlayer.Info.GetDuration();
        //获取总的分数
        int tVideoTimeMin = tVideoTimeSeconds/60;
        //重新复制剩余多少秒
        tVideoTimeSeconds = tVideoTimeSeconds%60;
        string tVideoTimeSecondStr = tVideoTimeSeconds < 10 ? "0" + tVideoTimeSeconds : tVideoTimeSeconds.ToString();

        //拼接一下时间显示字符串
        string tTime = string.Format("<color=red>{0}:{1}/{2}:{3}</color>", tCurrentMin, tCurrentSecondStr, tVideoTimeMin, tVideoTimeSecondStr);
        //string tTime = string.Format("<b>{0}:{1}/{2}:{3}</b>", tCurrentMin, tCurrentSeconds, tVideoTimeMin, tVideoTimeSeconds);
        //string tTime = string.Format("<i>{0}:{1}/{2}:{3}</i>", tCurrentMin, tCurrentSeconds, tVideoTimeMin, tVideoTimeSeconds);

        m_videoTimeTex.text =  tTime ;
    }

API版本做了更新,实现方法参考原文

关于Unity视频播放器插件 AVPro Video(一)平面UI视频播放 - 魔卡先生 - 博客园 (cnblogs.com)

中英文对照翻译

(11条消息) 【免费】unityAVPro2.6.6中英文对照翻译文档-Unity3D文档类资源-CSDN文库

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity AVPro是一个在Unity引擎中用于处理视频的插件。根据引用,它有一个免费版本,但会带有水印。如果你不介意水印,你可以在官方网站上下载免费版本。如果你想要去掉水印,你可以在Unity商店中购买收费版本。根据引用,使用AVPro可以解决在Windows 7 SP1上无法播放视频的问题。除了AVPro,Unity还提供了VideoPlayer组件,你可以使用它来播放视频。根据引用,你可以使用Playlist Media Player来处理视频播放列表。你可以创建一个AVPro Video对象,并将一个脚本挂载到它上面来实现你想要的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Unity播放器插件-AVPro Video - Ultra Edition介绍](https://blog.csdn.net/qq_41088607/article/details/131202574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Unity AVPro 使用](https://blog.csdn.net/GoodCooking/article/details/127871856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值