Unity3D VideoPlayer播放视频和音频

41 篇文章 2 订阅

Unity3D VideoPlayer播放视频和音频

今天来记录一下用Unity自带的VideoPlayer播放视频和音频。

首先准备一个带音频的视频文件,导入到工程中。Windows支持的视频格式有:.mp4,.mov,.mpg,.mpeg,.asf,.avi,.dv,.mv4,.ogv,.vp8,.webm,.wmv等。

视频的转码根据自己需求选择,如果不转码,视频文件将按原样使用,可以节省时间,避免相关的质量损失,但需自己验证该视频与目标平台的是否兼容。

1

新建一个Canvas,在Canvas下新建一个RawImage控件,设置好Rawimage的大小,好与视频的尺寸匹配。点击RawImage下的Add Component,添加VideoPlayer组件和Audio Source组件。在Project工程中,单击右键——> create ——> Render Texture,命名为Video_texture,根据视频尺寸,设置好Video_texture的尺寸(最好与RawImage的尺寸一致)。

2

把Video_texture分别拖进RawImage和VideoPlayer的相应位置 。把视频拖入VideoPlayer的Video Clip栏(这里Source选用Video Clip,如果选用UR,则需把该视频的路径填入即可)。接着把Audio Souce拖入VideoPlayer的Audio Souce中。

 

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class VideoPlay : MonoBehaviour {

    public VideoPlayer videoPlayer;
    private AudioSource audioSource;
    public Transform Buttons;
    private RawImage rawImage;
    void Start()
    {
        rawImage = videoPlayer.gameObject.GetComponent<RawImage>();
        audioSource = videoPlayer.GetComponent<AudioSource>();
        StartCoroutine(PlayVideo());
        
        foreach(Transform t in Buttons)
        {
            t.GetComponent<Button>().onClick.AddListener(delegate { PlayEvent(t.name); });
        }
    }

    void Update()
    {
        //键盘向上箭头加音量
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (audioSource.volume < 1)
                audioSource.volume += 0.1f;

        }
        //键盘向下箭头减音量
        else if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            if (audioSource.volume > 0)
                audioSource.volume -= 0.1f;
        }
        //按ESC退出软件
        if (Input.GetKeyDown(KeyCode.Escape))
            Application.Quit();
    }
    IEnumerator PlayVideo()
    {
        //当唤醒该对象时,视频不会自动播放
        videoPlayer.playOnAwake = false;

        //false,不循环播放
        videoPlayer.isLooping = false;

        //视频每次到达结尾值,调用委托(监听视频播放完成)
        //videoPlayer.loopPointReached += ReachedLoop;

        //播放引擎准备(提高开始播放时的速度)
        videoPlayer.Prepare();

        //当再次显示播放时,将上次视频的最后一帧销毁
        videoPlayer.targetTexture.Release();

        yield return null;
    }
    public void PlayEvent(string name)
    {
        switch (name)
        {
            case "play":
                //获得视频的音频
                videoPlayer.SetTargetAudioSource(0, this.GetComponent<AudioSource>());
                //播放视频
                videoPlayer.Play();
                break;
            case "pause":
                videoPlayer.Pause();
                break;
            case "stop":
                videoPlayer.Stop();
                break;
            case "rePlay":
                videoPlayer.frame = 0;
                videoPlayer.Play();
                break;
        }
    }
}

把代码挂在Canvas上,拖入RawImage跟Buttons,运行即可

动图如下:

Unity VideoPlayer是Unity引擎中的一个组件,用于在游戏或应用程序中播放视频。它可以加载外部视频资源,并提供视频播放控制功能,如播放、暂停、停止。同时,它还可以切换本地视频,获取视频播放进度和控制音量等。 在使用Unity VideoPlayer播放视频时,有时可能会遇到闪现上一个视频画面的问题。这个问题可能是由于视频加载和播放的过程中,上一个视频的画面没有完全清除导致的。一种解决方法是在切换视频之前,先停止之前的视频播放,然后再加载和播放新的视频。这样可以确保每次切换视频时都能正常显示新视频的画面。 总结起来,Unity VideoPlayer是Unity引擎中的一个功能强大的组件,可以用于加载和播放视频,并提供了丰富的视频控制功能。在使用时需要注意处理视频切换时可能出现的闪现问题,可以通过停止之前的视频播放来解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Unity视频播放之Video Player的简单使用](https://blog.csdn.net/weixin_42396898/article/details/124122678)[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_1"}}] [.reference_item style="max-width: 50%"] - *3* [Unity 中VIdeoPlayer视频外部加载- 源码](https://download.csdn.net/download/qq_14862207/10803147)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值