AVI Player with Playmaker actions 播放插件浅谈 (一)

来源:互联网 发布:兰蔻网络推广方案 编辑:程序博客网 时间:2024/04/30 10:27

  最近公司准备接一个项目是要用到播放器的,而且这个播放器还要在移动端使用这样。Unity3D里面是有可以播放视频的功能,但是并没有快进和倒退这个功能。因此Unity3d的播放器插件还真不少最多人用过的大概就是AVPro QuickTime这个插件了吧,AVPro 还提供了多种平台的播放器插件,每一个平台都有一个特定的插件,而且收费及其贵,贵,贵!!重要的事情要说3次!(PS:集合版好像是200美刀,单平台的150美刀)

  然后我就去研究了AVPro QuickTime这个插件(PS:网上资源多的是的插件),但是我发布出来后发现好像不支持安卓或者是苹果平台的,可是有人说支持。最后我并没有深入去研究AVPro QuickTime。(PS:找个时间我会去再研究一下的说),然后再Assetstore上搜到不少的播放器插件,然后再蛮牛上找到4个播放器插件,里有一个MMT的插件并不咋滴所以就没上传到云里面去了。所有的插件就如下图所示:(PS:这些插件会放到最后提供下载的,希望能有人一起去研究这些玩意)



  AVI Player with Playmaker actions以及AVPro QucikTime是可以在PC上正常运行的,但是Easy Movie Texture确实黑乎乎一片没有反应(PS:估计是我们公司电脑的问题,有够渣的)。AVPro发布安卓版后没播放出视频,到底是不支持还是我代码写错了,有时间我会去研究一下的。

  AVI Player with Playmaker actions是可以支持安卓和Ios的,所以我就去研究了这个播放器到底怎么用。

  我们先来看看这个播放器的案例吧

图一:

图二:

图三:


看完官方的案例你会发现这个播放器还不错哟!(PS:后面你会发现这个插件有个很蛋疼的地方!你慢慢看下去就知道为啥蛋疼了!)

如果你仔细观察官方案例你会发现,这个播放去所有的东西通过脚本MoivePlayer进行控制的。

然后我们在去看看里面到底有啥东西,下图为MoviePlayer脚本的属性:


其实你会发现其实里面的属性并不多,我们来慢慢研究研究一下这插件吧!

Source属性是一个TextAsset文本资源

AudioSource属性是一个AudioClip声音资源

Material属性是一个材质球

TextureProperty属性是一个string类型

Preloadvideo属性是一个bool类型

Preloadaudio属性是一个bool类型

Drawtoscreen属性是一个bool类型

ScreenMode属性是一个枚举类型

ScreenGUIdepth属性是一个int类型

(re)load和unload都是函数类型

Currentvideotime属性是一个float类型

Currentvideoframe属性是一个int类型

Play和Loop属性是bool类型

上面是MoviePlayer是在Inspectors面板上所有可以看到的属性(PS:还有一些运行时候会出现的属性就不说了)

首先我们会觉得很神奇为啥没有看到movieTexture属性,不知道movieTexture的小伙伴么自己去谷歌一下就知道了。这个插件并不是用MovieTexture进行视频的控制,AVI有自己的视频解码器,在unity3D视频播放器插件里面不是很奇怪的事情,但是AVI确实走着与别人不同的路线,因为他的视频格式绝对是听说的类型,他是用bytes格式进行播放的意味着你的视频是需要转换格式的,而且格式转化的方式AVI提供给了两种方式给你,你可以在unity3D上自己去转化。不知道是我设置错了还是哪里出问题了,目前我只能用一种方式来转化。(PS:如果有哪个大大用过请教教我!)

Source这个参数了就是你存放播放视频的位置,你可以通过 Resources.Load<TextAsset>()或者拖到Source熟悉等其他方式来加载所需要播放的视频,怎样用法很简单吧。

AudioSource这个参数是你视频播放的声音,你可能会疑问难道视频和声音要分开制作?这个问题完全是多余的,因为AVI可以自己解析视频是否有声音,这表示你的视频如果有声音它就会帮你加载声音,如果没有就不会加载这样你可以把视频和声音分开制作或者合并一起都不会有影响。

Material这个参数说明了AVI是支持模型上纹理 的视频的播放方式的,也就是你上文看到的图片三中的案例。

TextureProperty这个参数如果你学过shader你就知道这个啥玩意了,如果你打开官方案例的shader就会发现shader里面Textrue参数就是用_MainTex来命名的,如下图所示:

这两个参数到底能做神马,这里就不用说了吧~


Preloadvideo和Preloadaudio怎么用就不用说了吧,我们来说说效果就好了,如果开启Preloadvideo这个选项就是视频画面停止了但是声音还有视频还在继续播放,Preloadaudio按理来说和Preloadvideo效果一样吧,但是我试过开启了并没有效果。

Drawtoscreen,ScreenMode,ScreenGUIdepth这个三个参数都是针对GUI,感觉是为了演示功能的方便其他原因展示还不了解,Drawtoscreen是否开启GUI来全屏播放视频,ScreenMode是设置GUI渲染方式,ScreenGUIdepth以及GUI层设定。


(re)load和unload看这个函数名字就知道这个用来加载视频的,你可能会觉得很好奇你上面不是说过这个加载资源直接可以用Resources.Load<TextAsset>()来加载视频么?其实这个load视频初始化以及以及加载渲染屏幕上来,unload可以理解成是用于卸载掉视频视频资源。

Currentvideotime和Currentvideoframe是视频播放的时间以及数据帧数,也就是视频播放的时间数但不是视频播总长度。

Play参数就是是否开始播放视频,Loop参数就是判断是否开启循环播放视频。



AVI Player with Playmaker actions 先暂时介绍到这里,在第二篇我会介绍怎样在UGUI上播放视频毕竟用GUI来控制视频不好控制(PS:NGUI这个和UGUI用法很类似),第三篇我会介绍怎样转化视频格式。


                                                                                                                                                                                                                                                               ---Begonia

0 0
原创粉丝点击