你的位置:首页 > 操作系统

[操作系统]Unity3d 播放高质量视频解决方案


Unity3d 播放高质量视频解决方案~

 

最近在折腾一个视频游戏.真的是一个视频游戏,游戏主背景是个大视频.可能切换三四个视频,而且需要无缝切换.

平台是安卓,蕊片是rockclip.找了各式各样的插件.

  1. movietexture,只能播放OGG和OVG,而且质量比较低.如果要转成高质量的视频,文件尺寸比较大. 放弃,继续找.
  2. easymovietexture, 某些机子上黑滴~兼容性不好,继续找.
  3. avipro 额,是这个名字么,最后发现只能在IOS上使用.继续找.
  4. Vuforia video playback (下方使用vvp代替)高通的SDK里自带一个video playback.拿了出来,改了改能用.

但是有些问题, 在这里顺便扯一下给后面有需要的同学:

  1. 播放SD卡上的视频巨卡.是机器问题么?(倒没有在手机上试过,有试过的同学麻烦告知我.)我看了一下Log,出血的地方.其实不是真的报错.why? =.=
  2. vvp底层是使用mediaplayer进行播放.原理大概是在一个subface上播放,然后画在一张texture上,在unity3d里使用这张texture.
    1. 如果是使用streamasset目录下的视频,playertype会等于3,即使用awsomeplayer
    2. 如果在sd卡上的视频,playertype==7则使用FFPlayer. 使用FFplayer的时候会巨卡而且很慢. 

      由于使用了jmi, 我不太熟,没有具体调试瓶颈在哪里. 在vuforia论坛上问, 理所当然的没有人鸟. 我最后下载了android的源代码,想抽时间看看,最后还是没折腾成. 知道的同学告诉我一声哈.

  3. 播放方式.我一开始两个vvp来播放6个视频, a播放1,b播放2,a播放3,以此类推. 后来直接就闪退了..omg.我在安卓上直接使用mediaplayer是不会出现这个问题的.

    所以我推论是内存侧露了~ 后来改成6个vvp播放6个视频.由于是需要多次进这个场景播放不同的6个视频, 看来闪退也只是时间问题.

    我又在vuforia论坛上问, 又理所当然的没有人鸟.  (PS:我在vurofria论坛上见到一个货刷了一屏的问题.....)

  4. 卡咯~ 东西加多了,CD没有上去,但是还是卡了.各方面.VVP也是一方向. 后面的解决方案就不卡鸟.

 

 

最后的解决方案:

使用 Unity3d 4.2版本. 该版本可以在eclipse里设置u3d的subfaceview为透明. 从而与原生的元素一起显示.

嗯.以上方案我也是想到,然后GG出来的结果.

感谢前人的载树,不然这个项目我要栽了=.= 铁定是个各种不安定因素的东西.

我在eclipse里设置subfaceview透明,这个很容易做到.然后在view下加了个videoview. 生成jar后丢到u3d里. (额,这个大家应该都会.如果不会请留言我再把代码丢上来)

videoview里可以加载各种视频, 质量高, 不闪退, 还能播放SD卡上的视频, 性能也有提升. 性能提供了300%还稳定.

如果是需要小区域使用视频的同学,完全用代码控制视频的位置. 当然这是我的假定.真正实施应该还有其他问题.

OLE, 第一次写博客园的文章随意写到这儿. c u.

 

PS: 这儿的编辑器真不好用,而且没有u3d的分类 =.=