Unity 视频播放杂谈
http://www.cnblogs.com/zsb517/p/4060814.html
背景:
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();
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()进行绘制,如果使用多个视频,需要多个材质(也就是多个渲染管道)。
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);
}
转载 请注明:细雨淅淅
Unity 视频播放杂谈的更多相关文章
- Unity视频播放的各种实现方式汇总
http://www.taidous.com/bbs/article-860-1.html Unity视频播放有很多种实现方式,可根据要求来选择适当的实现,这里总结一下: 1. MovieTextu ...
- unity视频播放,
PC端视频播放: Unity中实现PC端播放视频,非常easy用到MovieTexture属于贴图Texture的子类. 在播放视频之前.我们得记得下载quicktime插件,仅仅有导入了quickt ...
- (转)薛飞 基于VLC的Unity视频播放器(二)
转自:http://www.manew.com/thread-144229-1-1.html 留个记录.
- 记录一款Unity VR视频播放器插件的开发
效果图 先上一个效果图: 背景 公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下: Unity视频插件调研 网 ...
- 【VR视频播放】解决Unity模型贴图反转的问题
使用UV贴图网模型上贴的时候, 会出现图片反过来的情况. 根本原因是因为, 一般系统的屏幕坐标系(例如Android)是左上角为原点(0,0), 但是Unity的贴图是以左下角为原点(0,0) 方法有 ...
- 【Unity插件】LitJson杂谈
距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿.这次谈一下在实习里新碰到的一个Unity插件--LitJson(也可以去官网下载最新版). 开场白 LitJson是一个开源项目,比较小巧轻便,安 ...
- Unity实现Android端视频播放
本文只讲Android短的视频播放 实现方式 使用Handheld.PlayFullScreenMovie(),这个函数实现.具体如下: 1.创建StreamingAssets文件夹,此文件夹放入视频 ...
- Unity透明视频播放 所需的Shader脚本
Shader "Custom/ShaderMovie" { Properties { _MainTex("Color (RGB)", 2D) = "b ...
- Unity 中场景切换
Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在.如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一 ...
随机推荐
- win7搭建web服务器
首先找到安装的tomcat软件,打开里面的webapp文件夹,在里面新建一个文件夹用作web应用程序访问端地址,然后再到新建的文件夹test里放入想要被访问的东西,这里我用的是一个测试的页面test. ...
- JavaWeb学习笔记——JSP标准标签库JSTL
- 解惑好文:移动端H5页面高清多屏适配方案 (转)
转自:http://mobile.51cto.com/web-484304.htm https://github.com/amfe/lib-flexible/blob/master/src/makeg ...
- JVM 小结
1.jvm虚拟机的种类及特点 Sun Classic:解释和编译不能协调使用:使用基于句柄的对象查找. Exact VM:解释和编译能协调使用:采用准确式内存管理:可以知道内存中某个位置的数据是什么类 ...
- Mini ORM——PetaPoco笔记(转)
记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoco-Improvements PetaPo ...
- [Unity] 查找资源
有时候需要通过代码来为对象指定一个资源.可以通过下面的函数来查找资源. /// <summary> /// 查找资源 /// </summary> /// <return ...
- centos 7.0 查看根目录下所有文件夹
centos 7.0最小化安装 第一行是登录 [root@localhost ~]# [root@localhost ~]# cd ../ [root@localhost /]# ls bin dev ...
- mysql dumpfile与outfile函数的区别
一直以为两个函数作用是相同的 经过简单测试发现还是有些区别的 如下表admin mysql> select * from admin; +-----+-----------+-- ...
- 微信jssdk录音功能开发记录
原文地址:http://www.cnblogs.com/liujunyang/p/4962423.html
- 【8-19】java学习笔记01
JDK API文档 java SE 8 API文档:http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downl ...