Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >rtmp推流异常快速恢复方案

rtmp推流异常快速恢复方案

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

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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
直播弱网优化方法
直播平台纷繁杂多,流量入口逐渐从传统PC端过渡至移动端。直播规 模爆发式增长,2016年更是被誉为“直播元年”。以游戏为代表的泛娱乐直播是这一时期直播生态的重要组成部分。2015-2017年,4G技术普及,手机直播由于不受设备、场景等限制开始迅速普及,推动全民直播的出现;同时,由于直播功能的创新、直播平台以及资本的纷纷入局、政策支持,直播行业一度出现“千播大战”局面。期间,政府出台《电子竞技赛事管理暂行规定》等游戏行业相关政策,进一步推动了游戏直播的发展。
视频云直播helper
2022/02/03
6K1
劳动节之一:SRS中RTC基于流的场景应用,RTC和RTMP流互相转换
大约在一年前,SRS开始支持了WebRTC,这一年一直在持续的更新和收集大家的反馈,终于目前达到了基本可以的里程碑了,是时候总结下使用方法,更新Wiki和DEMO,方便大家用起来了。 SRS的RTC有很多种应用场景,这篇是基于流的场景的应用,后续会推出更多的场景。流是服务器最基本也是最基础的逻辑,是其他场景的基础。基础不牢,地动山摇,大家走过路过不要错过。 RTC的Wiki请点文末阅读原文,我们在这篇文章中,会重点说明一些背景、应用场景和便于理解的设计背景。Wiki侧重的是总结和结果,这个文章侧重的是为什么
Winlin
2022/03/18
2.4K0
手撕Rtmp协议细节(8)——publish推流
对于推流端,经过releaseStream,createStream消息之后,得到了_result消息之后,接下来客户端就可以发起publish消息。推流端使用publish消息向rtmp服务器端发布一个命名的流,发布之后,任意客户端都可以以该名称请求视频、音频和数据。我们首先来看一下publish消息的组织结构:
视界音你而不同
2020/05/26
3.7K1
【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
首先按照 【Android RTMP】RTMP 直播推流 ( 阿里云服务器购买 | 远程服务器控制 | 搭建 RTMP 服务器 | 服务器配置 | 推流软件配置 | 直播软件配置 | 推流直播效果展示 ) 中的流程搭建服务器端 , 然后才能开始推流操作 ;
韩曙亮
2023/03/27
3.5K0
【Android RTMP】RTMP 直播推流阶段总结  ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
新知 | 直播卡顿问题及优化方案
新知系列课程第二季来啦!去年的系列课,我们为大家介绍了直播、RTC、IM、媒体处理等音视频通信技术,这一次,我们将继续为大家带来全真互联时代下新的行业趋势、新的技术方向以及新的应用场景分享。今天,我们邀请到了腾讯云音视频技术导师——侯文祯,他将结合工作中实际遇到的一些案例,为大家介绍直播卡顿问题的成因,以及它的优化解决方案。本周四晚7点(6月30日)我们将继续邀请技术大佬,以直播的形式为大家带来媒体处理方面的干货分享,各位可以点击文末「阅读原文」预约观看。 本期内容主要包括四个方面:直播链路监控、卡顿质量
腾讯云音视频
2022/06/29
3.6K0
新知 | 直播卡顿问题及优化方案
RTMP协议详解及Wiresahrk抓包分析
本文主要讲解 RTMP 协议,并通过 wireshark 对 RTMP 进行抓包并分析。
Gnep@97
2023/11/08
5.2K0
RTMP协议详解及Wiresahrk抓包分析
衡量直播平台的推流效果,主要看这5个指标
近年来,网络直播呈现爆发式增长,上百家平台,超百亿规模,3亿多用户,上市公司和明星企业崛起,俨然成为产业。光环加持的背后,腾讯云直播TLive平台,抓住机遇、持续打磨、不断优化,最终做到了业界领先。现主播作为直播产品的源头,主播推流质量好坏直接影响腾讯云直播体验和口碑。我们致力于使用CDN节点就近资源&协议栈加速等措施,保障主播稳定出流。
腾讯云音视频
2018/10/10
9.8K0
衡量直播平台的推流效果,主要看这5个指标
技术解码丨斗鱼同款的SRT技术是如何对抗推流抖动的?
RT到底是一个什么样的推流协议呢? 针对链路丢包,SRT是如何解决的呢? 本周的技术解码,为您带来 SRT推流技术解析 随着互联网基础设施和硬件设备的不断发展,广大直播观众对于直播观看的清晰度,延时等方面的体验要求越来越高,直播也随之进入了低延时高码率的时代,直播传输技术面临着越来越高的要求和挑战。 腾讯视频云为此在全链路上针对流媒体传输不断深入优化,使得在各大重要赛事上具备了高可靠、低延迟、高画质和音质的需求,同时我们也跟客户,比如斗鱼,进行了更深度的合作。不光在服务端,在APP端也进行了SRT的合
腾讯即时通信IM
2021/04/07
2K0
RTMP 协议:为什么直播推流协议都爱用它?丨音视频基础
(本文基本逻辑:RTMP 协议的数据传输流程和协议设计思想 → 消息概念具体细节 → 块概念具体细节)
关键帧
2022/06/13
2.8K0
RTMP 协议:为什么直播推流协议都爱用它?丨音视频基础
SRS:流媒体服务器如何实现负载均衡
 点击上方“LiveVideoStack”关注我们 作者:Winlin、Azusachino、Benjamin 编辑:Alex ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 ---- 当我们的业务超过单台流媒体服务器的承受能力,就会遇到负载均衡问题,一般我们会在集群中提供这种能力,但实际上集群并非是唯一的实现方式。有时候负载均衡还会和服务发现等时髦词汇联系起来,而云服务的LoadBalancer无疑不可回避,因此,这个问题其实相当复杂,以至于大家会在多个场合询问这个问题,我打算系统地阐述
LiveVideoStack
2022/05/25
2K0
SRS:流媒体服务器如何实现负载均衡
跨国实时网络调度系统设计
大家好,我是冼牛,目前在即构科技主要负责实时音视频引擎的研发,专注于视频直播、视频社交和在线教育等领域。本次主要分享即构科技在出海构建全球网络的过程中遇到的问题和解决问题的方法和思路。
LiveVideoStack
2021/09/01
9220
玩转直播系列之RTMP协议和源码解析(2)
实时消息传输协议(Real-Time Messaging Protocol)是目前直播的主要协议,是Adobe公司为Flash播放器和服务器之间提供音视频数据传输服务而设计的应用层私有协议。RTMP协议是目前各大云厂商直线直播业务所公用的基本直播推拉流协议,随着国内直播行业的发展和5G时代的到来,对RTMP协议有基本的了解,也是我们程序员必须要掌握的基本技能。
2020labs小助手
2021/05/17
1.8K0
如何构建高并发高可用的剧场直播云端混流服务?
在LiveVideoStack线上交流分享中,爱奇艺技术研究员李晓威分享了基于爱奇艺Hydra平台的剧场直播云端混流方案,重点讲解如何提升WebRTC推流成功率并提升音视频质量,如何做到点播流在客户端
LiveVideoStack
2019/07/01
1.7K0
如何构建高并发高可用的剧场直播云端混流服务?
MLVBLiveRoom 方案 - 客户端部分
本文用于介绍移动直播 MLVBLiveRoom 方案的客户端部分,MLVBLiveRoom 方案包含了两部分内容:客户端 MLVBLiveRoom 组件 + 房间管理服务 RoomService。RoomService 说明见 https://cloud.tencent.com/developer/article/1488765
腾讯云-chaoli
2019/08/16
11.1K2
MLVBLiveRoom 方案 - 客户端部分
腾讯云快直播低延时播放质量的优化实践
直播已经潜移默化成为许多人日常生活密不可分的一部分。无论是紧张刺激的比赛直播,还是垂涎欲滴的美食直播,亦或者自卖自夸的购物直播,大家都不希望在观看时出现长时间的加载和卡顿,对一些需要观众及时反馈的直播场景,过高的延时也是用户不希望出现的。如何保证直播的快速、清晰、低延时成为各大厂商必须直面的难题。我们很荣幸地邀请到了腾讯云音视频的费伟老师来到LiveVideoStackCon 2022北京站介绍他们的解决办法。 文/费伟 编辑/LiveVideoStack 大家下午好,很高兴能参加LiveVideoStac
LiveVideoStack
2023/04/12
3.7K0
腾讯云快直播低延时播放质量的优化实践
接上篇-nginx-http-flv-module更新说明(二)
最近这段时间主要在不同平台测试模块的稳定性,目前播放这一块没发现问题,由于条件限制,除了FreeBSD平台没测试过,Windows 7,Debian 7.x和macOS Sierra都测试过了,由于Nginx官方对Windows支持不太好,没用Windows平台最强大的IOCP接口(使用的select),所以导致Windows平台上运行效率不太高,表现在推流等待时间长,3s+,首屏时间很长,4s+,select本身原因限制客户端个数,默认是1024。推流等待时间和首屏时间最短的是macOS Sierra,本机上测试时基本上是秒推秒开。昨晚专门注意了一下,在macOS Sierra下编译时,SO_REUSEPORT和TCP_FASTOPEN两项都支持,前者让Nginx的每个子进程都可以listen,都有一个专门的accept队列,解决了惊群效应;后者则是在发起SYN时就已经携带实际数据,而不是握手完毕后再传输实际数据。秒推秒开可能跟这两个选项有关。但是macOS Sierra并不支持将某个进程绑定到某个CPU上,所以可能进程上下文切换会有开销,系统负载较大时可能效率不如Linux。由于macOS Sierra是公司的电脑,所以未做压力测试。我的笔记本装的是Debian 7.x,因为内核版本较低,所以macOS Sierra上支持的两个选项都不支持。测试时推流等待时间和首屏时间都介于Windows 7和macOS Sierra之间,在服务器上测试时(系统CentOS 6.4,支持SO_REUSEPORT但是不支持TCP_FASTOPEN)跟macOS Sierra上差不多,但是考虑到服务器的CPU性能强大得多,所以负载不高情况下,macOS Sierra的表现是最好的。由于macOS Sierra是从Mac OS X更新来的,而Mac OS X的底层最初是在FreeBSD基础上开发的,所以推测在FreeBSD上的表现应该也不错。
后端技术探索
2018/08/10
1.9K0
云端混流转码--直播连麦技术解决方案
春运来了,在各地车站码头的年味就是回家的味道。无论人潮多拥挤、路途多艰辛,为了回到温暖的目的地——家,对于在外漂泊的游子来说,路上辛苦点又算什么。小编为旅途的游子们准备了一份新年礼物——云端混流转码。 随着直播业务的蓬勃发展,终端受众也并不仅仅满足于围观,希望能够参与主播的音视频对话中来,如现在在各个直播秀场App下所看到的的连麦互动,包括主播之间的才艺游戏恶搞PK等,它能有效的增强直播的趣味性,让观众获得更大的参与满足感。另外非娱乐场景下与此类似的有在线教育的师生交流问答、金融开户的客服视频见证通话
腾讯云音视频
2019/01/30
3.2K0
云端混流转码--直播连麦技术解决方案
RTMP的工作原理
 点击上方“LiveVideoStack”关注我们 翻译:Alex 技术审校:章琦 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 RTMP Easy-Tech #028# 什么是RTMP? RTMP(Real-Time Messaging Protocol,实时消息传输协议)是一种用于低延迟、实时音视频和数据传输的双向互联网通信协议,由Macromedia(后被Adobe收购)开发。RTMP的工作原理
LiveVideoStack
2022/05/30
1.4K0
RTMP的工作原理
胡仁成:腾讯视频云海外直播系统架构设计与最佳实践
6月29日,音视频及融合通信技术技术沙龙圆满落幕。本期沙龙特邀请腾讯云技术专家分享关于最新的低延迟技术、全新的商业直播方案等话题,针对腾讯云音视频及融合通信产品的技术全面剖析,为大家带来纯干货的技术分享。下面是胡仁成老师关于海外视频云直播系统架构中的实践案例的分享。
腾讯云开发者社区技术沙龙
2019/07/03
4.9K0
胡仁成:腾讯视频云海外直播系统架构设计与最佳实践
实时消息传输协议 RTMP(Real Time Messaging Protocol)
http://blog.csdn.net/defonds/article/details/17403225
bear_fish
2018/09/20
2.8K0
实时消息传输协议 RTMP(Real Time Messaging Protocol)
推荐阅读
相关推荐
直播弱网优化方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档