Unity3D VideoPlayer播放视频和音频

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

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

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

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

把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,运行即可

动图如下:

Unity3D VideoPlayer播放视频和音频相关推荐

  1. 安装了Phonon,却不能播放视频和音频

    安装了Phonon,却不能播放视频和音频,同时提示警告: WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend pl ...

  2. 使用HTML和css播放视频和音频

    使用HTML和css播放视频和音频 使用video播放视频 使用audio播放音频 使用video播放视频 video属性可以给网页加载视频,详细属性见下图 不是所有格式的视频都可以被浏览器支持,比如 ...

  3. 【Unity3d】在Unity3d中播放视频:AVPro Video的使用

    1.插件介绍 之前讲到使用Unity的MoveTexture和Image来实现简单的播放器,虽然可以实现简单的视频播放功能,但是对于商业化或者移动端的项目来说远远不够.RenderHeads提供了一款 ...

  4. 解决【unity3d】播放视频的两种操作方式

    想通过Unity3D播放游戏视频主要有两种方式.第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常 ...

  5. U3D VideoPlayer播放视频和坑点

    最近做的游戏里,需要先播放一段几秒钟的工作室LOGO片头,拿到的视频是AVI格式,以前没在U3D里用到过视频,本以为很简单,没想到都2022年了,U3D播放视频还这么烂... 插件最好用的是AVPro ...

  6. android点击视频使用固定应用打开,Android 使用intent打开手机自带应用播放视频,音频,文档,还有打开应用市场...

    1 打开手机上的视频播放器播放视频String url = "http://192.168.0.1/1.mp4" Intent intent = new Intent(); int ...

  7. Qt的QMediaPlayer播放视频和音频

    这里只是做简单的测试,功能简单,代码如下: QVBoxLayout *layout = new QVBoxLayout; QVideoWidget* vw = new QVideoWidget(); ...

  8. Unity3d Windows播放视频(视频流)功能组/插件支持对比

    前言 目前作者常开发的系统就是智能工厂.园区,数字孪生系统等,经常用到播放各种视频的功能,而且甲方经常有部署好的各种监控系统,如果接入到系统就涉及到各种视频流的格式rtsp.rtmp.m3u8等.所以 ...

  9. 播放视频和音频文件java

    import javazoom.jl.player.Player; import org.junit.jupiter.api.Test; import java.io.BufferedInputStr ...

最新文章

  1. pip安装更新、第三方库对应的python解释器版本、pip安装第三方库,压缩包离线安装,pycharm快捷安装及pycharm中terminal的使用,timeout超时报错
  2. 告别Kafka Stream,让轻量级流处理更加简单
  3. scholar communication
  4. 面试必问,如何控制多个线程的执行顺序
  5. 复现HITB PHP lover代码审计
  6. Tomcat集群快速入门:Nginx+Tomcat搭建集群
  7. 【渝粤教育】国家开放大学2019年春季 2767养猪技术 参考试题
  8. hashmap 扩容是元素还是数组_曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?...
  9. J2EE学习辅助工具资料列表及下载3(初学积累中)
  10. 卸载oracle——详细版
  11. Greenplum创建存储过程
  12. Mysql 执行顺序
  13. 想自学python看哪位的视频比较好-python自学视频看这个就对了
  14. Linux sys_call_table变动检测
  15. 【更新】Essential Studio for Xamarin更新至2018 v4(三)
  16. numpy系列之拷贝和视图
  17. 苹果个人开发者账号如何升级成公司账号
  18. VS2019的动态库dll在lua中调用及lua.exe和luac.exe的使用方法
  19. 绕过chrome的弹窗拦截机制
  20. 2022苹果ios个人开发中注册遇到的问题

热门文章

  1. 白炽灯护眼还是LED护眼?盘点led护眼灯品牌排行
  2. 基于STM32的最小系统电路设计(手把手零基础教学)
  3. Java 实例 - 字符串分割和字符串分隔
  4. Python3 创建文件夹
  5. 尚医通(九)数据字典模块前后端 | EasyExcel
  6. 计算机关于剪贴板的知识,复制、剪切、粘贴与剪贴板、内存的关系
  7. ATTCK v10版本战术介绍—资源开发
  8. 【NLP】文档集数据处理 gensim corpora.Dictionary 的简单使用
  9. linux文件系统的基本特征,Linux文件系统的基本结构
  10. Java学习之常用的Java构建工具