在今年10-11月份刚过去的英雄联盟S9总决赛中,SRT作为跨洋远距离传输方案,在源流制作环节中承担主线路的角色,稳定支持了总决赛的每一场比赛。目前腾讯视频云已将srt集成到现有直播体系中,包括推流和回源等。
SRT(Secure Reliable Transport)是由Havision联合Wowza制定的一个开源、免版权费的基于UDP的传输协议,目的是安全和可靠的解决TCP在长距离链路传输中延迟高、抗抖动性差的问题,并针对直播流媒体场景做了优化。目前,腾讯已加入SRT联盟,并与SRT开源组织一起推动SRT协议在OBS等开源工具上的整合。
兼容现有直播产品,腾讯视频云推动SRT应用
腾讯视频云将SRT应用在直播场景中,并完美的兼容现有的直播,主要通过两种方式实现。
一种是TS On SRT,通过SRT直接传输包含音视频数据的TS流,下行复用现有直播系统,此方法已作为Haivision硬件及OBS的推流格式标准,并全程应用在今年的英雄联盟S9等重大赛事中。
另一种是rtmp/http-flv/hls/https/… on srt。腾讯视频云将SRT作为传输层之上的协议,可以将任何基于TCP的应用层协议改造为基于SRT的应用层协议。目前在直播体系中的推流和回源环节均已支持此方式,并与现有直播系统直接兼容。
SRT推流在远程制作系统中的简易架构图
优化直播基础传输机制 大幅提高可扩展性
针对SRT在直播场景的应用,腾讯视频云团队在开源协议、传输机制等方面都做出了努力探索。
首先,支持多路复用,助力优化开源协议。此前,SRT主要适合点到点传输,需要用端口区分不同的业务或会话。腾讯视频云积极推动官方优化协议,在支持 streamid/vhost参数及其它方面的协议优化后可以很好的实现多路复用的功能。
在低延迟抗抖动方面,腾讯视频云区分场景的对容错特性进行了优化。SRT Live模式默认是允许丢包的,但是一些应用场景或同一场景不同部分的数据具有不同的重要性,腾讯视频云对此做了适配直播场景的优化,根据音视频编码的特点优化了弱网下的传输质量和播放体验。
在传输机制方面,由于SRT在直播场景中默认传输的是TS流,所以传输数据为非TS封装格式时,为了提高传输效率腾讯视频云针对原版进行了优化,根据网络情况动态的调整分块和传输机制。
为了和现有云直播产品体系完美兼容,腾讯视频云实现SRT流直接接入直播CDN系统,如上行推流采用SRT,下行仍可使用常规的rtmp/http-flv/hls,或者全链路使用SRT。
除此之外,腾讯视频云针对开源项目做了性能上的提升,并充分利用了CPU的多核特性。在可扩展性上首创式的将SRT作为介于传输层和应用层之间的协议,和现有直播协议体系完美的结合在一起。
丢包少、延迟低 远距离传输场景性能达到商用
表1:传输帧率 60fps,码率分别为1Mbps、5Mbps和10Mbps的视频,在不同RTT 、网络层丢包场景下,应用层丢包率及卡顿率对比如下表:
卡顿率的定义为:1min内音视频dts相对绝对时间的差值抖动大于1s的次数占总采样数的比例,采样频率为1个/s。卡顿率越高,观看时的流畅度体验越差。
卡顿率>50%;卡顿率>10%;卡顿率<0.1%
表2:相同测试条件下,应用层重传率的对比:
从对比数据看到,在相同网络层丢包率和RTT下,SRT的应用层重传更高,但应用层丢包较少,最终卡顿率较小。网络层丢包30%以内时,经SRT重传机制处理后丢包率基本为0。SRT相比QUIC,传输时是允许丢包的,腾讯视频云根据音视频的编码特点,支持有选择的丢包,在降低帧率但不影响画面质量的情况下,尽可能的保障了播放的流畅性。
同时,以美国洛杉矶到上海公网传输10Mbps码率的视频场景为例,不同协议的传输延迟对比如下,SRT总体平均值在1/2~1个rtt。
当前,腾讯视频云借助现有CDN直播系统,具备全球分发能力,覆盖绝大部分国家和地区,从网络部署和协议优化等多维度层面上助力SRT达到商用水平。
通过不断优化,腾讯视频云快速将SRT集成到直播CDN系统,这也是业内首次将SRT集成在全链路直播流媒体系统中的各个环节,最终为英雄联盟S9、阅兵、双11等重大赛事和活动提供了强有力的技术保障,应对了众多低延迟、高清和稳定传输的直播需求。腾讯云会继续在音视频领域不断探索,结合用户业务场景不断创新,给您带来全新的高质量观看体验。