VideoPlayer 介绍:
Unity正式发布了5.6版本后,作为5.x版本的最后一版还是有不少给力的更新的。其中新加入了一个Video Player控件,用以取代之前的MovieTexture。
Video Player提供了多种视频渲染的方式,包括Camera Far Plane,Camera Near Plane,Render Texture,Material Override,Api Only。
Camera Far Plane:基于摄像机的渲染,渲染在摄像机的远平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用于背景播放器。
Camera Near Plane:基于摄像机的渲染,渲染在摄像机的近平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用作前景播放器。
Render Texture:将视频画面保存在Render Texture上,以供物体或者RawImage使用,可以用来做基于UGUI的播放器。
Material Override:将视频画面复制给所选Render的Material。需要选择具有Render组件的物体,可以选择赋值的材质属性。可制作360全景视频VR视频。
Api Only:不要在任何地方绘制视频内容,但仍可通过API中的VideoPlayer的纹理属性使其可用。
本地视频播放:
直接将视频拖到VideoClip上
网络视频播放:
将网络视频的链接写到URL上面
这个时候我们会发现,播放的时候没有声音。
我们只要添加一个Audio Source组件,将他赋给VideoPlayer里面的Audio Source就有声音了,如下图所示。
VideoPlayer脚本控制:
脚本控制(需引用UnityEngine.Video):
VideoPlayer的脚本控制与AudioSource相似,有常规的Play,Pause,Stop方法,也有用于进度控制的time,isPlaying,isLooping,frame,frameCount等属性。
VideoPlayer可以使用一系列事件来监听播放的各个动作:
- errorReceived: 错误监听到时被执行。
- frameDropped :有丢帧发生时被执行。
- frameReady :新的一帧准备好时被执行。
- loopPointReached :播放结束或播放到循环的点时被执行。
- prepareCompleted :视频准备完成时被执行。
- seekCompleted :查询帧操作完成时被执行。
- started:在Play方法调用之后立刻调用。
下面是部分代码实现,具体工程可以点击这里下载,Unity——VideoPlayer完整运行实例:
工程截图:
VideoPlayer初始化:
VideoPlayer的prepareCompleted执行回调,按照Unity官方文档,直接调用Play()方法,也会先调用Prepare()方法,等待准备完毕,才会播放: