流媒体Android 音视频移动端音视频开发

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

2017-05-21  本文已影响279人  FlyingPenguin

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


视频直播花屏&绿屏 原因

花屏

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

全屏花屏

有一种花屏是正常的,就是码率特别低的时候出现的大面积马赛克,我们俗称"画面糊了"。
比如我们告诉视频编码器要输出1280 720高清分辨率的画面,但同时要求它只用 200 kbps的码率*(码率是指编码器每秒产生的视频数据大小 ),编码器此时能做的事情就是无底线地降低画质,就会导致大面积的马赛克。

局部花屏

解决方法:
增加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);

绿屏

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

References:

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

上一篇 下一篇

猜你喜欢

热点阅读