直播问题分析总结 -- 花屏&绿屏

直播时有时会遇到花屏或绿屏的现象,都有那些原因会导致这种现象呢?
我梳理了部分原因:


视频直播花屏&绿屏 原因

花屏

花屏主要分为整个画面都花屏或局部花屏两种情况。

全屏花屏
  • 正常花屏

有一种花屏是正常的,就是码率特别低的时候出现的大面积马赛克,我们俗称"画面糊了"。
比如我们告诉视频编码器要输出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帧的情况下,画面的大部分区域是正常的,只有在发生变化的那部分区域会存在局部花屏。

绿屏

产生绿屏的主要是: 无法渲染的画面有些用黑色填充,有些用绿色填充,有些用上一帧画面填充。
视频参数改变, 而解码端的SPS&PPS信息未及时重新获取更新,会导致画面无法正常渲染,继而导致绿屏的现象出现。

References:

https://com123.kf5.com/hc/kb/article/1028720/
http://www.itnotepad.cn/Home/Article/num/136.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 5,136评论 1 24
  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 7,395评论 2 21
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,072评论 25 709
  • 谁能对未来有确定的判断呢?只要不是传说中算命的!反过来,能证明自己对未来的判断是正确的之所以难上加难,是因为: 需...
    艾问才会赢阅读 297评论 0 3
  • 你见过很多的人,也听过很多迷人的话 真真假假,假假真真。没有什么是必要去坚守的 努力做自己吧。
    有时候呢阅读 275评论 0 1

友情链接更多精彩内容