技术解码 | 腾讯视频云直播推流再升级,支持多路径传输

2021-12-24 16:11:17 浏览数 (1)

- 当前网络传输的问题 -

随着互联网视频应用的快速发展,越来越多的平台和行业加入到直播行业,但是对于广大的主播群体来说,也面临着一些质量问题。比如:

  • 传输卡顿 户外、公共场馆等场景,网络不稳定,造成传输丢包、延迟过大或抖动,从而引起推流和播放卡顿;
  • 移动环境下的丢包问题 3G/4G/5G/WiFi环境下,由于物理层和链路层传输误码的问题,导致传输层丢包,但这种丢包并不意味着拥塞;
  • 单一网络带宽不足 单一3G/4G/5G/WiFi网络链路带宽不足或抖动;
  • 移动环境下多网切换问题 主播端在运动场景下,容易发生移动网路或WiFi的切换。

在这些场景,由于单一网络链路通道不稳定或带宽不足,容易造成上行推流卡顿,对播放端的体验造成不好的影响。

- 多链路传输方案 -

腾讯云音视频云直播推出的多链路传输方案,通过多个链路层同时传输,提高整体端到端的传输可靠性和质量,进一步提升上行推流和最终的播放端体验。

传统的硬件IP层方案,更多的是采取支持多网聚合的路由器和网关服务器的方案,通过发送端数据切分、多链路子流传输和接收端数据聚合,实现多链路传输方案。

该方案不依赖于传输层的协议,目前的推流协议都兼容,但需要硬件如路由器的支持。

腾讯云直播的软件应用层方案,则是通过基于腾讯云SRT的可靠性、抗抖动和低延迟能力,实现基于SRT bonding的传输层多路径传输的算法,并针对直播流媒体场景进行了优化。同时也去掉了硬件的依赖,仅需发送端有多网卡即可。腾讯云通过自适应的多路径推流,提升主播上行传输质量。

具体的,发送端首先将所有建立好的connection加入到一个group,然后针对每条链路,会根据实时的传输QoS进行状态的判断和决策,结合接收端的反馈信息计算实时的rtt、loss rate等判断链路的质量和拥塞状态,并选择最佳路由进行数据的发送。接收端对一个group内所有connection收到的数据进行包级别的去重和排序,最终返回完整有序的包序列给上层应用。

通过实时测量QoS,调整发送路径

在实际的一些场景上,针对一些重要的活动,若上行多网带宽充足,发送端会根据QoS选择最佳路由,进行数据发送,当前链路出现异常或QoS波动,发送端会动态的调整路由,将当前数据通道切换至质量最好的路由,并进行下一阶段的数据发送。或根据QoS情况进行冗余发送,服务端通过聚合和去重,来提高整体传输的稳定性和低延迟。由于网络质量是随时间流逝会变化的,因此数据通道会根据实时的QoS不断切换。另一方面,对于单一网络链路带宽不足或抖动的场景,发送端也会根据多个通道的QoS情况,同时进行多路径发送。同时,做到包级别调整发送路径,如高优先级包、重传包等采用rtt更短的路由,确保整体传输质量的最优化。

多路径模式下的数据传输示意图

- 多路径传输的效果 -

使用多路径传输后,传输稳定性得到了明显改善。

WiFi断掉时,4G通道数据快速补上

最终聚合后的帧率曲线,在网络切换前后平稳无抖动

4G和WiFi通道多路径发送

接收端码率曲线

演示效果如下:

- SDK端架构及使用方式 -

终端上,腾讯视频云提供了Tmio SDK,内部实现了多网传输的能力。

因当前广泛使用的推流协议是RTMP,产品中往往已经集成了RTMP的支持。用户可通过RTMP over SRT的方式接入,利用SRT的特性提升弱网表现。Tmio中RTMP over SRT有两种接入方式:

  • 修改传输层,将tcp替换成srt即可;
  • 通过TmioProxy代理方式,RTMP推流到本地代理,本地代理用SRT协议转发数据到服务端。对已有RTMP代码实现零侵入。TmioProxy只做双向数据透传,不做数据解析。

Tmio SDK 使用指引

  • 直接集成替换传输模块 需要修改将传输模块替换为tmio SDK传输,详情可参考接入文档和demo源码。
  • proxy代理方式: 代理模式proxy 可作为单独进程或者集成到app中使用,对原app代码只需要修改推流地址为proxy本地监听地址即可, 例如: 原rtmp推流地址为: rtmp://{$push_domain}:3570/live/sdk_test?txSecret=38fdd5b9ee9958c3f6e6e6a6dd39ba2b&txTime=6161BC80 使用代理模式推流地址为: rtmp://0.0.0.0:1935/live/sdk_test?txSecret=38fdd5b9ee9958c3f6e6e6a6dd39ba2b&txTime=6161BC80&txHost={$push_domain}

详细接入文档说明及demo源码参考:

https://github.com/tencentyun/tmio

腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备 RT-ONE™ 全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。

0 人点赞