简介:许多游戏都是在开场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播放视频的几种方式相关推荐

  1. 【Unity 3D】常用播放视频的几种方式

    [准备工作] 在Unity3D中想要成功播放视频并不是一件太简单的事,还是有着诸多限制的. 要求如下: (1) 视频.格式支持 .mov, .mpg, .mpeg, .mp4, .avi, .asf ...

  2. Unity3D教程:播放视频的两种方式

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

  3. MFC实现播放视频的几种方式

    因为涉及到播放视频,所以找了一下通用的几种. 1.ActiveX  Windows Media Player控件 可以支持各种有损无损的视频格式,可扩展性也比较强,还是不错的. 这位兄台写得实在不错, ...

  4. Android 播放视频的三种方式

    Android提供了常见的视频的编码.解码机制.使用Android自带的MediaPlayer.MediaController等类可以很方便的实现视频播放的功能.支持的视频格式有MP4和3GP等.这些 ...

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

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

  6. Android中播放音乐的几种方式

    Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...

  7. 【Android】播放音频的几种方式介绍

    转自:u013366008的博客  https://blog.csdn.net/u013366008/article/details/76577372 Android中播放音乐的几种方式 前言 前几天 ...

  8. 盛大游戏技术总监徐峥:Unity引擎使用的三种方式

    在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...

  9. Unity播放视频OGV格式视频

    1.先把需要在unity中播放的视频进行格式转换.目标格式:XXX.OGV.像这种: 2.把转换过后的视频文件拖进unity里.需要更改文件Inspector面板的Importer Version选项 ...

最新文章

  1. 深入理解PHP原理之变量分离/引用(Variables Separation)
  2. HTML5中关于wheel事件兼容性处理
  3. 防止SQL注入解决方案
  4. java redis 主从配置_Redis实现主从复制(MasterSlave)
  5. mac android wifi调试
  6. 数据结构与算法-day3-归并 快速排序
  7. Arcgis用字段计算器计算只出一部分值另外一部分为null
  8. 【Debug探索团队公告】Debug探索团队,邀请您的加入
  9. 安捷伦频谱仪的使用方法图解_频谱分析仪的基本使用方法(转载)
  10. 四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc
  11. 安卓玩机之xposed框架安装
  12. 用计算机和手算标准差不一致,计量师基础知识教案二第三章.ppt
  13. python之使用pyaudio录音和格式转化
  14. java粒子群算法_Java多线程技术实现的粒子群优化算法
  15. P5706 【深基2.例8】再分肥宅水
  16. 股票量化交易系统的指标和策略有哪些?
  17. Java--IDEA报错Project ‘org.springframework.boot:spring-boot-starter-parent:2.2.0.RELEAS
  18. light动名词_动名词的用法英语语法大全
  19. 大数据创造智慧城市的未来之光!
  20. 程序员应当正确突破英语障碍

热门文章

  1. I2C裸机驱动程序设计
  2. 人脸检测需要的xml文件下载
  3. dnf命令参数详细说明、bclinux8或centos8以上系统使用dnf命令离线安装本地rpm包方法及场景和原因、使用dnf命令提示正在等待 pid 为422620的进程退出。的解决方法
  4. Barsetto百胜图美式便携咖啡机,总有这杯在身边
  5. PYTHON知识笔记
  6. Bootstrap 屏幕类型
  7. Steam一直提示重启以完成更新,重启完后还提示要重启
  8. 93岁老中医吃了60年的养生粥秘方
  9. 情人节,表白网页,nice!
  10. 魅蓝note3刷Android8.0,魅蓝Note3体验版刷机包系统升级V7.8.6.25