RT到底是一个什么样的推流协议呢?
针对链路丢包,SRT是如何解决的呢?
本周的技术解码,为您带来
SRT推流技术解析
随着互联网基础设施和硬件设备的不断发展,广大直播观众对于直播观看的清晰度,延时等方面的体验要求越来越高,直播也随之进入了低延时高码率的时代,直播传输技术面临着越来越高的要求和挑战。
腾讯视频云为此在全链路上针对流媒体传输不断深入优化,使得在各大重要赛事上具备了高可靠、低延迟、高画质和音质的需求,同时我们也跟客户,比如斗鱼,进行了更深度的合作。不光在服务端,在APP端也进行了SRT的合作,和赛事一样从源头上保证稳定。
2021年3月23日,斗鱼发布2020年第四季度财务报表“在技术和研发方面,第四季度斗鱼与腾讯达成合作,引入 RTMP over SRT 技术对容易产生网络抖动的无线网络环境进行了优化。该技术极大缓解了因链路丢包造成的推流丢帧问题,即使网络在40%丢包的情况下,依然能流畅进行直播。”那么SRT 具体是一个什么样的推流协议呢,我们可以通过以下的测试数据详细了解下。
通常在直播过程中因网络丢包,会造成各种丢帧,会造成各端卡顿甚至花屏,给观众造成很不好的观看体验,针对链路丢包,SRT是如何解决的呢?
众所周知,TCP一个窗口内的数据包通常会一次性无间隔的发送,容易造成流量突发。Pacing机制通过平滑发送间隔,来防止该问题。
SRT是根据带宽评估来调整发送间隔的。可以从输入的速率采样,或者由用户设置最大带宽(maxBW),并留出一部分重传带宽(overheadBW),两者之和作为最大的传输速率。
基于以上特性,腾讯视频云将SRT作为传输层之上的协议,可以将任何基于TCP的应用层协议改造为基于SRT的应用层协议,针对弱网主播进行源头的优化。
相较于存在网络要求高、建联时间长、累计延时高等诸多问题的传统RTMP协议推流方案,在本次采用的腾讯云 SRT技术,允许信号源和目标之间直接建立连接,使得推流延时从700ms降低到了200ms以下。
同时,SRT采用的ACK NACK解决方案,极大缓解了因链路丢包造成的推流丢帧问题,整体推流丢帧率降低了75%,用户观看直播时的卡顿次数也得到了显著降低。每隔10ms,SRT接收方会发送一个"正常"ACK包,将当前接收buffer中连续的最大包序号告诉发送方,发送方收到"正常'ACK包后,会确认数据,将发送窗口前移,同时发送ACKACK,接收方依据T(ackack) - T(ack)来计算链路rtt。对于高码率的链路,每10ms确认一次可能会不及时,为此,SRT每收到64个包,便会额外回复一个LITEACK,用来快速确认数据,尽可能快的让发送窗口移动。
每次收包时,SRT会计算当前的"乱序度"。举个例子,如下图所示:
上图当前时刻的"乱序度"为2,当发现丢包需要重传时,SRT会延迟2个包发送NACK,用来减少一部分因为UDP乱序导致的无效重传。
总之而言,在新技术的加持下,户外直播的场景将大大增加,不再局限于无线网络优质的地点。即便是在网络环境较差的场地,主播们也可以为水友们带来流畅的直播内容,极大提升了移动端主播的推流质量和直播间用户的观看体验。
在首次尝试使用SRT后,RTMP推流和SRT推流对比如下:
通过上图的对比可以明显的看到在应用 SRT 推流后卡顿率有所改善
在推流丢包率对比这块,通过终端的信息对比,下行方面在应用 SRT 推流后由于上行质量的优化,下行流畅度也得到相应的提升。以下是斗鱼App实际对比效果。
Android 平台SRT 推流性能测试数据(测试平台—MI9)
iOS 平台SRT 推流性能测试数据(测试平台—iPhone XR):
SRT推流和QUIC推流对比如下:
在传输质量指标上,我们也与 QUIC 做了对比,SRT 通过更精准和快速的重传控制,以及针对直播流媒体场景的 pacing 机制,使得在相同丢包率下,应用层丢包较少。
可以看下和 QUIC 上行对比,在推流端相同链路同一直播文件的情况下,每5分钟提高了5%的丢包率,通过以下示图可以看出 SRT 的推流帧率更平稳。
目前腾讯云官网已经发布了标准化的接入文档提供用户快速体验测试,具体接入方法很简单,只需要将之前的 RTMP 推流地址修改成 SRT 的推流地址通过 OBS 或者 ffmpeg 直接推到腾讯云服务器。
推流端通过 SRT 协议直接传输包含音视频数据的 ts 流,下行复用了现有直播系统。TS over SRT 已作为 Haivision 硬件及 OBS 的推流格式标准。
此种模式下,SRT 服务器会解析负载(TS),并转封装为 RTMP 协议,转推到后端 RTMP 服务器。详细接入流程可查询腾讯云直播官网。
SRT 在快速连接方面有明显优势,两次握手成功即可建连;SRT 的丢包重传策略出色,ACK、ACKACK、NACK 等提供了丰富的控制消息,还有RTT、Receive 比特率等。作为视频流工作流的一部分应用于贡献和分发端点,以始终提供最佳质量和最低延时的视频。随着音频/视频数据包从源流向目标设备,SRT 会检测并适应两个端点之间的实时网络状况。SRT 有助于补偿由于噪声网络(例如 Internet)的拥塞而引起的抖动和带宽波动。它的错误恢复机制最大程度地减少了 Internet 连接中典型的数据包丢失。SRT 支持 AES 加密,以实现端到端的安全性,从而确保您的视频流不会被撬开。
腾讯云通信
一直致力于
让每个企业
都享受智慧服务带来的改变
END
未来可期
长按扫码关注腾讯云通信官方微信公众号
以获取更多更专业的云通信知识