<<
>>
网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在在线音视频平台。现在,网易视频云与大家分享一下直播端网络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质量。
(此文不代表本网站观点,仅代表作者言论,由此文引发的各种争议,本网站声明免责,也不承担连带责任。)