Unity3D VideoPlayer播放视频和音频 您所在的位置:网站首页 unity播放声音 Unity3D VideoPlayer播放视频和音频

Unity3D VideoPlayer播放视频和音频

2023-09-01 02:50| 来源: 网络整理| 查看: 265

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(); audioSource = videoPlayer.GetComponent(); StartCoroutine(PlayVideo()); foreach(Transform t in Buttons) { t.GetComponent().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()); //播放视频 videoPlayer.Play(); break; case "pause": videoPlayer.Pause(); break; case "stop": videoPlayer.Stop(); break; case "rePlay": videoPlayer.frame = 0; videoPlayer.Play(); break; } } }

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

动图如下:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有