Unity VideoPlayer的使用

Unity5.6之前在移动端播放视频都用插件avpro,easy movie等等,在5.6,官方出了一个Videoplayer,可在pc、移动端播放视频,下面我们介绍一下具体的使用方法:
Unity VideoPlayer的使用_第1张图片
videoPlayer分为两种播放模型,一种是本地播放(video clip),一种是网络端播放(url),
下面是一些比较大众化的设置:

  • Play On Awake:脚本载入时自动播放。
  • Wait For First Frame:决定是否在第一帧加载完成后才播放,只有在Play On Awake被勾选是才有效。可以防止视频最前几帧被跳过。(使用过程中发现勾选后视频无法自动播放,原因不明)
  • Loop:循环。
  • Playback Speed:播放速度。

Unity VideoPlayer的使用_第2张图片

  • Camera Far
    Plane:基于摄像机的渲染,渲染在摄像机的远平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用于背景播放器。
    这里写图片描述

  • Camera Near
    Plane:基于摄像机的渲染,渲染在摄像机的近平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用作前景播放器。
    这里写图片描述

  • Render Texture:将视频画面保存在Render Texture上,以供物体或者RawImage使用,可以用来做基于UGUI的播放器。
    这里写图片描述

  • Material Override:将视频画面复制给所选Render的Material。需要选择具有Render组件的物体,可以选择赋值的材质属性。可制作360全景视频和VR视频。
    这里写图片描述

  • Api Only: 待研究。

脚本控制(需引用UnityEngine.Video):
VideoPlayer的脚本控制与AudioSource相似,有常规的Play,Pause,Stop方法,也有用于进度控制的time,isPlaying,isLooping,frame,frameCount等属性。
VideoPlayer可以使用一系列事件来监听播放的各个动作:

  • errorReceived: 错误监听到时被执行。

  • frameDropped :有丢帧发生时被执行。

  • frameReady :新的一帧准备好时被执行。

  • loopPointReached :播放结束或播放到循环的点时被执行。

  • prepareCompleted :视频准备完成时被执行。

  • seekCompleted :查询帧操作完成时被执行。

  • started:在Play方法调用之后立刻调用。

如果我们现在想知道视频的长度:本地端可以直接点出来videoplayer.clip.length,并且可以得到当前播放的长度:videoplayer.time;
如果我们播放的是网络端的视频,是没有办法直接获取视频总长度的,不过我们可以自己计算,视频总长度=videoplayer.frameCount / source.frameRate;即总长度的帧除以速率则可以得到总时间

你可能感兴趣的:(unity)