如题的问题经过反复测试之后,起初将问题锁定在的的的的的VideoPlayer的效率问题以及UDP的多线程问题上。
但是经过反复比对排除了UDP多线程出现错误导致卡死的可能。
后续测试中,发现播放中的程序的CPU占用非常高,每个EXE占用CPU会达到23%以上,当程序多开或者单个程序运行,一定几率会使某一个的EXE播放画面停止,但是程序还在运行,测试输出的数字还在不断变化,当点击退出程序时,程序无响应,死掉了。
多方查询无果后,朋友提醒视频导入时默认不转码的,并且视频画面卡死可能与视频有关
选中视频后,在检查面板中将
转码勾选上,将编解码器选为自动,然后点击应用,转码过程中UNITY3D抛出有一个坏帧的警告(可能是客户给的视频有问题,并且每次视频卡死,都卡死在第一帧,这个坏帧可能就是嫌疑犯)。
转换完成后导出测试,每个EXE的CPU占用率降低到8%左右,并且卡死的情况一直没有出现。
总结:究竟是不是这几个原因(1.没有进行视频转码,2。视频有坏帧,3 videoplayer的效率问题,4.cpu占用率过高)导致的视频卡死,还需要在进行多次验证,但是将视频转码后再用,会提高效率是肯定的,最起码CPU占用率降低了。
以上经验可能有诸多错误,希望路过大神顺手斧正,不胜感激。
2020/10/15 14:24 :
Unity自带的视频播放器存在诸多问题,推荐大家使用Avpro插件进行视频播放,已经在诸多项目中进行过验证,播放很稳定,并且支持网络视频、4K视频的长时间播放。偶尔会出现编码格式不支持的问题,用格式工厂转下码即可。新版本的AVpro支持录制电脑屏幕,功能还是比较强大的。
Avpro是付费插件,AssetStore中有售,大伙可趁打折入手,很好用。