最近搞了个rtsp直播,初步是能用了,但是最终效果不是很好,客户不接受要求我们一定要继续优化。
原因是他们体验的时候发现会概率性出现马赛克和画面卡顿情况,经过我们测试验证,确实是有这个问题存在。
从原理上分析可能的原因有如下几个:
1、网络原因导致丢帧了。 2、App客户端接收buf不够大。 3、rtsp服务器发送buf不够大。
我们通过和App联调,将buf缓冲区改大了很多倍然后进行测试,发现效果没有得到改善,所以应该不是这两个原因。
那就只能是第一个原因,通过网络工具监视分析,发现我们的wifi网络带宽是足够的,按照我们直播的分辨率和码流计算,实时带宽只要有600kb就足够了,wifi测试文件下载可以达到5M/s.
但是在做直播的时候网速质量的稳定性不好,就是有时候会突然掉到200kb/s,以下,然后又恢复回去。
于是我们做了第一个改善,
改善一:降低直播视频编码的码率
经过验证将网络需求控制在200kb/s左右是效果有比较大的改善,但是概率性还是会有,只是好了很多,为什么不能再往下降了呢,因为码率再往下降视频清晰度太低了没法用。
另外通过vlc播放器的分析对比查看,另外一款产品rtsp比较流畅的I帧的频率比我们高很多,我们的一秒只有一帧II帧,但是他们的大概有4帧I帧。
所以我们做了第二个改善
改善二:增加编码 I 帧 的频率。
我们测试改到一秒六帧,效果又进一步提升。