前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rtmp推流异常快速恢复方案

rtmp推流异常快速恢复方案

原创
作者头像
视频云直播helper
发布2022-01-12 23:51:28
2.2K0
发布2022-01-12 23:51:28
举报
文章被收录于专栏:视频云直播视频云直播

1、问题分析

我们以一个实际现网的case来引入该问题,3月9日,巴西地区的主播,流id:stream-2990700835946365032

在20:50-21:50这段时间整体的推流帧率非常低,丢帧非常严重,但用户量非常大,有5w+人在线,下行近100G播放带宽

从cdn播放质量维度来看,对应时间段,卡顿率非常高,观看质量非常差。

紧急情况中,采取了断流迫使推流端重新推流,快速恢复了推流的稳定。

如上图所示,在21点47分左右,重新推流后,推流帧率稳定在30帧,卡顿率也恢复到正常水平。

经分析,该主播是在巴西,上行接流也在巴西,服务端存在大量的慢速日志:

其实这种由于单个tcp连接慢速问题,在海外复杂的推流环境中经常发生。海外的链路比较复杂,而且链路非常长,有时刚开始推流质量非常稳定,时间长了,网络出现抖动后,就会出现上述网络变差的情况,导致数据传输不稳定。

欧美等发达国家网络质量好,带宽比较充足,都能满足正常的直播推流。在一些发展中国家,比如中东,东南亚,电信基础设置比较差,网络带宽不足,本地运营商存在各种带宽限制。很容易出现推流一段时间后,出现网络不稳定的情况,断流重推后就能恢复正常。为了避免调度到同一个节点上,通常通过配置host的方式,指定接入节点,来避免调度到同一个节点,来恢复正常推流。

上述的异常情况,一般通过断流重推或切换推流节点的方式,往往能解决大部分的问题。服务器端主动断主播连接风险很高,如果推流端处理不好,还会出现主播推流异常,导致推流失败,很容易引起投诉,因此通常需要人工进行处理。人工处理的缺点很明显,成本高,问题处理不及时,处理问题时间长等。

为了解决上述问题,利用rtmp302特性,制定了一个改进方案。服务器端如果检测到推流有慢速,通过amf控制消息的方式,将新的推流接地址,发送给推流端,推流端结合本地网络情况,来进行综合决策是否要进行断流重推。

本方案的亮点是服务端只提供建议,不做决策,客户端可以结合终端和后台提供的信息,进行综合评估,对比单方面决策,可以大幅提升决策的准确性。

2、RTMP 302重定向具体方案

为了解决推流过程中,网络异常问题,采用了RTMP 302 重定向的方案,具体实现逻辑如下图所示:

步骤一,推流过程中,rtmp server端支持持续弱网检测,支持域名+发布点维度的配置化的弱网检测。

步骤二,检测到该情况发生后,需要向调度系统,根据客户端IP,请求一个合法、高质量的推流接入节点IP,拼接完整的重定向推流地址,通过amf data给到推流客户端。

步骤三,推流客户端识别对应的amf data,

推流终端拿到redirect中的重定向地址后,综合本地信息,判断是否需要断流重推,如果需要,进行使用服务器端提供的地址重新推流,解决慢速问题。

详情请查看具体的RFC文档:

1.https://tools.ietf.org/html/rfc7016#section-3.5.1.6

2、http://www.adobe.com/cn/products/adobe-media-server-professional/features._sl_id-contentfilter_sl_featuredisplaytypes_sl_all.html

AMS说是内置支持:

Server redirection

Automatically provide video players with new or alternate locations if content is missing using built-in redirection in RTMP similar to HTTP 302 redirection.

上述解决方案,在推流过程中,通过RTMP 302的方式获取到服务器慢速信息,根据客户端以及服务器端慢速信息,来进行断流重推,快速恢复直播,提高推流成功率。

对上述方案进行扩展,在开始推流时,利用302进行服务端的负载均衡。服务器端在刚收到客户端数据时,给客户端发送RTMP 302信息,来进行高负载302调度,提高推流的成功率。也可以通过302快速提出异常的推流接入点。

3、结论

综上所述:

1、在推流过程中,给客户端发送RTMP 302控制消息,客户端使用服务器提供的重定向地址,进行断流重推,可以快速恢复推流异常,提升上行推流质量;

2、在推流开始时,服务器端可以综合后台机器负载以及带宽资源情况,进行推流的负载均衡调度,给客户端提供优质的接入点,提升推流质量,改善平台接入的可用性。

3、兼容性好,能兼容新老客户端,是否检测RTMP 302 amf信息,完全由客户端控制。客户端可以根据自身情况,进行选择性使用。

4、决策成功率更高,相比传统的客户端断流重推策略,本方案可以综合客户端和服务端的信息,来制定更优的断流重试策略。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档