全屏花屏
正常花屏
有一种花屏是正常的,就是码率特别低的时候出现的大面积马赛克,我们俗称"画面糊了"。
比如我们告诉视频编码器要输出1280 720高清分辨率的画面,但同时要求它只用 200 kbps的码率*(码率是指编码器每秒产生的视频数据大小 ),编码器此时能做的事情就是无底线地降低画质,就会导致大面积的马赛克。
视频参数问题
比如当视频源修改过视频参数(如从720P修改1080P),此时客户端用于解码的SPS&PPS如果没有重新获取的话,就会出现整个画面花屏的现象。这种花屏的现象会一直持续下去,不会随着时间而恢复正常画面。
视频参数变化 导致全屏花屏或绿屏
局部花屏
SO_SNDBUF的Buffer太小
当流媒体服务器的SO_SNDBUF的Buffer太小, 在网络环境不好时,导致部分直播数据丢失(比如丢失P帧),继而会导致部分花屏的现象。
解决方法:
增加SO_SNDBUF的Buffer大小。
SOCKET sSocket = ...
...
int nRcvBufferLen = 1024*1024
int nSndBufferLen = 4*1024*1024
int nLen = sizeof(int)
setsockopt(sSocket, SOL_SOCKET, SO_SNDBUF, (char*)&nSndBufferLen, nLen)
setsockopt(sSocket, SOL_SOCKET, SO_RCVBUF, (char*)&nRcvBufferLen, nLen)
P帧丢失
I帧正常丢失P帧的情况下,画面的大部分区域是正常的,只有在发生变化的那部分区域会存在局部花屏。
这个应该是片源的问题
如果显卡或者显示器有问题的话会一直有花屏的现象,不是偶尔出现
蓝光相对分辨率和刷新率要高一些,如果只是花屏一下应该是片源的问题了
以上供参考,希望可以帮到您