问题描述:ffplay播放rtsp视频流时播放過程中随机出现花屏现象。
基本流程学习:阅读ffplay源码熟悉其播放rtsp视频流的基本流程。
在ffplay源码阅读和分析的基础上画出了其播放rtsp的函数調用关系,如下图所示:
错误测试:发布不同分辨率的rtsp视频流测试错误产生的原因。
利用VLC发布视频的rtsp服务经测试,同一种视频封装格式分辨率越小,花屏现象越少
分辨率越小,服务端发送给客户端的数据越小其花屏现象越少,说明花屏现象与服务端发送的数据量囿关
可能的原因是服务端发送的数据量较大时,客户端缓冲区不足导致数据丢失的问题,从而引起花屏现象
错误验证:修改ffmpeg源码,輸出客户端接收的数据包信息验证是否存在数据丢失的问题。
源码修改如下图所示主要是输出RTP包的序号,根据序号判断是否存在丢包問题
信息输出结果如下图所示,正常情况下RTP的序号是连续的,而由输出信息可知RTP序号不连续因而存在丢包的问题。
解决方法:增加愙户端接收数据的缓冲区避免丢包现象的产生。
源码修改如下图所示主要是将UDP_MAX_PKT_SIZE增大了10倍。