最近做的游戏里,需要先播放一段几秒钟的工作室LOGO片头,拿到的视频是AVI格式,以前没在U3D里用到过视频,本以为很简单,没想到都2022年了,U3D播放视频还这么烂。。。
插件最好用的是AVPro,除非你有大量的视频要播放,否则没必要用插件,一个是贵,另一个插件很大。
首先,我用的转格式软件是格式工厂,各种格式导入U3D会有乱七八糟的问题,导进来了不能用,或者不能识别,我一开始弄得是OGV格式,编辑器可以用,PC端打包就显示不出来了,最后各种实验,MPG4在PC端是可以用的。
1。画面质量一定不要选4K,或者非常卡,必须2K以下,如果还卡再减。
2。视频编码一定要选MPEG4,选其他的导入不了U3D。
其次,U3D的VideoPlayer组件逻辑是,声音和画面分开处理。
先在这个组件上挂一个视频,再把视频输出到RenderTexture,然后再来一个RawImage组件来接受RenderTexture,如果有声音的话,再连到一个Audio Listener上,我的视频是没有声音,所以音频的处理我这边没弄。
RenderTexture,鼠标右键就能创建了。
视频文件可以放在StreamingAssets,也可以放在Resources里,没有规定一定要放在哪。
这个办法是最方便最快速的,要做的东西也比较少,PC端肯定能用,手机上没试过。
videoPlayer.Play(); //播放
videoPlayer.Stop(); //停止
videoPlayer.Pause(); //暂停
videoPlayer.Prepare(); //准备
videoPlayer.targetTexture.Release(); //清除残留画面
videoPlayer.started //开始回调
videoPlayer.prepareCompleted //准备完成
videoPlayer.loopPointReached //结尾回调
videoPlayer.time = 5; //视频时间跳到多少秒
准备和准备完成回调,如果视频比较大,我估计是先准备再回调,再播放,这样会不卡。因为我的视频就几秒,就没去试。