这是一篇非常工程化的博客,只是记录自己实际中遇到的一个让当时的自己惊讶的问题。发现再小的知识都值得记录,过久了再做真的会忘。
正文
我在使用opencv使用rtsp读取网络摄像头时,发现图像卡顿、时长变花、而且程序老是报decode错误,一大片红色的警告和错误。一直以为是读取方式有问题,或者时opencv做的不够好。经过讨论和测试,我们发现了一个很重要的原因,就是解码需要消耗大量的cpu资源! 我们在解码分辨率和帧率很高的码流时,可以看一看cpu的使用率,很有可能是398%(4核机器)。这显然是很危险的。当我们降低帧率,cpu占用率达到机器的50%(一般就是8核的机器峰值就是800%,4核400%,解码不能把机器性能榨干了,你还需要做其他的工作)左右时,就不会出现变花和decode的警告或者错误了。