RTMP推流组件EasyRTMP在弱网环境下推流稳定吗?会不会有推流失败的问题?

浪尽此生 提交于 2021-01-03 16:32:09

EasyRTMP推流组件是一套调用简单、功能完善、运行高效稳定的RTMP专用推流组件,能够应用于各种行业的直播需求,手机直播、桌面直播、摄像机直播、课堂直播等方面。

RTMP.png

TSINGSEE青犀视频有用户使用libeasyrtmp在弱网环境下推流,经常会有推流失败或者断开的问题。对于这种问题,开发人员通过网络抓包进行查看。

28.png

推流断开是由libeasyrtmp客户端主动断开的。而其他的推流工具,同样的网络环境下并没有断开。

29.png

从抓包看,由于网络环境差,存在很多超时重传,同样的对于libeasyrtmp中的超时,直接断开连接了。查看代码,libeasyrtmp对于socket超时设置的2s,所以对于超时超过2s就会断开连接。

我们可以重新设置超时时间,设置为10s.

int timeout = 10000;
if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char*)&timeout, sizeof(timeout)) == -1)
{
RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!", `ls_function` , timeout);
}
else
{
	RTMP_Log(RTMP_LOGDEBUG, "%s, Setting socket timeout to %ds success!", `ls_function` , timeout);
}
setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout));

修改过后再次通过抓包验证,连接成功,并且超时10s的时候没有再断开。

30.png

所以我们可以得出结论,针对弱网环境下的推流,可以修改libeasyrtmp的socket超时时间,通过延长时间来保持连接。

关于EasyRTMP

EasyRTMP流媒体推送软件(以下简称“EasyRTMP”)是一套调用简单、功能完善、运行高效稳定的RTMP功能组件,经过多年实战和线上运行打造,支持RTMP推送断线重连、环形缓冲、智能丢帧、网络事件回调,支持Windows、Linux、arm(hisiv100/hisiv200/hisiv300/hisiv400/etc…)、Android、iOS平台,支持市面上绝大部分的RTMP流媒体服务器,包括Red5、nginx-rtmp、crtmpserver、FMS、Wowza等主流RTMP服务器,能够完美应用于各种行业的直播需求,手机直播、桌面直播、摄像机直播、课堂直播等场景。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!