Unity播放视频的几种方式
简介:许多游戏都是在开场CG播放后,进入主菜单的界面,例如炉石传说等。因此对unity播放视频的方式产生了兴趣,在查阅许多博客以及官方文档后,总结出以下几种方式,并以videoplayer方式制作一个简单的播放器
一、
首先是以MovieTexture方式播放视频,参考雨松MOMO的博客
这里原博客已经写的很详细了,这里不作过多阐述,仅以总结的方式描述
视频会以MovieTexture的方式导入unity
PC端
1.建立一个3d物体plane,修改plane的主纹理为导入的movietexture
2.通过UI直接绘制电影纹理movietexture
手机端
因为MovieTexture无法在手机上使用,因此在手机端上使用Handheld.PlayFullScreenMovie方式播放
备注:需要将视频放在Assets/StreamingAssets/路径下,、
二、
untiy在5.6版本推出了videoplayer控件,用以取代MovieTexture
导入的视频将默认以videoclip的格式保存,仍然保留MovieTexture格式的切换
以下是生成videoplayer控件的几种方式
1.新建一个空白的Video Player:选择菜单栏的GameObject->Video->Video Player或者在Hierarchy面板上选择Create->Video->Video Player或者右击Hierarchy面板空白处选择Video->Video Player。
2.直接将导入的VideoClip拖入场景或者Hierarchy面板,生成的VideoPlayer控件的VideoClip将会自动被赋值,如果场景中存在MainCamera,Camera也会被自动赋值为MainCamera,模式默认选择Camera Far Plane。
3.将导入的VideoClip拖动到场景中的Camera物体上,生成的VideoPlayer控件的VideoClip和MainCamera将会自动被赋值,模式默认选择Camera Far Plane。
4.将导入的VideoClip拖动到场景中的2D或者3D物体上,生成的VideoPlayer控件的VideoClip和Renderer将会自动被赋值,模式默认选择Material Override。
5.将导入的VideoClip拖动到场景中的UI物体上,生成的VideoPlayer控件的VideoClip将会自动被赋值,模式默认选择Render Texture。
视频来源
videoclip | 导入的本地视频 |
URL | 网络视频 |
以下是基本设置
Play On Awake | 脚本载入时自动播放 |
Wait For First Frame | 决定是否在第一帧加载完成后才播放,只有在Play On Awake被勾选是才有效 |
Loop | 循环 |
Playback Speed | 播放速度 |
Video Player视频渲染的方式
Camera Far Plane | 基于摄像机的渲染,渲染在摄像机的远平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用于背景播放器 |
Camera Near Plane | 基于摄像机的渲染,渲染在摄像机的近平面上,需要设置用于渲染的摄像机,同时可以修改alpha通道的值做透明效果,可用作前景播放器 |
render Texture | 将视频画面保存在Render Texture上,以供物体或者RawImage使用,可以用来做基于UGUI的播放器 |
Material Override | 将视频画面复制给所选Render的Material。需要选择具有Render组件的物体,可以选择赋值的材质属性。可制作360全景视频和VR视频 |
API Only | 未知 |
Video Player监听事件
errorReceived | 错误监听到时被执行 |
frameDropped | 有丢帧发生时被执行 |
frameReady | 新的一帧准备好时被执行 |
loopPointReached | 播放结束或播放到循环的点时被执行 |
prepareCompleted | 视频准备完成时被执行 |
seekCompleted | 查询帧操作完成时被执行 |
started | 在Play方法调用之后立刻调用 |
视频的声音输出有两种方式
direct | 直接和视频画面一起输出 |
Audio Source | 添加一个Audio Source组件,以Audio Source的方式输出 |
看了许多博客,有关于声音输出的两个问题
1.direct方式没有声音输出
这个问题在我运行中并没有碰到,因此无法理解其原因,大多解决办法是通过Audio Source方式添加Audio Source组件播放声音,留待考究。
2.有声视频和无声视频切换会造成无声
留待考究
三、
下面通过Video Player方式制作一个简单的视频播放器
以Render Texture的方式将视频渲染到新建的movie材质上,再新建一个UI-RawImage,将movie材质赋给它,再创建几个UI-Botton用来实现开始、暂停、倍速、快进等功能
新建一个空对象用来挂载脚本,再将脚本中的函数与UI的事件进行绑定
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;public class MyVideo : MonoBehaviour
{public VideoPlayer vPlayer;public GameObject rawImage;private double totaltime; //视频总时长private float skiptime = 10; //快进or快退的时间void Start(){vPlayer.loopPointReached += EndReached;totaltime = vPlayer.length;}//当视频播放完毕时关闭视频void EndReached(VideoPlayer vPlayer){rawImage.SetActive(false);}//关闭视频public void close(){vPlayer.Stop();rawImage.SetActive(false);}//播放or暂停public void startandpause(){if(vPlayer.isPaused==true){vPlayer.Play();}else if (vPlayer.isPlaying == true){vPlayer.Pause();}}//倍速播放public void playspeed(int value){float speed=1;switch (value){case 0:speed =1;break;case 1:speed =0.5f;break;case 2:speed =1.5f;break;case 3:speed =2.0f;break;}vPlayer.playbackSpeed = speed;}//快进public void next(){vPlayer.time += skiptime;}//快退public void last(){vPlayer.time -= skiptime;}
}
参考:https://blog.csdn.net/qq_24896943/article/details/76268980
github地址:https://github.com/Stardust-Alter/unity-video-player
Unity播放视频的几种方式相关推荐
- 【Unity 3D】常用播放视频的几种方式
[准备工作] 在Unity3D中想要成功播放视频并不是一件太简单的事,还是有着诸多限制的. 要求如下: (1) 视频.格式支持 .mov, .mpg, .mpeg, .mp4, .avi, .asf ...
- Unity3D教程:播放视频的两种方式
Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像, ...
- MFC实现播放视频的几种方式
因为涉及到播放视频,所以找了一下通用的几种. 1.ActiveX Windows Media Player控件 可以支持各种有损无损的视频格式,可扩展性也比较强,还是不错的. 这位兄台写得实在不错, ...
- Android 播放视频的三种方式
Android提供了常见的视频的编码.解码机制.使用Android自带的MediaPlayer.MediaController等类可以很方便的实现视频播放的功能.支持的视频格式有MP4和3GP等.这些 ...
- 解决【unity3d】播放视频的两种操作方式
想通过Unity3D播放游戏视频主要有两种方式.第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常 ...
- Android中播放音乐的几种方式
Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...
- 【Android】播放音频的几种方式介绍
转自:u013366008的博客 https://blog.csdn.net/u013366008/article/details/76577372 Android中播放音乐的几种方式 前言 前几天 ...
- 盛大游戏技术总监徐峥:Unity引擎使用的三种方式
在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
- Unity播放视频OGV格式视频
1.先把需要在unity中播放的视频进行格式转换.目标格式:XXX.OGV.像这种: 2.把转换过后的视频文件拖进unity里.需要更改文件Inspector面板的Importer Version选项 ...
最新文章
- 深入理解PHP原理之变量分离/引用(Variables Separation)
- HTML5中关于wheel事件兼容性处理
- 防止SQL注入解决方案
- java redis 主从配置_Redis实现主从复制(MasterSlave)
- mac android wifi调试
- 数据结构与算法-day3-归并 快速排序
- Arcgis用字段计算器计算只出一部分值另外一部分为null
- 【Debug探索团队公告】Debug探索团队,邀请您的加入
- 安捷伦频谱仪的使用方法图解_频谱分析仪的基本使用方法(转载)
- 四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc
- 安卓玩机之xposed框架安装
- 用计算机和手算标准差不一致,计量师基础知识教案二第三章.ppt
- python之使用pyaudio录音和格式转化
- java粒子群算法_Java多线程技术实现的粒子群优化算法
- P5706 【深基2.例8】再分肥宅水
- 股票量化交易系统的指标和策略有哪些?
- Java--IDEA报错Project ‘org.springframework.boot:spring-boot-starter-parent:2.2.0.RELEAS
- light动名词_动名词的用法英语语法大全
- 大数据创造智慧城市的未来之光!
- 程序员应当正确突破英语障碍
热门文章
- I2C裸机驱动程序设计
- 人脸检测需要的xml文件下载
- dnf命令参数详细说明、bclinux8或centos8以上系统使用dnf命令离线安装本地rpm包方法及场景和原因、使用dnf命令提示正在等待 pid 为422620的进程退出。的解决方法
- Barsetto百胜图美式便携咖啡机,总有这杯在身边
- PYTHON知识笔记
- Bootstrap 屏幕类型
- Steam一直提示重启以完成更新,重启完后还提示要重启
- 93岁老中医吃了60年的养生粥秘方
- 情人节,表白网页,nice!
- 魅蓝note3刷Android8.0,魅蓝Note3体验版刷机包系统升级V7.8.6.25