图片 1

unity5.6.1 videoPlayer

unity中播放视频步骤如下:

unity5.6开始增加了videoPlayer,使得视频播放相对比较简单,项目需求进行了一下研究应用,也遇到很多坑,Google
百度一下发现确实有这些问题,一些简单问题如下:

1.将要播放的视频拖入projec。(注意:unity一般支持的视频格式有mov, .mpg,
.mpeg, .mp4,.avi, .asf格式  )

1)播放无声音

2.在场景中添加RawImage。(因为Image使用sprite渲染,rawImage是用texture渲染)

2)通过slider控制播放进度

3.rawImage下添加videoPlayer组件,将视频赋给videoplayer,将其拖到video
clip上。

3)视频截图(texture->texture2d)

4.创建脚本PlayVodeoOnUGUI,核心代码:rawImage.texture =
videoPlayer.texture,即将video的tuxture赋值给rawImage就能看到要播放的视频了

4)视频结束时事件激活

基本上无太大问题,以上四个问题解决方案在下文红色文字区域,先介绍一下video
Player应用,后续对这四个问题进行解决。

 

(一)新建video Player 可以在ui下田间video
Play组建,也可以直接右键-video-videoplayer,添加后可以看到如下图所示的组件

图片 1

本文主要重点说一下一下参数:source有两种模式clip模式和url模式,clip则可以直接通过videoClip进行播放,url则可以通过url进行播放。renderMode为渲染模式,既可以为camera,material等,如果是使用ui播放的选用render
texture,本文采用此模式。audioOutputMode有三种,none模式,direct模式(没尝试)和audiosource模式,本文采用audiosource模式,采用此模式时只需要将audiosource组建拖入上图中videoPlayer中的audiosource参数槽中即可,不需要任何处理,但有时会出现拖入后videoPlayer中的audiosource参数槽消失,且无声音播放,所以一般采用代码添加,如下所示:

 

      //代码添加
        videoPlayer = gameObject.AddComponent<VideoPlayer>();
        //videoPlayer = gameObject.GetComponent<VideoPlayer>();
        audioSource = gameObject.AddComponent<AudioSource>();
        //audioSource = gameObject.GetComponent<AudioSource>();
        videoPlayer.playOnAwake = false;
        audioSource.playOnAwake = false;
        audioSource.Pause();

 

(二)视频播放的控制与音频/动画播放类似,videoPlayer有play/pause等方法,具体可以参见后面完整代码。

         
在调用视频播放结束时事件loopPointReached(此处为借鉴别人称呼,此事件其实并不是视频播放结束时的事件),顾名思义,此事件为达到视频播放循环点时的事件,即当videoplay
的isLooping属性为true(即循环播放视频)时,视频结束时调用此方法,所以当视频非循环播放时,此事件在视频结束时调用不到。要想调用此方法可以把视频设置为循环播放,在loopPointReached指定的事件中停止播放视频

(三)关于视频播放的ui选择问题,选用render texture时需要指定target
texture。

      
1)在project面板上create-renderTexture,并把新建的renderTexture拖到videoplayer相应的参数槽上

发表评论

电子邮件地址不会被公开。 必填项已用*标注