【Unity3D】VideoPlayer组件_unity videoplayer-程序员宅基地

技术标签: VideoPlayer  正方体上播放视频  Unity3D  胶囊体上播放视频  视频播放  # Unity基础  

1 简介

        AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放。

        VideoPlayer 属性面板如下:

  • Source:视频源类型,有 2 种类型:Video Clip、URL;
  • Video Clip:视频片段;
  • Play On Awake:启动时播放视频;
  • Wait For First Frame:是否在第一帧加载完成后才播放,只有在 Play On Awake 被勾选时才会生效;
  • Loop:是否开启循环播放;
  • Playback Speed:播放速度;
  • Render Mode:渲染模式,主要有:Camera Far Plane(在相机远平面上播放,需要绑定到相机,此时其他物体都在视频前面)、Came Near Plane(在相机近平面上播放,需要绑定到相机,此时其他物体都在视频后面)、Render Texture(视频的每一帧输出到 Render Texture 文件中,可以使用 RayImage 显示 Render Texture,这样视频就可以在 RayImage 中播放)、Material Override(需要绑定到一个 Renderer 对象,如 Cube 的 MeshRenderer,这样视频就可以在立方体表面播放);
  • Renderer:渲染器,当 Render Mode 选择为 Material Override 时才会有此选项,如:将 Hierarchy 窗口的 Cube 对象拖拽到 Renderer 中,视频就会在 Cube 表面播放;
  • Audio Output Mode:音频输出模式,主要有:None(不输出音频)、AudioSource(用 AudioSource 播放)、Direct(直接发送到音频输出硬件)。

2 播放视频

        1)在 RayImage 中播放视频

        在 Hierarchy 窗口创建一个 Empty 对象,并为其添加 VideoPlayer 组件,将视频片段拖拽到 Video Clip 中,勾选 Loop 选项,调整 Render Mode 为 Render Texture;在 Assets 窗口创建 Render Texture 文件,并将该文件拖拽到 VideoPlayer 组件中的 Target Texture 中。VideoPlayer 组件配置如下:

        在 Hierarchy 窗口创建一个 RayImage 对象,调整其宽高分别为 600、300,并将 Assets 窗口的 Render Texture 文件拖拽到 RayImage 的 Texture 选项中,如下:

        运行效果如下:

        2)在立方体表面播放视频

        在 Hierarchy 窗口创建一个 Cube 对象,并为其添加 VideoPlayer 组件,将视频片段拖拽到 Video Clip 中,勾选 Loop 选项,调整 Render Mode 为 Material Override,并将 Cube 对象拖拽到 Renderer 中,VideoPlayer 组件配置如下:

         运行效果如下:

        3)在胶囊体表面播放视频

        在 Hierarchy 窗口创建一个 Capsule 对象,并为其添加 VideoPlayer 组件,其配置方法同第(2 节,运行效果如下:

3 播放视频(代码控制)

        在 Hierarchy 窗口创建一个 RayImage 对象,并为其添加 VideoPlayer 组件,调整 Render Mode 为 Render Texture;在 Assets 窗口创建 Render Texture 文件,并将该文件拖拽到 VideoPlayer 组件中的 Target Texture 中以及 RayImage 组件的 Texture 中,配置如下:

         给 RayImage 对象添加脚本组件如下:

        VideoController.cs

using UnityEngine;
using UnityEngine.Video;

public class VideoController : MonoBehaviour {
	private VideoPlayer videoPlayer;

	private void Awake() {
		videoPlayer = GetComponent<VideoPlayer>();
		videoPlayer.isLooping = true;
		videoPlayer.playOnAwake = false;
		videoPlayer.clip = (VideoClip) Resources.Load("Video/Video");
		videoPlayer.Prepare(); // 播放引擎准备(提高开始播放时的速度)
	}

	private void Start() {
		videoPlayer.Play(); // 播放
	}

	private void Update() {
		if (Input.GetKeyDown(KeyCode.Space)) {
			if (videoPlayer.isPlaying) {
				videoPlayer.Pause(); // 暂停
			} else {
				videoPlayer.Play(); // 播放
			}
		}
	}
}

        运行效果:

        同第 2 章第 1)节,按空格键,可以控制视频播放和暂停。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37602827/article/details/126671476

智能推荐

vue点击当前元素添加class 删除兄弟元素的class_vue removeclass-程序员宅基地

文章浏览阅读1.1w次。在vue中当我们要实现点击元素动态添加类名时,我们不能像JQ那样去用(xxx.addClass(‘class’).siblings().removeClass(‘class’))实现,那我们应该怎样去做呢解决方案:1.在data里面申明一个属性,默认值最好为数字类型,并且不得大于当前元素+所有兄弟元素的length,可以默认为0(第一个元素选中)2.在当前元素中添加动态class: “:cl..._vue removeclass

【示例】QWidget如何查找子控件?_qwidget孩子的类型-程序员宅基地

文章浏览阅读2.5k次。原文链接:https://www.fearlazy.com/index.php/post/324.htmlQWidget类没有提供查找子控件的方法,但是它爹QObject有。这个方法就是findChild,它长这样:很显然它是一个模板,因此使用时需要提供一个类型,这个类型就是要查找的对象的类型。函数有两个参数:第一个是要查找的对象名(对象名通过setObjectName设置)第二个表示查找直接孩子还是递归查找(可以查找后代的后代),默认Qt::FindChil.._qwidget孩子的类型

Unity有哪些让做项目事半功倍的插件值得推荐?_qhierarchy 下载-程序员宅基地

文章浏览阅读3.1k次。Unity开发最好的地方就是有各种强大的插件,有哪些插件让大家事半功倍,稳定强大 值得推荐学习和入手呢?Unity5.0之后,制作UI 以及UI的动画,UI特效,大家一般都使用什么插件?或者说有什么好的插件推荐?关于特效制作,大家又有什么好的插件使用经验?请大家分享下各自的项目经验和插件推荐吧。添加评论 分享按投票排序按时间排序_qhierarchy 下载

UNITY_LIGHT_ATTENUATION, 光照衰减-程序员宅基地

文章浏览阅读5.5k次,点赞4次,收藏13次。用于计算光照衰减系数。参数一为返回值(光照衰减系数),参数二用于阴影计算,参数三是世界坐标实现代码位于AutoLight导入文件之中,使用之前需要#include "AutoLight.cginc"源码:_LightTexture0解析:https://blog.csdn.net/zengjunjie59/article/details/109532962unity_WorldToLight :用于把顶点从世界空间转换到光源空间(https://blog.csdn.net/zengjun_unity_light_attenuation

NR系统概述-架构与演进-程序员宅基地

文章浏览阅读2.8k次,点赞7次,收藏14次。大家好,从今天开始我会把NR相关的知识以博文的方式放上来。可能速度会比较慢,时间也会拉得很长,因为内容比较多,我还在整理中,而且很多内容关联性很强,我得考虑介绍的先后顺序。从我学习3GPP的经验考虑,我大概的思路是这样的:1. 介绍NR的一些背景知识,主要是架构与演进。2. 介绍NR的主要无线技术。3. 介绍5G NR一些专有概念,其中主要是5G 帧结构和相关的物理资源的组成单位。4.然后把5G NR无线频谱相关的内容介绍一下,不会太细。只是笼络地把相关知识点梳理一遍,当然,如果您是专门做._nr

在arm上移植eSpeak-1.48.04_espeak交叉编译-程序员宅基地

文章浏览阅读3.1k次。开发板运行系统:32位linux主机 ubuntu17.041、下载portaudio_v18_1.ziphttp://www.portaudio.com/download.html2、下载eSpeak-1.48.04-source.ziphttp://espeak.sourceforge.net/download.html3、交叉编译por_espeak交叉编译

随便推点

使用开源人脸特征提取器进行脸部颜值评分_研究如何提取其他面部特征实现年 龄预测和颜值评分?-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏18次。本文仅为模型应用实战,而非颜值研究,所得结果仅供娱乐,仅供参考。方法也仅供参考。一般而言,数据量越大,结果越接近正常人审美。由于本次数据量较小,故仅为实验。使用环境:ubuntu14.04,opencv3.2.0,dlib19.6,python2.7一、准备工作:1、下载dlib库,下载特征提取模型。该模型的作用是通过卷积神经网络产生128维的特征向量,用以代表这张脸。网络输入参数为人脸landm..._研究如何提取其他面部特征实现年 龄预测和颜值评分?

VisualStudioUninstaller完全卸载VisualStudio-程序员宅基地

文章浏览阅读3.9w次,点赞29次,收藏112次。VisualStudioUninstaller完全卸载VisualStudio最近做项目,vs版本一直没确定,导致自己装了vs2015,还装了vs2013。然后项目确定需要用boost库,两个vs共存,自己编译boost库一直出问题。下定决心要卸载vs,重新安装vs2013。以前的经验告诉我,自己去卸载很容易卸载不干净,甚至损坏系统。查了一些方法,发现VisualStudioUnins..._visualstudiouninstaller

postgres的update_time设置_postupdatetime-程序员宅基地

文章浏览阅读2.5k次。create or replace function upd_timestamp() returns trigger as$$begin new.update_time = current_timestamp; return new;end$$language plpgsql;create or replace function cre_timestamp() returns tr..._postupdatetime

linux下加载so文件_native.loadlibrary linux so文件-程序员宅基地

文章浏览阅读2.9k次。记一下最近碰到的一个加载so文件的问题简介:so文件就是C编译后的文件。适用于linux系统。windows中使用的是dll。java中的调用方式很简单:HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("hcnetsdk", HCNetSDK.class);这里采用的是jna 。采用maven的可以导入jna的依赖。采用gradle以及未采用maven方式的可以放jar。gradle这里如果想放jar的话,需要:c_native.loadlibrary linux so文件

贝叶斯实现文本分类C++实现-程序员宅基地

文章浏览阅读1k次。//NaiveBayes.h#ifndef NAIVEBAYES_H_#define NAIVEBAYES_H_#include#include#include#include#include#include#include#include#include#includeusing namespace std;class NaiveBayes{private:

理解和使用索引+事务+存储引擎(Mysql5.7)_mysql5.7 的需要事务如何选取引擎-程序员宅基地

文章浏览阅读210次。目录1. 索引概述2. 存储引擎概述3. 事务概述1. 索引概述2. 存储引擎概述3. 事务概述_mysql5.7 的需要事务如何选取引擎

推荐文章

热门文章

相关标签