Unity 视频播放杂谈
原文链接:http://www.cnblogs.com/zsb517/p/4060814.html?utm_source=tuicool
背景:
1 Win/Mac
Pause | Pauses playing the movie. |
Play | Starts playing the movie. |
Stop | Stops playing the movie, and rewinds it to the beginning. |
audioClip | Returns the AudioClip belonging to the MovieTexture. |
duration | The time, in seconds, that the movie takes to play back completely. |
isPlaying | Returns whether the movie is playing or not. |
isReadyToPlay | If the movie is downloading from a web site, this returns if enough data has been downloaded so playback should be able to start without interruptions. |
loop | Set this to true to make the movie loop. |
1 renderer.material.mainTexture = movie; //设置材质 2 3 movie.loop = true; //循环播放 4 movie.Play(); //播放 5 movie.Pause(); //暂停 6 movie.Stop();
![](http://images.cnitblog.com/blog/413927/201410/292240033311934.png)
![](http://www.renderheads.com/portfolio/UnityAVProQuickTime/images/demo.jpg)
![](http://www.renderheads.com/portfolio/UnityAVProQuickTime/images/components.png)
2 移动端
在移动端,unity并不提供MovieTexture,AVPro QuickTime也用不了,其最基本的显示方案使用通过PlayFullScreenMovie()函数进行全屏播放,根据其官网解释,主要有以下方面:
(1)视频流直接从设备存储器中获得,所以文件只能是单独提供,视频文件放置在StreamingAssets 文件夹中
(2) 视频播放过陈中,Unity将会停止;播放结束后unity自动恢复;播放过程中屏幕中的颜色会变为播放器的背景颜色,播放之后恢复。
(3)在IOS中,内部实际上是调用MPMoviePlayerController的方法
(4)能够支持的格式: .mov, .mp4, .mpv, and .3gp ,H.264,MPEG-4 Part 2 video
Handheld.PlayFullScreenMovie ("StarWars.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
话不投机,两句多,还是果断第三方插件,Mobile movie texture for android 就是很不错的东西,利用开源视频编解码库Theora进行视频解码,然后通过Unity Texture实现显示。下图为多视频显示效果:
应用中的一些问题:(1)因为视频编解码库是使用Theora ,所以只能支持OGG、OGV格式的视频和音频,如果要使用其他格式则需要转换一下,可以Theora Converter .NET工具进行转换。(2)视频seek功能不是很精确,虽然能用(3)多视频播放问题,如果想要多少视频同时播放,需要理解内部代码的实现,修改后可以凑合着使用。多视频播放的另外一个问题是效率问题,如果是N个视频,可能就会有N个后台线程在进行解码操作,相应的也会有N个渲染管道进行渲染,我在RK3188上进行三个不同视频的播放,就会有卡顿。多视频播放中间理解的关键代码在下面,Texture2D.CreateExternalTexture 函数从视频中获得贴图资源,SetTextures()进行绘制,如果使用多个视频,需要多个材质(也就是多个渲染管道)。
![](/assets/blank.gif)
private void AllocateTexures(){m_ChannelTextures[0] = Texture2D.CreateExternalTexture(m_yStride, m_yHeight, TextureFormat.BGRA32, false, false, GetNativeYHandle(m_nativeContext));m_ChannelTextures[1] = Texture2D.CreateExternalTexture(m_uvStride, m_uvHeight, TextureFormat.RGBA32, false, false, GetNativeCrHandle(m_nativeContext));m_ChannelTextures[2] = Texture2D.CreateExternalTexture(m_uvStride, m_uvHeight, TextureFormat.RGBA32, false, false, GetNativeCbHandle(m_nativeContext));if (m_movieMaterials != null){for (int i = 0; i < m_movieMaterials.Length; ++i){var mat = m_movieMaterials[i];if (mat != null){SetTextures(mat);}}}}public void SetTextures(Material material){material.SetTexture("_YTex", m_ChannelTextures[0]);material.SetTexture("_CrTex", m_ChannelTextures[1]);material.SetTexture("_CbTex", m_ChannelTextures[2]);material.SetTextureScale("_YTex", m_uvYScale);material.SetTextureOffset("_YTex", m_uvYOffset);material.SetTextureScale("_CbTex", m_uvCrCbScale);material.SetTextureOffset("_CbTex", m_uvCrCbOffset);}
![](/assets/blank.gif)
转载:
作者: 细雨淅淅
出处: http://www.cnblogs.com/zsb517/>
关于作者:专注游戏、交互、虚拟现实、三维建模领域,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可发送邮件咨询.
Unity 视频播放杂谈相关推荐
- Unity 视频播放
Unity 视频播放 前言 在Unity引擎做视频播放的方式有很多种,这里介绍两种.一种是使用RawImage组件的纹理进行视频播放,将视频每一帧的画面复制在RawImage的纹理贴图中,实现视频的播 ...
- 关于Unity视频播放器插件 AVPro Video(二)3D物体上视频播放
1.官网下载该插件或者我分享的链接: 链接:https://pan.baidu.com/s/1boGeJ8r 密码:mvbf 2.新建项目创建主要控制物体 3.创建对于视频播放在3D物体身上的材质 4 ...
- unity视频播放,
PC端视频播放: Unity中实现PC端播放视频,非常easy用到MovieTexture属于贴图Texture的子类. 在播放视频之前.我们得记得下载quicktime插件,仅仅有导入了quickt ...
- UNITY3D自学(六)-- unity视频播放的Quicktime问题
unity3d播放视频. 1.首先下载QuickTime.默认目录安装. 2.搞清楚,支持的视频格式:mov, .mpg, .mpeg, .mp4, .avi, .asf格式 .这是我从别人那得来 ...
- linux 视频 插件,avpro video 插件-Avpro Video(Unity视频播放插件)下载 v1.039官方免费版--pc6下载站...
AvproVideo是一款由强大团队出品的可以在Unity上安装使用的万能多平台视频播放插件AvproVideo支持WindowslinuxiosmacAndroid等多平台万能播放.. 相关软件软件 ...
- Unity视频播放的脚本控制
本文在完成基于VideoPlayer组件的视频播放基础上再加上脚本控制,实现对视频播放的切换.暂停及继续播放功能. 视频播放的准备工作可参考我的博文:https://blog.csdn.net/cs8 ...
- 基于VLC的Unity视频播放器(二)
using Net.Media; using System; using System.IO; using System.Runtime.InteropServices; using UnityEng ...
- Unity优化杂谈2(MONO内存)
Mono内存是Unity中不会释放的内存,他的容量一旦被撑大,项目所占的内存就会跟着增大,不能手动释放.是一个比较危险的地方,wetest给出的标准是峰值不要超过50M,wetest里面会有最大的to ...
- 2022-08-26 Unity视频播放4——全景视频
文章目录 一.在 Unity 中使用全景视频 二.使用全景视频时的注意事项 Unity 支持的全景视频: 等距圆柱投影布局,也称为球面投影.简化圆柱投影.矩形投影或普通圆柱投影 视频宽高比为 2:1 ...
最新文章
- 图论500题 ---- (枚举+并查集)求图上路径权值差值最小 HDU find the most comfortable road
- exchange2007收件人管理
- 【若依(ruoyi)】打开新的选项卡
- C++的Json解析库:jsoncpp和boost
- RestFramework之认证组件
- java当前时间推前三个月_获取当前时间的前三个月 java
- 面试题——栈的压入、弹出顺序
- pandas合并groupby_Pandas中级技巧-数据的灵活运算
- 垃圾收集器和内存分配
- html标签b规定粗体文本
- Mac009--Axure RP安装
- 计算机word排版实训报告,Word排版实训报告
- c语言写莫迪康通信,常用PLC通信协议有哪些?
- 作品展第二周——痛并快乐着
- 废旧笔记本屏幕不要扔,不到200元就能DIY成便携显示器
- Failed to execute goal org.apache.maven.pluginsmaven-install-plugin2.5.2install (default-cli) 的
- PV 和 UV 的区别
- 5VUSB微孔雾化器IC方案FS150C SOP8带自动扫频加湿器IC
- Ubuntu20.04.2.0上veins/subprojects/veins_inet运行出错的问题
- PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
热门文章
- HTML案例(二)---登录页
- 对于JAVA中count=count++的理解
- java dns缓存清理_JVM DNS缓存问题
- 怎样录屏不带水印?分享一款无水印录制视频软件!
- MySQL下载与安装、mysql服务启动与停止、mysql使用cmd命令行登录、SQLyog下载与安装,sqlyog登录与操作mysql
- 全场景智慧:新工业革命必须拥抱的晨曦
- CAN通讯程序C语言,CAN通讯协议C语言程序
- 【机器学习】机器学习、深度学习、强化学习之间的关系
- 【阅读】《网页设计创意书》第五章——风格和主题
- php操作ElasticSearch搜索引擎流程详解