Unity--VideoPlayer的使用案例

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初始化:

private void Init(string url)
    {
        show = true;
        isVideo = true;
        mute = false;
        time_Count = 0;
        time_Current = 0;
        sliderVideo.value = 0;
        //设置RenderTexture或RawImage上渲染VideoPlayer
        vPlayer.renderMode = VideoRenderMode.RenderTexture;
        //设置为URL模式
        vPlayer.source = VideoSource.Url;
        //设置播放路径
        vPlayer.url = url;
        //在视频中嵌入的音频类型
        vPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
        //当VideoPlayer全部设置好的时候调用,帧立即可用
        vPlayer.prepareCompleted += OnPrepareFinished;
        //准备播放所需要的资源,预加载部分或者全部要播放的视频
        vPlayer.Prepare();
    }

VideoPlayer的prepareCompleted执行回调,按照Unity官方文档,直接调用Play()方法,也会先调用Prepare()方法,等待准备完毕,才会播放:

void OnPrepareFinished(VideoPlayer player)
    {
        //把图像赋给RawImage
        image.texture = vPlayer.texture;
        //帧数/帧速率=总时长    如果是本地直接赋值的视频,我们可以通过VideoClip.length获取总时长
        sliderVideo.maxValue = vPlayer.frameCount / vPlayer.frameRate;

        time = sliderVideo.maxValue;
        hour = (int)time / 60;
        mint = (int)time % 60;
        text_Count.text = string.Format("/  {0:D2}:{1:D2}", hour, mint);

        sliderVideo.onValueChanged.AddListener(delegate { ChangeVideo(sliderVideo.value); });

        player.Play();
    }

Unity中的VideoPlayer组件可用于在游戏中播放视频。要使用VideoPlayer组件,您需要按照以下步骤进行操作: 1. 在Unity编辑器中,创建一个新的GameObject或选择现有的GameObject。 2. 在Inspector面板中,点击“Add Component”按钮并搜索“VideoPlayer”,然后将其添加到GameObject上。 接下来,您可以进行以下设置: 1. 在VideoPlayer组件的Inspector面板中,找到“Source”属性,并选择您要播放的视频文件。您可以通过单击下拉菜单旁边的圆圈按钮并选择文件路径,或通过拖放文件到相应字段来选择视频文件。 2. 配置视频的播放设置: - 您可以选择在播放视频之前自动加载视频文件。启用“Preload”选项将在游戏开始时加载视频文件,以确保平滑播放。 - 您还可以选择在开始播放视频时是否将其设置为循环播放。启用“Loop”选项将使视频循环播放。 3. 根据需要配置其他设置: - 您可以设置视频的音量和播放速度。 - 您可以选择视频的渲染目标。默认情况下,视频将在全屏幕上播放。您还可以将其指定为RawImage组件,以便在指定的UI元素中播放视频。 - 您可以选择在视频准备就绪时自动播放视频。 一旦您完成了设置,您可以通过编写脚本来控制VideoPlayer组件的播放。例如,您可以使用Play和Pause方法来控制视频的播放和暂停。 这只是一个简单的介绍,UnityVideoPlayer组件还有许多其他功能和选项可供探索。您可以参考Unity的官方文档或在线教程来深入了解如何使用UnityVideoPlayer组件。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值