近来为了方便用户监控车辆实时视频,在小程序上开发了实时查看车辆摄像头视频的功能,在此过程中遇到了一个问题。这个问题的现象是这样的,在苹果手机(iphone8P)上打开视频或长时间播放视频后,会出现小程序卡死或者闪退(被ios杀掉了微信进程),但是在安卓下一切正常。
实时播放视频使用的是小程序的live-player组件,经过测试发现在mode参数中使用live(直播)模式不会出现这个问题,但是选用RTC模式在播放几秒后就会出现。反复测试后,发现在min-cache、max-cache设置值过大时,使用RTC模式会出现卡死或闪退。最初因为车载设备的物流网卡工况恶劣网速较差,所以在缓存加载时,将时间选得较长,使用了10秒的缓存时间,在这一点上可能适得其反,起了反作用。经过调整,选用live模式,min-cache=1、max-cache=3的情况下,播放视频的效果相对流畅,同时初始加载等待时间也宜接受。
按网上资料介绍,在RTC模式下min-cache、max-cache设置值不起作用,但是怀疑在ios系统中起了作用,导致缓存过长时,视频加载时间较长后消耗内存,导致系统卡顿并被系统杀掉。当然这个只是根据现象的猜测,只是从测试的结果进行的反向推导,因为如果使用live模式并不会出现闪退,只是打开时会等待较长时间才能播放视频。
从这几天的试用结果来看,设置使用的cache值后,运行稳定,没有再出现类似的情况。
最后还有一处需要考虑,就是RTC模式下,如果打开autoplay也可能引起闪退,这是其他开发者遇到过的问题,但在我的测试手机上就算关了autoplay也依然还是出现闪退,这里仅做参考。