Unity基础 视频组件VideoPlayer,视频的播放与控制

news2024/11/25 10:55:04

在Unity中,视频播放功能具有广泛的应用,以下是一些视频播放在Unity中的常见用途:

      游戏引入和过场动画:使用视频播放可以在游戏开始或过场动画中添加引人注目的视频,为游戏制造氛围和引起玩家的兴趣。这种方式可以通过播放游戏故事、游戏背景介绍或重要情节的视频来增强游戏体验。

       游戏菜单和用户界面:通过在游戏菜单和用户界面中嵌入视频,可以提供更具吸引力和互动性的界面。例如,在游戏菜单中播放游戏预告片、特色片段或游戏玩法示例视频,以向玩家展示游戏的特点和玩法。

       教育和培训应用:视频播放在教育和培训应用中非常有用。通过在虚拟教室、培训模块或教育游戏中播放教学视频,可以提供生动直观的学习体验。视频可以用于展示实验操作、演示概念、解释复杂的过程或提供示范。

      交互式虚拟现实(VR)和增强现实(AR)体验:在VR和AR应用程序中,视频播放可以用于增强虚拟世界的真实感和交互性。例如,在虚拟旅游应用中,可以通过播放真实场景的视频来模拟旅游体验。在AR应用中,可以通过播放与现实环境相匹配的视频来实现虚拟内容的融合。

      用户反馈和游戏剧情推进:通过在游戏中播放特定的视频片段,可以提供有关游戏进展或任务完成的反馈。这可以包括奖励视频、任务完成动画或剧情推进的关键片段。这样,玩家可以获得即时的视觉和听觉反馈,增加游戏的沉浸感。

     总而言之,视频播放在Unity中扮演了许多重要的角色,从增强游戏体验到教育培训应用,以及为用户界面和交互式虚拟现实提供更多可能性。通过利用Unity的VideoPlayer组件,您可以轻松地在项目中实现视频播放功能,为用户带来更加丰富和多样化的体验。 

   首先我们先了解一下视频播放的组件VideoPlayer 

:视频播放源,有视频剪辑和URL两个选项,视频剪辑可以直接选择视频片段,URL需要放入视频链接

唤醒时播放:当程序运行的时候是否直接播放,勾选后视频默认是播放的

等待第一帧:是否预先缓存一帧,默认勾选就行,如果不勾选在播放的时候没缓存会出现无视频等待情况

循环:视频播放完毕后重新播放

回放速度:视频播放速度

渲染模式:视频播放时候的渲染模式,默认使用渲染纹理(UI)和材质覆盖(场景中),使用渲染纹理需要右键新建渲染器纹理,材质覆盖需要渲染器纹理+材质球

音频输出模式:声音的输出模式,可以选择音频源(需要指定一个音频播放组件)或者直接(直接用视频的声音,默认这个就可以) 

渲染器纹理(Render Texture)也是在视频播放中不可或缺的

       渲染器纹理是一种特殊的纹理,它能够记录摄像机的渲染结果,并将其保存为图像。这种纹理可以被用于实时监视、后期特效、纹理抓取和多摄像机渲染等场景。它可以让我们实时查看摄像机拍摄到的画面,应用各种特效效果,捕获纹理并将其应用到其他物体上,实现动态纹理效果,以及支持多摄像机同时渲染不同场景。渲染器纹理为我们提供了更多的创造性和灵活性,增强了游戏和应用程序的视觉效果。

      当我们想要在游戏或应用中播放视频时,通常会使用VideoPlayer组件来加载和控制视频文件。然而,直接将视频渲染到屏幕上可能无法满足我们的需求,因为我们可能希望在游戏场景中的特定位置播放视频,或者将视频内容应用到游戏对象的表面上。

      这就是渲染器纹理发挥作用的地方。我们可以创建一个渲染器纹理,并将VideoPlayer组件的输出设置为该纹理,这样视频播放的内容就会被渲染到该纹理上。接着,我们可以将该纹理应用到游戏对象的材质上,或者在UI元素中显示该纹理,从而实现视频的播放效果。 

在场景中播放视频

     假如我们需要将视频播放在场景中播放,我们可以新建一个平面用来作为显示视频的载体,然后增加视频播放组件

    之后我们右键-创建一个渲染器纹理,创建后直接将这个渲染器纹理拖到平面上 

        这时候会自动生成一个材质球并且赋值给这个平面

然后我们找到视频播放组件,将需要播放的视频赋值,可以看到视频播放组件的Renderer就是我们新建的Plane,然后点击运行就可以看到视频播放了(此时的模式是材质覆盖),当然我们也可以调整这个平面的缩放在调整正在播放视频的尺寸 

在UI中播放视频

首先在层级面板右键-UI-原始图像(RawImage)

创建后我们可以把刚才新建的渲染器纹理直接拖动到RawImage组件下面的纹理中

然后我们添加视频播放组件(VideoPlayer),将视频指定,然后将渲染模式设置为渲染器纹理,将渲染器纹理赋值,点击运行就可以播放了 

下面我们看一下如何用代码对视频组件进行控制,先看一下常用的属性和方法 

//playOnAwake       唤醒时播放,程序运行时是否默认就播放视频
//isLooping         循环播放,播放完成后是否重复播放
//playbackSpeed     播放速度,默认从0-10
//waitForFirstFrame 等待第一帧
//isPlaying         当前是否在播放
//isPaused          当前是否暂停
//Stop()            停止播放,每次使用停止播放再次开始播放时候都会重新播放视频
//Pause()           暂停播放,只是咱停播放,再次开始播放时会从暂停的地方开始播放
//Play()            开始播放,使用停止或者暂停播放可以通过Play重新开始播放 

 以下代码是如何对视频播放组件的一些参数进行控制,以及控制视频的播放和停止

using UnityEngine;
using UnityEngine.Video;//需要引入视频组件的命名空间
public class VideoPlayerTest : MonoBehaviour
{

    //视频播放组件
    private VideoPlayer _videoplayer;

    void Awake()
    {
        //获取自身的视频播放组件
        _videoplayer = GetComponent<VideoPlayer>();
    }

    void Start()
    {
        //设置运行时播放
        _videoplayer.playOnAwake = true;
        //设置是否循环播放
        _videoplayer.isLooping = true;
        //设置视频倍速
        _videoplayer.playbackSpeed = 1.5f;
        //设置预先缓存一帧
        _videoplayer.waitForFirstFrame = true;
        //如果音频输出模式指定了音频组件可以通过代码控制
        //控制视频静音
        _videoplayer.GetTargetAudioSource(0).mute = false;
        //控制视频音量大小
        _videoplayer.GetTargetAudioSource(0).volume = 0.5f;
    }
    void Update()
    {
        //按下键盘P键来判断当前视频是否在播放,如果是播放状态就停止,如果是停止状态就开始播放
        if (Input.GetKeyDown(KeyCode.P))
        {
            if (_videoplayer.isPlaying)
            {
                _videoplayer.Stop();
            }
            else
            {
                _videoplayer.Play();
            }

        }
        //按下键盘A键来判断当前视频是否在暂停,如果是播暂停就播放,如果是播放就暂停
        if (Input.GetKeyDown(KeyCode.A))
        {
            if (_videoplayer.isPaused)
            {
                _videoplayer.Play();
            }
            else
            {
                _videoplayer.Pause();
            }

        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/661717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维知识进阶篇】zabbix5.0稳定版详解2(自定义监控+报警+图形+模板)

zabbix内容很多&#xff0c;这篇文章继续给大家介绍&#xff0c;zabbix功能很强大&#xff0c;只要是能获取到的数据都可以监控&#xff0c;俗称万物可监控&#xff0c;这也就决定了zabbix有很大的自由度&#xff0c;本篇文章包括自定义监控&#xff0c;自定义报警&#xff0c;…

分类预测 | MATLAB实现PSO-DBN粒子群优化深度置信网络多输入分类预测

分类预测 | MATLAB实现PSO-DBN粒子群优化深度置信网络多输入分类预测 目录 分类预测 | MATLAB实现PSO-DBN粒子群优化深度置信网络多输入分类预测效果一览基本介绍模型描述程序设计参考资料效果一览

LC-1262. 可被三整除的最大和(状态机DP)

1262. 可被三整除的最大和 难度中等229 给你一个整数数组 nums&#xff0c;请你找出并返回能被三整除的元素最大和。 示例 1&#xff1a; 输入&#xff1a;nums [3,6,5,1,8] 输出&#xff1a;18 解释&#xff1a;选出数字 3, 6, 1 和 8&#xff0c;它们的和是 18&#xff…

图的操作算法详解

一.图 基础概念&#xff1a; 有向图 - 图中每个边都有一个方向&#xff0c;例如社交媒体网站上的关注关系图就是有向图。无向图 - 图中每个边都没有方向&#xff0c;例如朋友之间的相互认识关系图可以是无向图。简单图 - 没有自环和重复边的无向图或有向图&#xff0c;例如一…

025.【树形结构算法】

1. 树的定义 树形结构是由n个元素组成的有限集合&#xff0c;如果n0&#xff0c;那么就称为空树&#xff1b;如果n>0&#xff0c;树形结构应该满足以下条件&#xff1a; 有一个特定的结点&#xff0c;称为根结点或根。 除根结点外&#xff0c;其余结点被分成m(m≥0)个互不…

面试官:一个 TCP 连接可以发多少个 HTTP 请求?

目录 &#x1f914; 第一个问题 &#x1f914; 第二个问题 &#x1f914; 第三个问题 &#x1f914; 第四个问题 &#x1f914; 第五个问题 曾经有这么一道经典面试题&#xff1a;从 URL 在浏览器被被输入到页面展现的过程中发生了什么&#xff1f; 相信大多数准备过的同…

产品经理面试常见的25个必问题(一)

1、你认为产品经理的工作职责是什么&#xff1f; ●需求阶段&#xff08;需求收集、需求管理、需求分析、需求评估&#xff09; ●设计阶段&#xff08;业务流程、功能模块、原型交互、需求文档&#xff09; ●开发阶段&#xff08;需求评审、项目管理、测试验收&#xff09…

centos版本的EDA虚拟机搭建1

0、参考博客 Centos镜像国内最全下载地址 VMware Workstation CPU如何设置才更加合理&#xff1f;如何才能发挥虚拟机最大性能 1、下载网站 http://mirrors.aliyun.com/centos/7/isos/x86_64/centos镜像文件下载完成。 2、vmware搭建centos 新建虚拟机。 选择自定义。 …

mysql中的索引

1、索引是什么&#xff1f; 在mysql当中&#xff0c; 内部系统它有两种查询方式&#xff0c; 一种是(全盘扫描查询)&#xff0c;另外一种是通过(索引检索查询)&#xff0c;通过添加了索引的字段进行查询&#xff0c; 可以大大提高查询效率 mysql中的索引相当于一本书中的目录&a…

java 物流配货管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 物流配货管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

centos7系统:HAProxy软件部署

目录 目 的&#xff1a; 硬件需求: ​编辑 实验环境配置&#xff1a; haproxy的服务器配置&#xff1a; nfsrps服务器部署&#xff1a; nginx服务器1部署: nginx服务器2部署&#xff1a; 目 的&#xff1a; 两台nginx服务器做web服务&#xff0c;haproxy服务器做调度负载均…

(6.9-6.15)【大数据新闻速递】

【上海数交所将携手清华大学等举办首届数据资产入表研修班】 上海数据交易所获悉&#xff0c;数交所将联合清华大学五道口金融学院、上海市数商协会于6月28日至29日举办首届数据资产入表研修班。财政部印发《企业数据资源相关会计处理暂行规定&#xff08;征求意见稿&#xff…

前沿应用丨大规模无人机集群与“虚实结合”半实物仿真系统

一、应用背景 无人机集群在军事、安全、救援、航空监测、物流配送等领域具有广泛的应用前景。它可以提高任务执行的效率、灵活性和安全性&#xff0c;同时降低人力资源的需求和风险&#xff0c;无人机集群研究涉及多个学科领域&#xff0c;如机器人学、控制理论、通信技术和人工…

【算法与数据结构】383、LeetCode赎金信

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;这道题的思路和242、有效的字母异位词的思路一样   程序如下&#xff1a; class Solution { public…

好好存钱,是成年人最顶级的自律

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 王尔德说&#xff1a;“在我年轻的时候&#xff0c;曾以为金钱是世界上最重要的东西。现在我老了&#xff0c;才知道的确如此。” 路遥说&#xff1a;“钱是好东西&#xff0c;它能使人不再心慌&#…

指纹识别工具WhatWeb使用教程,图文教程(超详细)

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 WhatWeb 一、扫描网站指纹二、扫描强度三、扫描内网…

ZeroQuant-V2 LLM权重与激活量化

ref ZeroQuant-V2: Exploring Post-training Quantization in LLMs from Comprehensive Study to Low Rank Compensation 4bit量化为什么重要 The case for 4-bit precision: k-bit Inference Scaling Laws 这篇文章研究表明4bit通常是最优的量化方法&#xff1a;同样的量化…

快速选择合适的GNSS模拟器,看这几个重点

为了正确测试GNSS接收器或其他任何依赖GNSS信号的系统或设备&#xff0c;工程师需要模拟与真实卫星广播相同的RF信号&#xff0c;而使用GNSS模拟器是实现这一工作的最佳选择。 假设正在开发一种需要集成GNSS接收器的新产品&#xff0c;想要验证接收器设备在不同条件下是否运行…

企业为什么要关注库存?因为那都是“钱”!

库存是企业管理的核心&#xff0c;公司必须提供足够的商品来满足客户需求&#xff0c;但又不能冒着浪费金钱和资源的风险&#xff0c;一味的增加库存。 不同的企业在库存管理这个问题上就“八仙过海各显神通”了&#xff0c;常见的处理方法有&#xff1a; 1. 经验法&#xff1a…

求两数之和

必应壁纸供图 题目描述 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不…