1.引言
最近在RK339开发做项目时,碰到一个非常棘手的问题,挂机测试或终端后重启后具有小概率的花屏,抖动,而且这个现象是不可逆,只有重启推流服务或者重启整个终端,才会恢复。这个问题会导致视频采集,编码,推流的效果很差,导致用户体验很差。所以本文我就来分析下整个过程,以及解决办法。
2.视频花屏、抖动问题定位
我们在谈到视频花屏时,一般首先想到就是丢帧导致,那为什么会丢帧呢?丢帧是一个结果,那是什么原因导致丢帧?采集模块丢帧,编码模块丢帧,还是推流模块丢帧呢?还是什么其它原因呢?顺着这个思路开始了大量的测试和debug。在定位前,先理清以下数据流程,看看下面这样视频数据流向图:
如果大家不想阅读大量的文字,可以直接看看以下这张视频花屏、抖动问题分析图,详细分析还是需要看看后面的文字。
在排查另外一个问题时,我把CPU频率降到最低了,发现这个花屏抖动现象必先,而且不可逆,这个现象终于能够用最稳定的步骤复现出来。RK3399是有6个CPU,一个GPU,其中CPU0-CPU3是小核,小核最高频率是1.5GHz,CPU4-CPU5是大核,大核最高频率是1.8GHz,默认情况优先跑满CPU0-CPU3,再跑CPU4-CPU5,所以RK3399并没有开启最高性能。RK3399的CPU有这几种工作模式&