EasyNVR多通道非按需直播视频播放时卡顿如何处理?
EasyNVR作为一款稳定的流媒体服务平台,已经在很多场景得到了应用,比如智慧城市、智慧校园等方面,很多场景都会有几百路甚至几千路的摄像头接入,因此我们也需要对这些高接入量的场景进行测试。
在测试EasyNVR时发现在同时拉200路非按需的流时,播放视频时会出现卡顿的现象,需要将流减少到100路左右播放才不会卡顿,这个卡顿非常影响项目的使用。
起初我们以为是内核的原因,因为接入的两百路流只有第一路是使用obs推的,其它都是使用nvr内核分发的第一路rtsp流,所以猜测是不是内核本身分发的限制导致卡顿,于是我们重新开了两个内核,从每个内核上拉100路流,测试后发现还是会卡顿,排除了内核的原因。
我们开始在go上层代码推流的地方查找问题,发现在收到视频帧回调时会判断是不是关键帧,如果是关键帧会把它保存文件,又猜测是不是这里保存文件耗时导致的卡顿,接着将这里的代码进行了注释,发现还是不对。我们又将推流里所有可能影响卡顿的地方都进行了优化,能使用协程的地方都启用了协程,能优化的文件操作都进行了优化,测试还是会卡顿。
最后在没有任何思绪的查找
共有 0 条评论