Unity 使用UMP造成CPU和内存占用过高

问题遇到的现象和发生背景

Unity 使用UMP插件多路播放视频,因为有切换RTSP流播放的需求,频繁切换下,CPU和内存占用爆炸,具体操作如下:
左边是一个摄像机列表,右边是九屏幕的播放器

img

实际上九屏幕播放器就是九个UMP插件预制体组成的播放器,已经预置好了

img

用代码块功能插入代码,请勿粘贴截图

这是单击播放器切换话画面的代码
单击播放器,会把自己选择的rtsp流给UMP播放器的path属性,然后play()

             //单击播放器,会把自己选择的rtsp流给UMP播放器的path属性,然后play()
           if (rtsp != "" && rtsp != null)
            {
                OnClikeButton.GetComponentInChildren().Path = rtsp;
                //播放
                OnClikeButton.GetComponentInChildren().Play();
                OnClikeButton.transform.Find("Txt").GetComponent<Text>().text = information;
            }

这是双击之后,隐藏其他所有播放器,放大这个播放器的代码,以及放大之后再双击缩小的代码
除了被双击放大的播放器,其他的播放器直接SetActive(false),有正在播放的rtsp地址,就保存起来

                //除了被双击放大的播放器,其他的播放器直接SetActive(false),有正在播放的rtsp地址,就保存起来。
                if (item.Value.GetComponentInChildren<UniversalMediaPlayer>().Path!=""&& item.Value.GetComponentInChildren<UniversalMediaPlayer>().Path != null)
                {
                    RtspList[item.Key].substream = item.Value.GetComponentInChildren<UniversalMediaPlayer>().Path;
                }
                item.Value.SetActive(false);

当被放大的播放器缩小,其他播放器SetActive(true),并把保存的rtsp地址重新赋值并play

                item.Value.SetActive(true);
                foreach (var item1 in RtspList)
                {
                    if (item.Key == item1.Key && item1.Value!=null)
                    {
                       
                        item.Value.GetComponentInChildren<UniversalMediaPlayer>().Path = item1.Value.substream;
                        item.Value.GetComponentInChildren<UniversalMediaPlayer>().Play();
                    }

                }

运行结果及报错内容

当我在摄像机列表选择了一个画面放到九屏幕播放器里面播放,把九个画面填满,cpu占用极高

img

当我反复执行的放大一个画面隐藏其他画面,亦或频繁的给其中一个播放器重新替换画面,实际上都是频繁切换rtsp地址的操作,导致了CPU爆炸

img


放大效果图

img


缩小效果图

img

我的解答思路和尝试过的方法

之所以这样,我个人猜测可能是频繁的,或者密集的建立TCP通道和断开TCP通道造成的紊乱,和TCP通道无法及时断开造成的
我尝试过先stop再play,那样效果更差。
画面之所以这么模糊是我将主码流切换为辅码流,否则,连9屏幕的画面都支撑不了
也试过赋值的时候略微给一些延迟,效果依然不是很理想

我想要达到的结果

解决在unity平台多路播放rtsp流CPU占用过高和频繁切换rtsp流CPU占用爆炸的问题

后台都显示,所谓的切换,仅仅是谁可见和谁不可见。
我就不信,频繁切换谁可见谁不可见,还能把“CPU和内存占用爆炸”!

看下是否借鉴该文中的思路:opencv读取rtsp网络流问题与优化方案,链接:https://blog.csdn.net/submarineas/article/details/110083906

看起来不像是硬解码……

Unity3D消耗CPU过高解决办法
https://blog.csdn.net/qq_43538857/article/details/106023937