返回 登录
0

网易视频云:直播端网络QoS算法总结和技术展望

阅读2376

  现在,网易视频云与大家分享一下直播端网络QoS算法总结和技术展望。

  一、概述

  由于从直播端到RTMP服务器的网络情况复杂,尤其是在3G和带宽较差的Wifi环境下,网络丢包、抖动和延迟经常发生,导致直播推流不畅。RTMP基于TCP进行传输,TCP自身实现了网络拥塞下的处理,内部的机制较为复杂,而且对开发者不可见,开发者无法根据TCP协议的信息判断当时的网络情况,导致发送码率大于实际网络带宽,造成比较严重的网络拥塞。

  由于TCP本身是面向连接、可靠地传输层协议,关于RTMP协议的网络QoS讨论较少,所以本文的QoS策略完全是通过不断实验和摸索设计开发的,如有问题欢迎指正。

  二、视频云直播端QoS策略

  由于上述原因,我们在研究解决直播端的网络拥塞问题时,根据实验结果进行分析,以发送一帧视频数据的时间为依据,判断当前网络拥塞情况。

  2.1 策略依据的原理

  如图1所示,TCP协议在发送数据时,首先将应用层(采用librtmp标准库)下发的数据缓存在sendbuffer中,然后应用层函数的调用返回,函数的调用是瞬间完成的。TCP协议何时从sendbuffer中取出数据进行发送是由TCP协议本身和当时的网络情况所决定的。如果网络中出现丢包和抖动,导致接收端接收数据超时,会激发发送端数据重传,重传机制本身挤占网络带宽,导致sendbuffer中的数据进一步发送失败,致使sendbuffer中的数据不断增多,达到上溢的警戒线,此时应用层函数下发数据到sendbuffer就不会瞬间完成,而是会等待sendbuffer中的数据低于警戒线,再将数据下发。

 图片描述
 
图1 TCP发送数据示意图

  因此,可以根据应用层函数写数据到sendbuffer的时间来判断网络的拥塞情况。

  2.2 QoS算法

  2.2.1实验过程和结果

  测试中使用NEWT进行网络模拟,观察直播端码率为0的频率。实验结果显示,在弱网环境下,QoS算法对缓解直播端卡顿有比较明显的作用。

  2.2.2实现过程的依据

  QoS 1.1算法的实现是基于历史统计数据,进行未来码率设置的判决,基本原则是码率的快降慢升,防止过快上升而导致视频卡顿。

  三、视频云直播端QoS策略后期展望

  视频云直播端在网络变差的时候会进行一定的处理,以尽可能保证视频和音频的流畅。

  然而,由于QoS策略的判决依据仅仅来自于直播端本身,缺少来自网络的反馈,导致网络拥塞的判断出现滞后,影响播放端的体验。后期需要开发视频云的源站服务器,进行客户端到源站服务器之间的QoS保障,通过FEC、错误隐藏等方式提高QoS质量。

评论